<?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>111695</bug_id>
          
          <creation_ts>2013-03-07 00:49:33 -0800</creation_ts>
          <short_desc>Implement Web Speech Synthesis for Chromium</short_desc>
          <delta_ts>2013-03-23 21:51:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106742</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fishd</cc>
    
    <cc>hans</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>syoichi</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>849833</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-07 00:49:33 -0800</bug_when>
    <thetext>The Chromium implementation will just expose an interface in WebKit to be implemented by the embedder. It will have just a bit of logic to create utterance ids for each utterance and then map utterance ids to back to utterance objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849834</commentid>
    <comment_count>1</comment_count>
      <attachid>191939</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-07 00:53:31 -0800</bug_when>
    <thetext>Created attachment 191939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850136</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-07 09:01:47 -0800</bug_when>
    <thetext>Are you looking for review on this one or just whether the approach looks ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850164</commentid>
    <comment_count>3</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-07 09:29:22 -0800</bug_when>
    <thetext>FYI, the Chromium side of the implementation is here: https://codereview.chromium.org/12589005/

I still need to add preprocessor guards so this feature isn&apos;t enabled by default, so I know this isn&apos;t technically ready for a formal review - but other than that, please send detailed comments!

Please especially focus on issues like class names, scope, and ownership during your first pass - there are a lot of layers of abstraction here, and I&apos;m sure it could be a lot more clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850588</commentid>
    <comment_count>4</comment_count>
      <attachid>191939</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-07 16:11:43 -0800</bug_when>
    <thetext>Comment on attachment 191939
Patch

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

&gt; Source/WebCore/platform/PlatformSpeechSynthesis.h:43
&gt; -    static PassRefPtr&lt;PlatformSpeechSynthesis&gt; create(SpeechSynthesis*);
&gt; +    static PassRefPtr&lt;PlatformSpeechSynthesis&gt; create(SpeechSynthesis*, ScriptExecutionContext*);

Code in the platform directory can&apos;t depend on parts of WebCore outside the platform directory.

&gt; Source/WebCore/platform/PlatformSpeechSynthesis.h:52
&gt; -    SpeechSynthesis* m_speechSynthsis;
&gt; +    SpeechSynthesis* m_speechSynthesis;
&gt; +    ScriptExecutionContext* m_context;

These raw pointers look worrying.  What prevents us from using them after the objects they point to are freed?

&gt; Source/WebCore/platform/chromium/SpeechSynthesisController.h:54
&gt; +class SpeechSynthesisController : public Supplement&lt;Page&gt; {

This is very unlikely to be the correct pattern to use for this functionality.  Instead, the speech synthesizer should be part of the Platform API (i.e., in Source/Platform/chromium/public).  There isn&apos;t any reason to have a Page dependency here for Chromium.

&gt; Source/WebCore/platform/mac/PlatformSpeechSynthesisMac.mm:42
&gt; -PlatformSpeechSynthesis::PlatformSpeechSynthesis(SpeechSynthesis* synthesis)
&gt; +PlatformSpeechSynthesis::PlatformSpeechSynthesis(SpeechSynthesis* synthesis, ScriptExecutionContext*)

Notice that the apple-mac port doesn&apos;t have a Page dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850895</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-07 23:05:03 -0800</bug_when>
    <thetext>Thanks for the feedback! I&apos;m still unclear, though.

(In reply to comment #4)
&gt; (From update of attachment 191939 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191939&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/SpeechSynthesisController.h:54
&gt; &gt; +class SpeechSynthesisController : public Supplement&lt;Page&gt; {
&gt; 
&gt; This is very unlikely to be the correct pattern to use for this functionality.  Instead, the speech synthesizer should be part of the Platform API (i.e., in Source/Platform/chromium/public).  There isn&apos;t any reason to have a Page dependency here for Chromium.
...
&gt; Notice that the apple-mac port doesn&apos;t have a Page dependency.

The difference is that the Mac port of speech synthesis implements all of the functionality within WebCore. For Chromium, all of the functionality is implemented by the embedder via a WebKit client API.

I used features like Speech Recognition, Geolocation, Notifications, and Device Orientation as a guide. In all of those cases, WebViewImpl uses the &quot;provide&quot; pattern to attach a client proxy to the page as a supplement.

How else can WebKit provide an implementation of an interface defined in WebCore, other than using a Page supplement? I couldn&apos;t find any examples that work another way.

Here&apos;s how I think I should fix the problem of Platform not depending on the rest of WebCore:
* Make PlatformSpeechSynthesizer into an abstract interface.
* Instead of WebCore/Modules/speech/SpeechSynthesis.cpp calling PlatformSpeechSynthesizer::Create, it should call Supplement&lt;Page&gt;::from() to get the platform speech synthesizer. Then WebKit/chromium/src/SpeechSynthesisClientProxy can implement PlatformSpeechSynthesizer directly, eliminating all of the code currently in WebCore/Platform/chromium.

This assumes that we could register the Mac implementation of PlatformSpeechSynthesizer as a page supplement as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851377</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 11:46:41 -0800</bug_when>
    <thetext>&gt; The difference is that the Mac port of speech synthesis implements all of the functionality within WebCore.

Actually, it calls out to a library provided by the operating system.

&gt; For Chromium, all of the functionality is implemented by the embedder via a WebKit client API.

Yes, that&apos;s the problem.  Instead, you should call out to the embedder via Chromium&apos;s Platform API (i.e., through an interface defined in https://trac.webkit.org/browser/trunk/Source/Platform/chromium/public/).

&gt; I used features like Speech Recognition, Geolocation, Notifications, and Device Orientation as a guide. In all of those cases, WebViewImpl uses the &quot;provide&quot; pattern to attach a client proxy to the page as a supplement.

Those are not the correct examples to follow.  Some of them should be converted to use the Platform API and others should remain using the Client API.  The difference is that we ask the Client for advice or policy, but we ask the Platform to do work on our behalf.  In the case of synthesizing speech, we&apos;re clearly asking the embedder to do work for us.

&gt; How else can WebKit provide an implementation of an interface defined in WebCore, other than using a Page supplement? I couldn&apos;t find any examples that work another way.

By using the Platform API.  Take a look at all the callers of WebKit::Platform::current().

&gt; Here&apos;s how I think I should fix the problem of Platform not depending on the rest of WebCore:
&gt; * Make PlatformSpeechSynthesizer into an abstract interface.
&gt; * Instead of WebCore/Modules/speech/SpeechSynthesis.cpp calling PlatformSpeechSynthesizer::Create, it should call Supplement&lt;Page&gt;::from() to get the platform speech synthesizer. Then WebKit/chromium/src/SpeechSynthesisClientProxy can implement PlatformSpeechSynthesizer directly, eliminating all of the code currently in WebCore/Platform/chromium.

That&apos;s not the right approach.  The right approach is to move the API from the Client API to the Platform API.

&gt; This assumes that we could register the Mac implementation of PlatformSpeechSynthesizer as a page supplement as well.

That&apos;s not the right design for apple-mac either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854451</commentid>
    <comment_count>7</comment_count>
      <attachid>192957</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-13 12:03:57 -0700</bug_when>
    <thetext>Created attachment 192957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854452</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-13 12:04:48 -0700</bug_when>
    <thetext>OK, I think this should be a lot closer to what you had in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854453</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 12:06:22 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854464</commentid>
    <comment_count>10</comment_count>
      <attachid>192957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 12:14:09 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17116191</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854468</commentid>
    <comment_count>11</comment_count>
      <attachid>192957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 12:17:44 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

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

&gt; Source/Platform/chromium/public/Platform.h:121
&gt; +    // May return null.
&gt; +    virtual WebSpeechSynthesis* createSpeechSynthesis() { return 0; }

WebSpeechSynthesis -&gt; WebSpeechSynthesizer ?

&gt; Source/Platform/chromium/public/WebSpeechSynthesisDelegate.h:29
&gt; +#include &quot;../../../Platform/chromium/public/WebVector.h&quot;

This can just be #include &quot;WebVector.h&quot;

&gt; Source/Platform/chromium/public/WebSpeechSynthesisDelegate.h:45
&gt; +    virtual void didStartSpeaking(int utteranceId) = 0;
&gt; +    virtual void didPauseSpeaking(int utteranceId) = 0;
&gt; +    virtual void didResumeSpeaking(int utteranceId) = 0;
&gt; +    virtual void didFinishSpeaking(int utteranceId) = 0;
&gt; +    virtual void speakingErrorOccurred(int utteranceId) = 0;
&gt; +    virtual void wordBoundaryEventOccurred(int utteranceId, int charIndex) = 0;
&gt; +    virtual void sentenceBoundaryEventOccurred(int utteranceId, int charIndex) = 0;

Why don&apos;t these operate in terms of a WebSpeechSynthesisUtterance*?  I don&apos;t understand why there&apos;s an ID involved.

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:62
&gt; +    const WebCore::PlatformSpeechSynthesisUtterance* m_private;
&gt; +    int m_id;

What role does m_id play?

Also, what is the relationship between the lifetime of this object and m_private.

&gt; Source/WebCore/platform/PlatformSpeechSynthesis.h:52
&gt; +    ScriptExecutionContext* m_context;

Code in Source/WebCore/platform cannot depend on concepts like ScriptExecutionContext that exist outside the platform directory in WebCore.

I can&apos;t find any uses of m_context.  Maybe this is left over from the previous iteration?

&gt; Source/WebCore/platform/PlatformSpeechSynthesisVoice.h:46
&gt; -    
&gt; +

This change seems spurious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854470</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 12:18:28 -0700</bug_when>
    <thetext>Does WebSpeechSynthesis carry state on the Chromium side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854475</commentid>
    <comment_count>13</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-13 12:23:58 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Does WebSpeechSynthesis carry state on the Chromium side?

The renderer-side implementation in Chromium is stateless.

On the browser side, it has to keep track of the utterance id and the RenderProcessHost for the duration of the utterance, that&apos;s it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854525</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 13:06:35 -0700</bug_when>
    <thetext>&gt; &gt; Does WebSpeechSynthesis carry state on the Chromium side?
&gt; 
&gt; The renderer-side implementation in Chromium is stateless.

In that case, we probably should just return a static object instead of allocating a new WebSpeechSynthesis each time.

&gt; On the browser side, it has to keep track of the utterance id and the RenderProcessHost for the duration of the utterance, that&apos;s it.

Generally we try to keep these sorts of IDs out of the WebKit API if they&apos;re only needed because of multiprocess concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854553</commentid>
    <comment_count>15</comment_count>
      <attachid>192957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 13:19:44 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17140109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854574</commentid>
    <comment_count>16</comment_count>
      <attachid>192957</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-13 13:32:25 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17217035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854582</commentid>
    <comment_count>17</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-13 13:40:45 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; On the browser side, it has to keep track of the utterance id and the RenderProcessHost for the duration of the utterance, that&apos;s it.
&gt; 
&gt; Generally we try to keep these sorts of IDs out of the WebKit API if they&apos;re only needed because of multiprocess concerns.

OK, I can make the delegate functions take a WebSpeechSynthesisUtterance directly. I think I&apos;ll have to make PlatformSpeechSynthesisUtterance ref-counted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854598</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 13:54:11 -0700</bug_when>
    <thetext>We need to make sure that doesn&apos;t cause a problem with

    PlatformSpeechSynthesisUtteranceClient* m_client;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854602</commentid>
    <comment_count>19</comment_count>
      <attachid>192957</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-13 13:56:56 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17189390</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854699</commentid>
    <comment_count>20</comment_count>
      <attachid>192957</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-13 15:11:32 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17149520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854963</commentid>
    <comment_count>21</comment_count>
      <attachid>192957</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 22:20:47 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17193037

New failing tests:
fast/js/global-constructors.html
http/tests/security/isolatedWorld/all-window-prototypes.html
http/tests/security/isolatedWorld/all-window-properties.html
inspector/debugger/function-details.html
inspector/console/console-dir-global.html
inspector/debugger/debugger-completions-on-call-frame.html
fast/dom/everything-to-string.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854980</commentid>
    <comment_count>22</comment_count>
      <attachid>192957</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 23:13:15 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

Attachment 192957 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17060755

New failing tests:
html5lib/generated/run-tests16-data.html
fast/js/global-constructors.html
http/tests/security/isolatedWorld/all-window-prototypes.html
http/tests/security/isolatedWorld/all-window-properties.html
inspector/debugger/function-details.html
inspector/console/console-dir-global.html
inspector/debugger/debugger-completions-on-call-frame.html
fast/dom/everything-to-string.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855015</commentid>
    <comment_count>23</comment_count>
      <attachid>192957</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2013-03-14 00:14:48 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

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

&gt;&gt; Source/Platform/chromium/public/Platform.h:121
&gt;&gt; +    virtual WebSpeechSynthesis* createSpeechSynthesis() { return 0; }
&gt; 
&gt; WebSpeechSynthesis -&gt; WebSpeechSynthesizer ?

+1

&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:40
&gt; +    virtual void setDelegate(WebSpeechSynthesisDelegate*) = 0;

nit: we generally use the term &quot;Client&quot; instead of &quot;Delegate&quot; at the WebKit API level.  We also normally set clients at creation time, rather than make them settable later.  Do you need to be able to change the client at runtime?

&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:41
&gt; +    virtual void initializeVoiceList() = 0;

are their side-effects to this method?  if yes, then please add a comment, documenting those.  otherwise, if this is just something you need to do before calling speak, then maybe it should happen inside createSpeechSynthesizer?

&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:42
&gt; +    virtual void speak(const WebSpeechSynthesisUtterance&amp;) = 0;

nit: you should document whether or not it is OK to issue multiple utterances at a time.

&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:45
&gt; +    virtual void cancel() = 0;

nit: is cancel really needed?  why not just destroy the WebSpeechSynthesizer instead?  (essentially, you have two ways of cancelling if you have an explicit cancel method.  what is the advantage of having two ways instead of one?)

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:36
&gt; +class WebSpeechSynthesisUtterance {

nit: Maybe this class could just be named &quot;WebSpeechUtterance&quot;?  I&apos;m not sure the &quot;Synthesis&quot; bit improves the name.

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:40
&gt; +    WebString lang() const;

nit: lang -&gt; language ... we try to avoid abbreviations.

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:42
&gt; +    float volume() const;

does it make sense to document the units here?  it seems like if you are implementing this API that you would have to study the caller to determine what these fields mean.  that is unfortunate.  comments would help.

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:48
&gt; +    WebSpeechSynthesisUtterance(const WebCore::PlatformSpeechSynthesisUtterance* u, int utteranceId)

same nit: not clear to me why &quot;Synthesis&quot; in PlatformSpeechSynthesisUtterance is better than PlatformSpeechUtterance

&gt; Source/Platform/chromium/public/WebSpeechSynthesisVoice.h:44
&gt; +

nit: define operator= as we normally do for such classes?

&gt; Source/Platform/chromium/public/WebSpeechSynthesisVoice.h:45
&gt; +    WEBKIT_EXPORT void assign(const WebString&amp; voiceURI, const WebString&amp; name, const WebString&amp; lang, bool localService, bool isDefault);

nit: some of these parameters could benefit from comments so the API makes sense on its own.

nit: why not provide a constructor with all of these parameters?  note: it is more common to just add a bunch of setters on a class like this rather than an assign method with a zillion parameters.  the call site won&apos;t be very readable with two bool parameters, etc.

&gt; Source/WebCore/platform/chromium/support/WebSpeechSynthesisDelegateImpl.cpp:46
&gt; +    Vector&lt;RefPtr&lt;WebCore::PlatformSpeechSynthesisVoice&gt; &gt; outVoices;

nit: since you are inside the WebCore namespace, there is no need for WebCore::</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856339</commentid>
    <comment_count>24</comment_count>
      <attachid>192957</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-15 15:22:28 -0700</bug_when>
    <thetext>Comment on attachment 192957
Patch

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

&gt;&gt;&gt; Source/Platform/chromium/public/Platform.h:121
&gt;&gt;&gt; +    virtual WebSpeechSynthesis* createSpeechSynthesis() { return 0; }
&gt;&gt; 
&gt;&gt; WebSpeechSynthesis -&gt; WebSpeechSynthesizer ?
&gt; 
&gt; +1

Done.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:40
&gt;&gt; +    virtual void setDelegate(WebSpeechSynthesisDelegate*) = 0;
&gt; 
&gt; nit: we generally use the term &quot;Client&quot; instead of &quot;Delegate&quot; at the WebKit API level.  We also normally set clients at creation time, rather than make them settable later.  Do you need to be able to change the client at runtime?

No problem, renamed Client and set at creation time now.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:41
&gt;&gt; +    virtual void initializeVoiceList() = 0;
&gt; 
&gt; are their side-effects to this method?  if yes, then please add a comment, documenting those.  otherwise, if this is just something you need to do before calling speak, then maybe it should happen inside createSpeechSynthesizer?

I renamed it updateVoiceList. The synthesizer can update the client with a voice list anytime it changes, but this allows the client to specifically request it.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:42
&gt;&gt; +    virtual void speak(const WebSpeechSynthesisUtterance&amp;) = 0;
&gt; 
&gt; nit: you should document whether or not it is OK to issue multiple utterances at a time.

What if the answer is &quot;the spec needs to be more clear&quot;?

Currently, WebCore/Modules/speech will not issue multiple utterances at once. If it did, the backend implementation would handle it just fine, it supports queuing automatically.

I&apos;d like to modify the spec to clarify what should happen if speech synthesizers from different DOM windows try to speak at once. I&apos;d like it to be possible for them to queue or interrupt each other, but I&apos;d be okay with more of an exclusive-lock type of approach, as long as the spec is crystal-clear.

I&apos;m a little hesitant to document this too clearly when the spec is unclear. For now I made a note that it&apos;s okay to call with more than one utterance - that sound reasonable?

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesis.h:45
&gt;&gt; +    virtual void cancel() = 0;
&gt; 
&gt; nit: is cancel really needed?  why not just destroy the WebSpeechSynthesizer instead?  (essentially, you have two ways of cancelling if you have an explicit cancel method.  what is the advantage of having two ways instead of one?)

Cancel is needed because I want to be able to still get the &quot;speech finished&quot; callback after I cancel the utterance. Also, it&apos;s really common to cancel and immediately speak something else instead, it doesn&apos;t make sense to recreate the whole synthesizer for that.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisDelegate.h:29
&gt;&gt; +#include &quot;../../../Platform/chromium/public/WebVector.h&quot;
&gt; 
&gt; This can just be #include &quot;WebVector.h&quot;

Done

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisDelegate.h:45
&gt;&gt; +    virtual void sentenceBoundaryEventOccurred(int utteranceId, int charIndex) = 0;
&gt; 
&gt; Why don&apos;t these operate in terms of a WebSpeechSynthesisUtterance*?  I don&apos;t understand why there&apos;s an ID involved.

Refactored these to take a WebSpeechSynthesisUtterance object.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:36
&gt;&gt; +class WebSpeechSynthesisUtterance {
&gt; 
&gt; nit: Maybe this class could just be named &quot;WebSpeechUtterance&quot;?  I&apos;m not sure the &quot;Synthesis&quot; bit improves the name.

We already have these classes associated with speech recognition:

WebSpeechGrammar.h
WebSpeechInputController.h
WebSpeechInputListener.h
WebSpeechInputResult.h
WebSpeechRecognitionHandle.h
WebSpeechRecognitionParams.h
WebSpeechRecognitionResult.h
WebSpeechRecognizer.h
WebSpeechRecognizerClient.h

Personally, I don&apos;t think a casual non-speech developer should be expected to know that &quot;grammar&quot; only belongs to speech recognition and &quot;utterance&quot; only belongs to speech synthesis.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:40
&gt;&gt; +    WebString lang() const;
&gt; 
&gt; nit: lang -&gt; language ... we try to avoid abbreviations.

Done

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:42
&gt;&gt; +    float volume() const;
&gt; 
&gt; does it make sense to document the units here?  it seems like if you are implementing this API that you would have to study the caller to determine what these fields mean.  that is unfortunate.  comments would help.

Done. I linked to the spec also, is that okay? The comments are enough for a quick check but not enough to understand the nuances.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:62
&gt;&gt; +    int m_id;
&gt; 
&gt; What role does m_id play?
&gt; 
&gt; Also, what is the relationship between the lifetime of this object and m_private.

No more m_id, and now PlatformSpeechSynthesisUtterance is ref-counted.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisVoice.h:44
&gt;&gt; +
&gt; 
&gt; nit: define operator= as we normally do for such classes?

Done

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisVoice.h:45
&gt;&gt; +    WEBKIT_EXPORT void assign(const WebString&amp; voiceURI, const WebString&amp; name, const WebString&amp; lang, bool localService, bool isDefault);
&gt; 
&gt; nit: some of these parameters could benefit from comments so the API makes sense on its own.
&gt; 
&gt; nit: why not provide a constructor with all of these parameters?  note: it is more common to just add a bunch of setters on a class like this rather than an assign method with a zillion parameters.  the call site won&apos;t be very readable with two bool parameters, etc.

I switched it to a bunch of setters, I like that better.

For the Platform class, I left both versions - is that okay? I didn&apos;t want to ruin the design decision of the mac port to set everything at once. It can be a good way to enforce that if you add a new parameter, all callers must set it.

&gt;&gt; Source/WebCore/platform/chromium/support/WebSpeechSynthesisDelegateImpl.cpp:46
&gt;&gt; +    Vector&lt;RefPtr&lt;WebCore::PlatformSpeechSynthesisVoice&gt; &gt; outVoices;
&gt; 
&gt; nit: since you are inside the WebCore namespace, there is no need for WebCore::

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856346</commentid>
    <comment_count>25</comment_count>
      <attachid>193382</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-15 15:26:01 -0700</bug_when>
    <thetext>Created attachment 193382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856358</commentid>
    <comment_count>26</comment_count>
      <attachid>193382</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-15 15:53:16 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

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

&gt; Source/WebCore/platform/PlatformSpeechSynthesis.h:52
&gt; +    ScriptExecutionContext* m_context;

why do we need the ScriptContext here. i don&apos;t see it being used

&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.cpp:28
&gt; +#include &quot;ScriptExecutionContext.h&quot;

i don&apos;t see this being referenced, might not need it

&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:55
&gt; +class ScriptExecutionContext;

i don&apos;t see this being referenced, might not need it

&gt; Source/WebCore/platform/mock/PlatformSpeechSynthesizerMock.cpp:54
&gt; +    m_utterance.clear();

doesn&apos;t m_utterance = 0 also work?

&gt; Source/WebCore/platform/mock/PlatformSpeechSynthesizerMock.cpp:67
&gt;      ASSERT(!m_utterance);

does this assert need to check the .get()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856396</commentid>
    <comment_count>27</comment_count>
      <attachid>193382</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-15 16:35:32 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

Attachment 193382 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17015595</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856433</commentid>
    <comment_count>28</comment_count>
      <attachid>193382</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-15 17:32:02 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

Attachment 193382 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17200283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856458</commentid>
    <comment_count>29</comment_count>
      <attachid>193382</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-15 18:20:17 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

Attachment 193382 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17215285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856474</commentid>
    <comment_count>30</comment_count>
      <attachid>193382</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-15 19:17:25 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

Attachment 193382 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17230055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856523</commentid>
    <comment_count>31</comment_count>
      <attachid>193424</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-16 00:04:51 -0700</bug_when>
    <thetext>Created attachment 193424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856524</commentid>
    <comment_count>32</comment_count>
      <attachid>193382</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-16 00:05:26 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

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

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:55
&gt;&gt; +class ScriptExecutionContext;
&gt; 
&gt; i don&apos;t see this being referenced, might not need it

Sorry, forgot to remove a few of these!

&gt;&gt; Source/WebCore/platform/mock/PlatformSpeechSynthesizerMock.cpp:54
&gt;&gt; +    m_utterance.clear();
&gt; 
&gt; doesn&apos;t m_utterance = 0 also work?

You&apos;re right.

&gt;&gt; Source/WebCore/platform/mock/PlatformSpeechSynthesizerMock.cpp:67
&gt;&gt;      ASSERT(!m_utterance);
&gt; 
&gt; does this assert need to check the .get()?

RefPtr implements operator! correctly, so this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856525</commentid>
    <comment_count>33</comment_count>
      <attachid>193382</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-16 00:07:08 -0700</bug_when>
    <thetext>Comment on attachment 193382
Patch

you don&apos;t need to do in this patch, but you&apos;ll be able to move the layout tests from platform/mac/fast/speechsynthesis up a level and run them on chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856526</commentid>
    <comment_count>34</comment_count>
      <attachid>193424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-16 00:09:49 -0700</bug_when>
    <thetext>Comment on attachment 193424
Patch

Attachment 193424 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17184215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856527</commentid>
    <comment_count>35</comment_count>
      <attachid>193424</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-16 00:11:40 -0700</bug_when>
    <thetext>Comment on attachment 193424
Patch

Attachment 193424 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17126547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856528</commentid>
    <comment_count>36</comment_count>
      <attachid>193424</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-16 00:21:26 -0700</bug_when>
    <thetext>Comment on attachment 193424
Patch

Attachment 193424 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17131525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856530</commentid>
    <comment_count>37</comment_count>
      <attachid>193424</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-16 00:49:18 -0700</bug_when>
    <thetext>Comment on attachment 193424
Patch

Attachment 193424 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17220093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856538</commentid>
    <comment_count>38</comment_count>
      <attachid>193427</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-16 01:25:43 -0700</bug_when>
    <thetext>Created attachment 193427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856551</commentid>
    <comment_count>39</comment_count>
      <attachid>193427</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-16 02:24:14 -0700</bug_when>
    <thetext>Comment on attachment 193427
Patch

Attachment 193427 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17118364</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856553</commentid>
    <comment_count>40</comment_count>
      <attachid>193427</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-16 02:31:11 -0700</bug_when>
    <thetext>Comment on attachment 193427
Patch

Attachment 193427 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17134747</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856655</commentid>
    <comment_count>41</comment_count>
      <attachid>193454</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-16 20:10:23 -0700</bug_when>
    <thetext>Created attachment 193454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856779</commentid>
    <comment_count>42</comment_count>
      <attachid>193454</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-17 17:10:06 -0700</bug_when>
    <thetext>Comment on attachment 193454
Patch

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

This is looking a lot better.  Below are a large number of minor comments.  Thanks for iterating on this patch.

&gt; Source/Platform/chromium/public/Platform.h:122
&gt; +    // May return null.
&gt; +    virtual WebSpeechSynthesizer* createSpeechSynthesizer(WebSpeechSynthesizerClient*) { return 0; }

As mentioned in Comment #14, we should probably just return a static object here instead of creating a new one each time.  That&apos;s how we implement most of these subobjects on Platform.  (If you replied to Comment #14 already and I missed it, I apologize.)

&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:62
&gt; +    void assign(const WebSpeechSynthesisUtterance&amp;);
&gt; +    void reset();
&gt; +    bool isNull() const { return m_private.isNull(); }
&gt; +
&gt; +    WebString text() const;
&gt; +    WebString lang() const;
&gt; +    WebString voice() const;
&gt; +
&gt; +    // As defined in: https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html
&gt; +    float volume() const; // 0...1, 1 is default
&gt; +    float rate() const; // 0.1...10, 1 is default
&gt; +    float pitch() const; // 0...2, 1 is default
&gt; +
&gt; +    double startTime() const; // In seconds.

We probably need WEBKIT_EXPORT macros for all these functions.

&gt; Source/Platform/chromium/public/WebSpeechSynthesizerClient.h:46
&gt; +    virtual void wordBoundaryEventOccurred(const WebSpeechSynthesisUtterance&amp;, int charIndex) = 0;
&gt; +    virtual void sentenceBoundaryEventOccurred(const WebSpeechSynthesisUtterance&amp;, int charIndex) = 0;

int -&gt; size_t ?

&gt; Source/WebCore/Modules/speech/SpeechSynthesisUtterance.h:78
&gt; -    const PlatformSpeechSynthesisUtterance&amp; platformUtterance() const { return m_platformUtterance; }
&gt; +    PassRefPtr&lt;PlatformSpeechSynthesisUtterance&gt; platformUtterance() const { return m_platformUtterance; }

Normally we just return PlatformSpeechSynthesisUtterance* in cases like this where we&apos;re not passing ownership of the object.

&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:74
&gt; +    void setClient(PlatformSpeechSynthesisUtteranceClient* client) { m_client = client; }

I see that you&apos;ve declared this function, but I can&apos;t find anywhere that calls it.  Is there some mechanism to ensure that the m_client pointer doesn&apos;t point to an object that has already been freed?

&gt; Source/WebCore/platform/chromium/PlatformSpeechSynthesizerChromium.cpp:35
&gt; +#include &quot;Document.h&quot;
&gt; +#include &quot;Page.h&quot;

These headers should not be included when in the WebCore/platform directory.  They don&apos;t seem to be used for anything, which is good.  :)

&gt; Source/WebCore/platform/chromium/PlatformSpeechSynthesizerChromium.cpp:55
&gt; +    initializeVoiceList();

initializeVoiceList is declared virtual.  Calling virtual functions in constructors sometimes trips me up because you get the base class version if you haven&apos;t started the constructor for the subclass yet.  I looked briefly, but that doesn&apos;t appear to be the case here.  I just wanted to mention it because this line gave me a moment of doubt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858339</commentid>
    <comment_count>43</comment_count>
      <attachid>193454</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-19 09:16:03 -0700</bug_when>
    <thetext>Comment on attachment 193454
Patch

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

&gt; This is looking a lot better.  Below are a large number of minor comments.  Thanks for iterating on this patch.

Thanks for your patience with me! I&apos;m glad it&apos;s getting close.

&gt;&gt; Source/Platform/chromium/public/Platform.h:122
&gt;&gt; +    virtual WebSpeechSynthesizer* createSpeechSynthesizer(WebSpeechSynthesizerClient*) { return 0; }
&gt; 
&gt; As mentioned in Comment #14, we should probably just return a static object here instead of creating a new one each time.  That&apos;s how we implement most of these subobjects on Platform.  (If you replied to Comment #14 already and I missed it, I apologize.)

Sorry I neglected to reply before. There&apos;s one PlatformSpeechSynthesizer created per DOMWindow, so each one needs to have its own WebSpeechSynthesizer so that client messages get routed back to the same window. It looks like createAudioDevice works the same way.

I suppose another solution would be for each call to updateVoiceList() and speak() to take the client as an argument, or maybe interfaces like WebSpeechSynthesisVoiceListCallback and WebSpeechSynthesisSpeakCallback instead. That&apos;s fine if you prefer that, but I think this current solution (with create...) leads to less bookkeeping for the embedder.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:62
&gt;&gt; +    double startTime() const; // In seconds.
&gt; 
&gt; We probably need WEBKIT_EXPORT macros for all these functions.

Done. What platform/configuration is this be needed for? I didn&apos;t get a compile error on Mac or Linux with Release or Debug.

&gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesizerClient.h:46
&gt;&gt; +    virtual void sentenceBoundaryEventOccurred(const WebSpeechSynthesisUtterance&amp;, int charIndex) = 0;
&gt; 
&gt; int -&gt; size_t ?

Good catch. I used unsigned instead of size_t to match the rest of the WebCore platform interface.

&gt;&gt; Source/WebCore/Modules/speech/SpeechSynthesisUtterance.h:78
&gt;&gt; +    PassRefPtr&lt;PlatformSpeechSynthesisUtterance&gt; platformUtterance() const { return m_platformUtterance; }
&gt; 
&gt; Normally we just return PlatformSpeechSynthesisUtterance* in cases like this where we&apos;re not passing ownership of the object.

Done

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:74
&gt;&gt; +    void setClient(PlatformSpeechSynthesisUtteranceClient* client) { m_client = client; }
&gt; 
&gt; I see that you&apos;ve declared this function, but I can&apos;t find anywhere that calls it.  Is there some mechanism to ensure that the m_client pointer doesn&apos;t point to an object that has already been freed?

Good catch, I meant to do that. Added to the SpeechSynthesisUtterance destructor.

It may turn out that we don&apos;t need PlatformSpeechSynthesisUtteranceClient, it looks like we&apos;ve implemented most of the spec without it.

&gt;&gt; Source/WebCore/platform/chromium/PlatformSpeechSynthesizerChromium.cpp:35
&gt;&gt; +#include &quot;Page.h&quot;
&gt; 
&gt; These headers should not be included when in the WebCore/platform directory.  They don&apos;t seem to be used for anything, which is good.  :)

Fixed

&gt;&gt; Source/WebCore/platform/chromium/PlatformSpeechSynthesizerChromium.cpp:55
&gt;&gt; +    initializeVoiceList();
&gt; 
&gt; initializeVoiceList is declared virtual.  Calling virtual functions in constructors sometimes trips me up because you get the base class version if you haven&apos;t started the constructor for the subclass yet.  I looked briefly, but that doesn&apos;t appear to be the case here.  I just wanted to mention it because this line gave me a moment of doubt.

I agree. I moved it to PlatformSpeechSynthesizer::create instead so it&apos;s called after the constructor and so that logic doesn&apos;t have to be duplicated across platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858340</commentid>
    <comment_count>44</comment_count>
      <attachid>193842</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-19 09:17:31 -0700</bug_when>
    <thetext>Created attachment 193842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858395</commentid>
    <comment_count>45</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 10:04:51 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 193454 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193454&amp;action=review
&gt; 
&gt; &gt;&gt; Source/Platform/chromium/public/Platform.h:122
&gt; &gt;&gt; +    virtual WebSpeechSynthesizer* createSpeechSynthesizer(WebSpeechSynthesizerClient*) { return 0; }
&gt; &gt; 
&gt; &gt; As mentioned in Comment #14, we should probably just return a static object here instead of creating a new one each time.  That&apos;s how we implement most of these subobjects on Platform.  (If you replied to Comment #14 already and I missed it, I apologize.)
&gt; 
&gt; Sorry I neglected to reply before. There&apos;s one PlatformSpeechSynthesizer created per DOMWindow, so each one needs to have its own WebSpeechSynthesizer so that client messages get routed back to the same window. It looks like createAudioDevice works the same way.

Oh, I misunderstood Comment #13 to mean that this object was completely stateless on the Chromium side, but it sounds like it has a routing ID or something.

&gt; I suppose another solution would be for each call to updateVoiceList() and speak() to take the client as an argument, or maybe interfaces like WebSpeechSynthesisVoiceListCallback and WebSpeechSynthesisSpeakCallback instead. That&apos;s fine if you prefer that, but I think this current solution (with create...) leads to less bookkeeping for the embedder.

Having a createFoo function is fine.  We just skip it if there&apos;s no state on the Chromium side to associate with the created object.

&gt; &gt;&gt; Source/Platform/chromium/public/WebSpeechSynthesisUtterance.h:62
&gt; &gt;&gt; +    double startTime() const; // In seconds.
&gt; &gt; 
&gt; &gt; We probably need WEBKIT_EXPORT macros for all these functions.
&gt; 
&gt; Done. What platform/configuration is this be needed for? I didn&apos;t get a compile error on Mac or Linux with Release or Debug.

It&apos;s for the component build.  It instructs the compile to export the function from WebKit.dll so that other components can call the API.

&gt; &gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:74
&gt; &gt;&gt; +    void setClient(PlatformSpeechSynthesisUtteranceClient* client) { m_client = client; }
&gt; &gt; 
&gt; &gt; I see that you&apos;ve declared this function, but I can&apos;t find anywhere that calls it.  Is there some mechanism to ensure that the m_client pointer doesn&apos;t point to an object that has already been freed?
&gt; 
&gt; Good catch, I meant to do that. Added to the SpeechSynthesisUtterance destructor.
&gt; 
&gt; It may turn out that we don&apos;t need PlatformSpeechSynthesisUtteranceClient, it looks like we&apos;ve implemented most of the spec without it.

In that case, we should probably leave it out until it&apos;s required.

&gt; &gt;&gt; Source/WebCore/platform/chromium/PlatformSpeechSynthesizerChromium.cpp:55
&gt; &gt;&gt; +    initializeVoiceList();
&gt; &gt; 
&gt; &gt; initializeVoiceList is declared virtual.  Calling virtual functions in constructors sometimes trips me up because you get the base class version if you haven&apos;t started the constructor for the subclass yet.  I looked briefly, but that doesn&apos;t appear to be the case here.  I just wanted to mention it because this line gave me a moment of doubt.
&gt; 
&gt; I agree. I moved it to PlatformSpeechSynthesizer::create instead so it&apos;s called after the constructor and so that logic doesn&apos;t have to be duplicated across platforms.

Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858400</commentid>
    <comment_count>46</comment_count>
      <attachid>193842</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-19 10:07:29 -0700</bug_when>
    <thetext>Comment on attachment 193842
Patch

Attachment 193842 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17202506

New failing tests:
platform/mac/fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html
platform/mac/fast/speechsynthesis/speech-synthesis-voices.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858413</commentid>
    <comment_count>47</comment_count>
      <attachid>193842</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 10:14:39 -0700</bug_when>
    <thetext>Comment on attachment 193842
Patch

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

&gt; Source/Platform/chromium/public/Platform.h:122
&gt; +    virtual WebSpeechSynthesizer* speechSynthesizer(WebSpeechSynthesizerClient*) { return 0; }

If you prefer the &quot;create&quot; style, feel free to change this back before landing.

&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:74
&gt; +    void setClient(PlatformSpeechSynthesisUtteranceClient* client) { m_client = client; }

I think you mentioned above that you aren&apos;t using this function yet.  We should wait to add it until we actually need it for something.

&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:79
&gt;      PlatformSpeechSynthesisUtteranceClient* m_client;

It wasn&apos;t clear to me whether we&apos;re using m_client at all yet.  If we&apos;re not using it, we should remove it.  We can always add it when it&apos;s needed.

&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.cpp:37
&gt; +    PlatformSpeechSynthesizer* synthesizer = new PlatformSpeechSynthesizer(client);
&gt; +    synthesizer-&gt;initializeVoiceList();
&gt; +    return adoptPtr(synthesizer);

This is really a minor point, but the idiom we prefer is to call adoptPtr immediately:

OwnPtr&lt;PlatformSpeechSynthesizer&gt; synthesizer = adoptPtr(new PlatformSpeechSynthesizer(client));
synthesizer-&gt;initializeVoiceList();
return synthesizer.release();

This idiom is better because it&apos;s easy to see that the code doesn&apos;t leak (i.e., we call adoptPtr immediately after calling new).  If someone adds an early return to this function, they won&apos;t introduce a leak by mistake.

&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:97
&gt; +    WebKit::WebSpeechSynthesizer* m_webSpeechSynthesizer;

If we&apos;re using a static object for the WebKit::WebSpeechSynthesizer, there&apos;s no reason to keep a raw pointer to the object here.  If you decide to switch back to the createFoo style, then we&apos;ll want this to be an OwnPtr.

In case you haven&apos;t noticed, raw pointers scary me.  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858796</commentid>
    <comment_count>48</comment_count>
      <attachid>193842</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-19 15:19:42 -0700</bug_when>
    <thetext>Comment on attachment 193842
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=193842&amp;action=review
&gt;&gt; Source/Platform/chromium/public/Platform.h:122
&gt;&gt; +    virtual WebSpeechSynthesizer* speechSynthesizer(WebSpeechSynthesizerClient*) { return 0; }
&gt; 
&gt; If you prefer the &quot;create&quot; style, feel free to change this back before landing.

Done

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:74
&gt;&gt; +    void setClient(PlatformSpeechSynthesisUtteranceClient* client) { m_client = client; }
&gt; 
&gt; I think you mentioned above that you aren&apos;t using this function yet.  We should wait to add it until we actually need it for something.

This is now being used, we call setClient(0) when the SpeechSynthesisUtterance is destroyed.

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesisUtterance.h:79
&gt;&gt;      PlatformSpeechSynthesisUtteranceClient* m_client;
&gt; 
&gt; It wasn&apos;t clear to me whether we&apos;re using m_client at all yet.  If we&apos;re not using it, we should remove it.  We can always add it when it&apos;s needed.

It&apos;s being used by the speech synthesis client, to find the event target.

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.cpp:37
&gt;&gt; +    return adoptPtr(synthesizer);
&gt; 
&gt; This is really a minor point, but the idiom we prefer is to call adoptPtr immediately:
&gt; 
&gt; OwnPtr&lt;PlatformSpeechSynthesizer&gt; synthesizer = adoptPtr(new PlatformSpeechSynthesizer(client));
&gt; synthesizer-&gt;initializeVoiceList();
&gt; return synthesizer.release();
&gt; 
&gt; This idiom is better because it&apos;s easy to see that the code doesn&apos;t leak (i.e., we call adoptPtr immediately after calling new).  If someone adds an early return to this function, they won&apos;t introduce a leak by mistake.

Sounds good.

&gt;&gt; Source/WebCore/platform/PlatformSpeechSynthesizer.h:97
&gt;&gt; +    WebKit::WebSpeechSynthesizer* m_webSpeechSynthesizer;
&gt; 
&gt; If we&apos;re using a static object for the WebKit::WebSpeechSynthesizer, there&apos;s no reason to keep a raw pointer to the object here.  If you decide to switch back to the createFoo style, then we&apos;ll want this to be an OwnPtr.
&gt; 
&gt; In case you haven&apos;t noticed, raw pointers scary me.  ;)

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858800</commentid>
    <comment_count>49</comment_count>
      <attachid>193935</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-19 15:20:59 -0700</bug_when>
    <thetext>Created attachment 193935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858815</commentid>
    <comment_count>50</comment_count>
      <attachid>193935</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 15:40:51 -0700</bug_when>
    <thetext>Comment on attachment 193935
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858860</commentid>
    <comment_count>51</comment_count>
      <attachid>193935</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 16:28:30 -0700</bug_when>
    <thetext>Comment on attachment 193935
Patch

Clearing flags on attachment: 193935

Committed r146277: &lt;http://trac.webkit.org/changeset/146277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858861</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 16:28:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858887</commentid>
    <comment_count>53</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 17:19:16 -0700</bug_when>
    <thetext>Sorry, but this patch broke the Android build:
http://build.chromium.org/p/chromium.webkit/builders/Android%20Builder/builds/14160

The tree&apos;s been very red today and I need to try to keep it green to roll WebKit. Rolling this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858890</commentid>
    <comment_count>54</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 17:21:50 -0700</bug_when>
    <thetext>Reverted r146277 for reason:

Broke Chromium Android build

Committed r146280: &lt;http://trac.webkit.org/changeset/146280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858918</commentid>
    <comment_count>55</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 17:55:29 -0700</bug_when>
    <thetext>FYI, this also broke the Linux Debug build, so the fix should be easier to test:
http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20%28dbg%29/builds/7288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860422</commentid>
    <comment_count>56</comment_count>
      <attachid>194282</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-21 09:49:09 -0700</bug_when>
    <thetext>Created attachment 194282
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860424</commentid>
    <comment_count>57</comment_count>
      <attachid>194282</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-21 09:51:53 -0700</bug_when>
    <thetext>Comment on attachment 194282
Patch for landing

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

&gt; Source/WebCore/platform/PlatformSpeechSynthesisVoice.h:43
&gt; +    void setVoiceURI(const String&amp; voiceURI) { m_voiceURI =voiceURI; }

= sign missing space after it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860428</commentid>
    <comment_count>58</comment_count>
      <attachid>194282</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-21 09:53:47 -0700</bug_when>
    <thetext>Comment on attachment 194282
Patch for landing

Thanks, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860430</commentid>
    <comment_count>59</comment_count>
      <attachid>194283</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-21 09:54:54 -0700</bug_when>
    <thetext>Created attachment 194283
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860452</commentid>
    <comment_count>60</comment_count>
      <attachid>194283</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 10:27:22 -0700</bug_when>
    <thetext>Comment on attachment 194283
Patch for landing

Clearing flags on attachment: 194283

Committed r146483: &lt;http://trac.webkit.org/changeset/146483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860453</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 10:27:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860471</commentid>
    <comment_count>62</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-03-21 11:03:47 -0700</bug_when>
    <thetext>This doesn&apos;t compile:

FAILED: ../../Source/WebKit/chromium/third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/source/webcore/platform/chromium/support/webkit.webspeechsynthesizerclientimpl.o.d -DUSE_SKIA -DCHROMIUM_BUILD -DUSE_LIBJPEG_TURBO=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_THREADING -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_GPU=1 -DENABLE_EGLIMAGE=1 -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_GOOGLE_NOW=1 -DENABLE_LANGUAGE_DETECTION=1 -DENABLE_PRINTING=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_MESSAGE_CENTER=1 -DENABLE_MANAGED_USERS=1 -DWEBKIT_IMPLEMENTATION=1 -DENABLE_3D_PLUGIN=1 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_BLOB_SLICE=1 -DENABLE_CANVAS_PATH=1 -DENABLE_CANVAS_PROXY=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=1 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_CSS3_TEXT_LINE_BREAK=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=0 -DENABLE_CSS_DEVICE_ADAPTATION=0 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=1 -DENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED=0 -DENABLE_CSS_VARIABLES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CUSTOM_ELEMENTS=1 -DENABLE_CUSTOM_SCHEME_HANDLER=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATA_TRANSFER_ITEMS=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_DIALOG_ELEMENT=1 -DENABLE_DIRECTORY_UPLOAD=1 -DENABLE_DOM4_EVENTS_CONSTRUCTOR=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_DRAGGABLE_REGION=1 -DENABLE_ENCRYPTED_MEDIA=1 -DENABLE_FILE_SYSTEM=1 -DENABLE_FILTERS=1 -DENABLE_FONT_LOAD_EVENTS=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GAMEPAD=1 -DENABLE_GEOLOCATION=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=0 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_DATE=1 -DENABLE_INPUT_TYPE_DATETIMELOCAL=1 -DENABLE_INPUT_TYPE_MONTH=1 -DENABLE_INPUT_TYPE_TIME=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_JAVASCRIPT_I18N_API=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=0 -DENABLE_LEGACY_WEB_AUDIO=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_LINK_PRERENDER=1 -DENABLE_MATHML=0 -DENABLE_MEDIA_SOURCE=1 -DENABLE_MEDIA_STATISTICS=1 -DENABLE_MEDIA_STREAM=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MICRODATA=0 -DENABLE_MOUSE_CURSOR_SCALE=1 -DENABLE_NOSNIFF=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PERFORMANCE_TIMELINE=1 -DENABLE_POINTER_LOCK=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_REQUEST_AUTOCOMPLETE=1 -DENABLE_RESOLUTION_MEDIA_QUERY=0 -DENABLE_RESOURCE_TIMING=1 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_SCRIPTED_SPEECH=1 -DENABLE_SHADOW_DOM=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SPEECH_SYNTHESIS=0 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=1 -DENABLE_SUBPIXEL_LAYOUT=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TEMPLATE_ELEMENT=1 -DENABLE_TEXT_AUTOSIZING=1 -DENABLE_THREADED_HTML_PARSER=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_EVENT_TRACKING=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_TOUCH_SLIDER=1 -DENABLE_USER_TIMING=1 -DENABLE_V8_SCRIPT_DEBUG_SERVER=1 -DENABLE_VIDEO=1 -DENABLE_VIDEO_TRACK=1 -DENABLE_VIEWPORT=1 -DENABLE_VIEW_MODE_CSS_MEDIA=1 -DENABLE_WEBGL=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_TIMEOUT=0 -DENABLE_XSLT=1 -DWTF_USE_LEVELDB=1 -DWTF_USE_BUILTIN_UTF8_CODEC=1 -DWTF_USE_OPENTYPE_SANITIZER=1 -DWTF_USE_RTL_SCROLLBAR=1 -DWTF_USE_SKIA_TEXT=1 -DWTF_USE_WEBP=1 -DWTF_USE_WEBKIT_IMAGE_DECODERS=1 -DENABLE_CALENDAR_PICKER=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_INPUT_SPEECH=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_WEEK=1 -DENABLE_INPUT_MULTIPLE_FIELDS_UI=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_MEDIA_CAPTURE=0 -DENABLE_NAVIGATOR_CONTENT_UTILS=1 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PAGE_POPUP=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_WEB_AUDIO=1 -DENABLE_8BIT_TEXTRUN=1 -DENABLE_BINDING_INTEGRITY=1 -DENABLE_3D_RENDERING=1 -DENABLE_ACCELERATED_2D_CANVAS=1 -DWTF_USE_ACCELERATED_COMPOSITING=1 -DENABLE_RUBBER_BANDING=1 -DWTF_USE_SKIA_ON_MAC_CHROMIUM=1 -DBUILDING_CHROMIUM__=1 -DWTF_USE_NEW_THEME=1 -DU_USING_ICU_NAMESPACE=0 -DSK_BUILD_NO_IMAGE_ENCODE -DSK_DEFERRED_CANVAS_USES_GPIPE=1 &apos;-DGR_GL_CUSTOM_SETUP_HEADER=&quot;GrGLConfig_chrome.h&quot;&apos; -DGR_AGGRESSIVE_SHADER_OPTS=1 -DSK_ENABLE_INST_COUNT=0 -DSK_USE_POSIX_THREADS -DU_STATIC_IMPLEMENTATION -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I../../Source/WebKit/chromium/third_party/icu/public/common -I../../Source/WebKit/chromium/third_party/icu/public/i18n -I../../Source/WebKit/chromium/public -I../../Source/WebKit/chromium/src -I../../Source/WebKit/chromium/third_party/angle/include -I../../Source/WebKit/chromium/third_party/skia/include/utils -I../../Source/WebKit/chromium/public/mac -I../../Source/WebKit/chromium/third_party/khronos -I../../Source/WebKit/chromium/gpu -I../../Source/WebKit/chromium -I../../Source/Platform/chromium -Igen/webcore_headers -I../../Source/WebCore -I../../Source -I../../Source/WebCore/Modules/battery -I../../Source/WebCore/Modules/filesystem -I../../Source/WebCore/Modules/filesystem/chromium -I../../Source/WebCore/Modules/gamepad -I../../Source/WebCore/Modules/geolocation -I../../Source/WebCore/Modules/indexeddb -I../../Source/WebCore/Modules/indexeddb/chromium -I../../Source/WebCore/Modules/mediasource -I../../Source/WebCore/Modules/mediastream -I../../Source/WebCore/Modules/navigatorcontentutils -I../../Source/WebCore/Modules/notifications -I../../Source/WebCore/Modules/proximity -I../../Source/WebCore/Modules/quota -I../../Source/WebCore/Modules/speech -I../../Source/WebCore/Modules/webaudio -I../../Source/WebCore/Modules/webdatabase -I../../Source/WebCore/Modules/webdatabase/chromium -I../../Source/WebCore/Modules/websockets -I../../Source/WebCore/accessibility -I../../Source/WebCore/accessibility/chromium -I../../Source/WebCore/bindings -I../../Source/WebCore/bindings/generic -I../../Source/WebCore/bindings/v8 -I../../Source/WebCore/bindings/v8/custom -I../../Source/WebCore/bridge -I../../Source/WebCore/bridge/jni -I../../Source/WebCore/bridge/jni/v8 -I../../Source/WebCore/css -I../../Source/WebCore/dom -I../../Source/WebCore/dom/default -I../../Source/WebCore/dom/default/chromium -I../../Source/WebCore/editing -I../../Source/WebCore/fileapi -I../../Source/WebCore/history -I../../Source/WebCore/html -I../../Source/WebCore/html/canvas -I../../Source/WebCore/html/parser -I../../Source/WebCore/html/shadow -I../../Source/WebCore/html/track -I../../Source/WebCore/inspector -I../../Source/WebCore/loader -I../../Source/WebCore/loader/appcache -I../../Source/WebCore/loader/archive -I../../Source/WebCore/loader/archive/cf -I../../Source/WebCore/loader/archive/mhtml -I../../Source/WebCore/loader/cache -I../../Source/WebCore/loader/icon -I../../Source/WebCore/mathml -I../../Source/WebCore/page -I../../Source/WebCore/page/animation -I../../Source/WebCore/page/chromium -I../../Source/WebCore/page/scrolling -I../../Source/WebCore/page/scrolling/chromium -I../../Source/WebCore/platform -I../../Source/WebCore/platform/animation -I../../Source/WebCore/platform/audio -I../../Source/WebCore/platform/audio/chromium -I../../Source/WebCore/platform/chromium -I../../Source/WebCore/platform/chromium/support -I../../Source/WebCore/platform/graphics -I../../Source/WebCore/platform/graphics/chromium -I../../Source/WebCore/platform/graphics/chromium/cc -I../../Source/WebCore/platform/graphics/cpu/arm -I../../Source/WebCore/platform/graphics/cpu/arm/filters -I../../Source/WebCore/platform/graphics/filters -I../../Source/WebCore/platform/graphics/filters/skia -I../../Source/WebCore/platform/graphics/gpu -I../../Source/WebCore/platform/graphics/opentype -I../../Source/WebCore/platform/graphics/skia -I../../Source/WebCore/platform/graphics/transforms -I../../Source/WebCore/platform/image-decoders -I../../Source/WebCore/platform/image-decoders/bmp -I../../Source/WebCore/platform/image-decoders/gif -I../../Source/WebCore/platform/image-decoders/ico -I../../Source/WebCore/platform/image-decoders/jpeg -I../../Source/WebCore/platform/image-decoders/png -I../../Source/WebCore/platform/image-decoders/skia -I../../Source/WebCore/platform/image-decoders/webp -I../../Source/WebCore/platform/image-encoders/skia -I../../Source/WebCore/platform/leveldb -I../../Source/WebCore/platform/mediastream -I../../Source/WebCore/platform/mediastream/chromium -I../../Source/WebCore/platform/mock -I../../Source/WebCore/platform/network -I../../Source/WebCore/platform/network/chromium -I../../Source/WebCore/platform/sql -I../../Source/WebCore/platform/text -I../../Source/WebCore/platform/text/transcoder -I../../Source/WebCore/plugins -I../../Source/WebCore/plugins/chromium -I../../Source/WebCore/rendering -I../../Source/WebCore/rendering/mathml -I../../Source/WebCore/rendering/style -I../../Source/WebCore/rendering/svg -I../../Source/WebCore/storage -I../../Source/WebCore/svg -I../../Source/WebCore/svg/animation -I../../Source/WebCore/svg/graphics -I../../Source/WebCore/svg/graphics/filters -I../../Source/WebCore/svg/properties -I../../Source/ThirdParty/glu -I../../Source/WebCore/workers -I../../Source/WebCore/workers/chromium -I../../Source/WebCore/xml -I../../Source/WebCore/xml/parser -I../../Source/WebCore -I../../Source/WebCore/platform/audio/mac -I../../Source/WebCore/platform/cocoa -I../../Source/WebCore/platform/graphics/cg -I../../Source/WebCore/platform/graphics/cocoa -I../../Source/WebCore/platform/graphics/mac -I../../Source/WebCore/platform/mac -I../../Source/WebCore/platform/text/mac -I../../Source/WebCore/platform/graphics/harfbuzz -I../../Source/WebCore/platform/graphics/harfbuzz/ng -I../../Source/WebKit/chromium/third_party/apple_webkit -I../../Source/WebKit/mac/WebCoreSupport -Igen/webkit -Igen/webkit/bindings -I../../Source/WTF -I../../Source/JavaScriptCore -I../../Source/WebKit/chromium/third_party/qcms/src -I../../Source/WebKit/chromium/skia/config -I../../Source/WebKit/chromium/third_party/skia/src/core -I../../Source/WebKit/chromium/third_party/skia/include/config -I../../Source/WebKit/chromium/third_party/skia/include/core -I../../Source/WebKit/chromium/third_party/skia/include/effects -I../../Source/WebKit/chromium/third_party/skia/include/pdf -I../../Source/WebKit/chromium/third_party/skia/include/gpu -I../../Source/WebKit/chromium/third_party/skia/include/gpu/gl -I../../Source/WebKit/chromium/third_party/skia/include/pipe -I../../Source/WebKit/chromium/third_party/skia/include/ports -I../../Source/WebKit/chromium/third_party/skia/include/utils -I../../Source/WebKit/chromium/skia/ext -I../../Source/WebKit/chromium/third_party/skia/include/utils/mac -I../../Source/WebKit/chromium/third_party/npapi -I../../Source/WebKit/chromium/third_party/npapi/bindings -I../../Source/WebKit/chromium/v8/include -isysroot /Developer/SDKs/MacOSX10.6.sdk -O3 -gdwarf-2 -fvisibility=hidden -Werror -Wnewline-eof -mmacosx-version-min=10.6 -arch i386 -Wglobal-constructors -Wall -Wendif-labels -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wheader-hygiene -Wno-c++11-narrowing -Wno-reserved-user-defined-literal -Wno-char-subscripts -Wno-unused-function -Wno-covered-switch-default -Wstring-conversion -Wexit-time-destructors -fno-rtti -fno-exceptions -fvisibility-inlines-hidden -fno-threadsafe-statics -fcolor-diagnostics -fno-strict-aliasing -std=gnu++11  -c ../../Source/WebCore/platform/chromium/support/WebSpeechSynthesizerClientImpl.cpp -o obj/source/webcore/platform/chromium/support/webkit.webspeechsynthesizerclientimpl.o
In file included from ../../Source/WebCore/platform/chromium/support/WebSpeechSynthesizerClientImpl.cpp:27:
../../Source/WebCore/platform/chromium/support/WebSpeechSynthesizerClientImpl.h:56:32: error: private field &apos;m_synthesizer&apos; is not used [-Werror,-Wunused-private-field]
    PlatformSpeechSynthesizer* m_synthesizer;
                               ^
../../Source/WebCore/platform/chromium/support/WebSpeechSynthesizerClientImpl.h:57:38: error: private field &apos;m_client&apos; is not used [-Werror,-Wunused-private-field]
    PlatformSpeechSynthesizerClient* m_client;

did this go through EWS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860505</commentid>
    <comment_count>63</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2013-03-21 11:29:27 -0700</bug_when>
    <thetext>Reverted r146483 for reason:

Breaks

Committed r146489: &lt;http://trac.webkit.org/changeset/146489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860512</commentid>
    <comment_count>64</comment_count>
      <attachid>194306</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-21 11:41:33 -0700</bug_when>
    <thetext>Created attachment 194306
Patch

This should fix the compile error, but let&apos;s do a full EWS run before cq again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860538</commentid>
    <comment_count>65</comment_count>
      <attachid>194306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 12:03:09 -0700</bug_when>
    <thetext>Comment on attachment 194306
Patch

Attachment 194306 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17290089</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860607</commentid>
    <comment_count>66</comment_count>
      <attachid>194306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-21 13:08:45 -0700</bug_when>
    <thetext>Comment on attachment 194306
Patch

Attachment 194306 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17196694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860673</commentid>
    <comment_count>67</comment_count>
      <attachid>194331</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-21 14:05:50 -0700</bug_when>
    <thetext>Created attachment 194331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861072</commentid>
    <comment_count>68</comment_count>
      <attachid>194331</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-21 21:23:58 -0700</bug_when>
    <thetext>Comment on attachment 194331
Patch

Attachment 194331 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17291059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>861924</commentid>
    <comment_count>69</comment_count>
      <attachid>194647</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-22 15:51:48 -0700</bug_when>
    <thetext>Created attachment 194647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862314</commentid>
    <comment_count>70</comment_count>
      <attachid>194647</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-23 21:51:18 -0700</bug_when>
    <thetext>Comment on attachment 194647
Patch

Clearing flags on attachment: 194647

Committed r146724: &lt;http://trac.webkit.org/changeset/146724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862315</commentid>
    <comment_count>71</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-23 21:51:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191939</attachid>
            <date>2013-03-07 00:53:31 -0800</date>
            <delta_ts>2013-03-13 12:03:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130307004936.patch</filename>
            <type>text/plain</type>
            <size>65578</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ2YzAwMzQ1ZGEyNGNj
MGY5MjcyMzVkMjU0ZTkzZmYxMGQ1OTZkYi4uYzZkZmIxODllM2E2MjA1N2Y1ZmM4MmNhNjIzMGU3
OTc0MDA1YTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAzLTA3ICBEb21p
bmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBX
ZWIgU3BlZWNoIFN5bnRoZXNpcyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6c3BlZWNoU3ludGhlc2lzKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNo
U3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTcGVlY2hTeW50
aGVzaXMpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5pZGw6Cisg
ICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+U3BlZWNoU3ludGhlc2lzVm9pY2UpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcy5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaDoKKyAgICAgICAgKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0u
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dT
cGVlY2hTeW50aGVzaXMuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVW
b2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
c3BlYWspOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cGF1
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxp
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0NvbnRyb2xs
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6U3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjp+U3BlZWNoU3lu
dGhlc2lzQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDb250
cm9sbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ29udHJv
bGxlcjo6c2V0UGxhdGZvcm1TeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXNDb250cm9sbGVyOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6ZGlkU3RhcnRTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpkaWRQYXVzZVNwZWFraW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OmRpZFJlc3Vt
ZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6
OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXNDb250cm9sbGVyOjp3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OnNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3Vy
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OmluaXRp
YWxpemVWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ29udHJv
bGxlcjo6c3BlYWspOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ29udHJvbGxl
cjo6cGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6
cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OmNh
bmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpwcm92aWRlU3BlZWNoU3ludGhlc2lzVG8pOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xs
ZXJDbGllbnQpOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpmcm9tKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpczo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jayk6CisKIDIwMTMtMDMtMDYgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ0OTI0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBhNzk4MTRkN2E5MzJmMTZkNzFkZTRiM2Q3Y2UwY2EyODky
ZWJkZjE2Li45MzdhNmFjMWQ4Zjk3NmM0YzE2MzdkNDZhNjhlZDE4MGFkYzk3MzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA3ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBXZWIg
U3BlZWNoIFN5bnRoZXNpcyBmb3IgQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBmZWF0dXJlcy5n
eXBpOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXMuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2lzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXM6OmluaXRpYWxpemVWb2ljZUxpc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTcGVlY2hTeW50aGVzaXM6OnNwZWFrKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzOjpwYXVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpczo6
cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzOjpjYW5jZWwpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Ojp+V2ViU3BlZWNoU3ludGhlc2lz
Q2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjp1dHRlcmFuY2UpOgorICAgICAgICAqIHB1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50
aGVzaXNWb2ljZSk6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJWaWV3Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0NsaWVudDo6c3BlZWNoU3ludGhlc2lzKToKKyAgICAgICAgKiBzcmMvU3BlZWNoU3ludGhl
c2lzQ2xpZW50UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6flNwZWVj
aFN5bnRoZXNpc0NsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoU3ludGhlc2lz
Q2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hTeW50
aGVzaXNDbGllbnRQcm94eTo6c2V0Vm9pY2VMaXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNo
U3ludGhlc2lzQ2xpZW50UHJveHk6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViS2l0
OjpTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6ZGlkUGF1c2VTcGVha2luZyk6CisgICAgICAg
IChXZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpkaWRSZXN1bWVTcGVha2luZyk6
CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpkaWRGaW5pc2hT
cGVha2luZyk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5Ojpz
cGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViS2l0OjpTcGVlY2hTeW50aGVzaXND
bGllbnRQcm94eTo6d29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJLaXQ6
OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5Ojppbml0aWFs
aXplVm9pY2VMaXN0KToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJv
eHk6OnNwZWFrKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHk6
OnBhdXNlKToKKyAgICAgICAgKFdlYktpdDo6U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHk6OnJl
c3VtZSk6CisgICAgICAgIChXZWJLaXQ6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpjYW5j
ZWwpOgorICAgICAgICAqIHNyYy9TcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eS5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eSk6
CisgICAgICAgICogc3JjL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjppZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9p
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6
CisgICAgICAgICogc3JjL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6
YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBh
c3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4pOgorICAgICAg
ICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpX
ZWJWaWV3SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJL
aXQpOgorCiAyMDEzLTAzLTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVkIENocm9taXVtIERFUFMgdG8gcjE4
NjM3MS4gIFJlcXVlc3RlZCBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggY2NjOTU5M2IyMjI0
NjU2YjFhZTY4MjA4OTE1Y2RjMzUyYjQxOGU3OS4uYTlkZWI5MTdkYjQ5Yjg1ZTM3NzgwZGI3M2E2
OGE0MzY4ZmYxZGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
RE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIsNyArNzQsNyBAQCBTcGVl
Y2hTeW50aGVzaXMqIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6c3BlZWNoU3ludGhlc2lzKERP
TVdpbmRvdyogd2luZG93KQogU3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVz
aXM6OnNwZWVjaFN5bnRoZXNpcygpCiB7CiAgICAgaWYgKCFtX3NwZWVjaFN5bnRoZXNpcyAmJiBm
cmFtZSgpKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpcyA9IFNwZWVjaFN5bnRoZXNpczo6Y3Jl
YXRlKCk7CisgICAgICAgIG1fc3BlZWNoU3ludGhlc2lzID0gU3BlZWNoU3ludGhlc2lzOjpjcmVh
dGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2lzLmdl
dCgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4ZmM5YjI5
OThmNy4uZjBmODQ5ZTQ4M2I3YTQ2YmZlNjY4Mzc2OTI4NTU2N2NlZjUwY2Y4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0y
OCwyMSArMjgsMjEgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgog
I2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKLVBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzPiBTcGVlY2hTeW50
aGVzaXM6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpcz4gU3BlZWNoU3ludGhl
c2lzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNwZWVjaFN5bnRoZXNpcygpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNwZWVjaFN5bnRoZXNpcyhjb250ZXh0KSk7CiB9CiAgICAgCi1TcGVlY2hTeW50aGVzaXM6
OlNwZWVjaFN5bnRoZXNpcygpCi0gICAgOiBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKHRoaXMpKQorU3BlZWNoU3ludGhlc2lzOjpT
cGVlY2hTeW50aGVzaXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1f
cGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjcmVh
dGUodGhpcywgY29udGV4dCkpCiAgICAgLCBtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2UoMCkKICAg
ICAsIG1faXNQYXVzZWQoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpcy5oCmluZGV4IDNkYzlmYzJjYjkxOGE1NDFiNTdkZGI2YzRmZTc2
ZTgwZmYzYzUzMTYuLjU3NDU3ZWI4Zjk4OGI4YjcwMmQzNTg2M2VkM2M2OGI1YmVhMmY0NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oCkBA
IC00MCwxMSArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7CiAgICAgCiBjbGFzcyBTcGVlY2hTeW50aGVz
aXMgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCwgcHVibGljIFJlZkNv
dW50ZWQ8U3BlZWNoU3ludGhlc2lzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U3BlZWNoU3ludGhlc2lzPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hT
eW50aGVzaXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgCiAgICAgYm9v
bCBwZW5kaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBzcGVha2luZygpIGNvbnN0OwpAQCAtNjEsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN5bnRoZXNpemVyKFBhc3NPd25Q
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4pOwogICAgIAogcHJpdmF0ZToKLSAgICBTcGVl
Y2hTeW50aGVzaXMoKTsKKyAgICBTcGVlY2hTeW50aGVzaXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwogICAgIAogICAgIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgb3ZlcnJp
ZGUgbWV0aG9kcy4KICAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlk
bAppbmRleCBhMTI1Yjk1ZjI3OTBjYWJmYjUwMDQ4ZjBhZTMxMmNiN2M4NzQ4ZDQyLi4zZTA2ZjVi
NGU3ZDA1ODYyYWE1MGU4ZjM5YWMwNTlkYzlkY2U0MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5pZGwKQEAgLTIyLDkgKzIyLDEwIEBA
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCi0gCisKIFsKLSAgICBDb25k
aXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTCisgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJ
UywKKyAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0CiBdIGludGVyZmFjZSBTcGVl
Y2hTeW50aGVzaXMgIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwZW5kaW5nOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNwZWFraW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBm
MjQzZDMwYjQ2ZjBkNjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVh
ZmNiM2U0Y2Y0NTE0ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxTcGVlY2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3lu
dGhlc2lzVm9pY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U+KTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVZvaWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZjMxMjEx
OWE4Y2JmNzZiMDBjNzhiMzNkNmVkODg5YzkyN2IyMWM1MS4uMWE2NDczOWZmZjVhZWEzZWVmZDQz
Y2NmMmMzMDE3MjFmMDA0ZTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTg1LDcgKzk4NSw2IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCi0g
ICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvY2hyb21pdW0vU3BlZWNoU3ludGhlc2lzQ2hyb21p
dW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0
b3JOb2RlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5z
cGVjdG9yTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQ
cm9jZXNzb3JOb2RlLmNwcCcsCkBAIC0zNjcwLDYgKzM2NjksMTIgQEAKICAgICAgICAgICAgICdw
bGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxh
dGZvcm1Ub3VjaEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQ
b2ludC5oJywKQEAgLTM4NDUsNiArMzg1MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJv
bWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBAIC0z
ODY5LDYgKzM4NzUsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Vh
cmNoUG9wdXBNZW51Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9TZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9TcGVlY2hTeW50aGVzaXNDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9TaGFyZWRUaW1lckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vU291bmRDaHJvbWl1bVBvc2l4LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vU291bmRDaHJvbWl1bVdpbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggMjFiOGJjOWFh
NGM4MmMzOTQ4OTdmYTUxZDUxZjMxMjcxNmRkOWU0MS4uYjYzZjRkYzc5OTE5NjQ3N2UxMTY1YWE0
ZWRmMGQxNGEwYzU5OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKIAorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKQEAgLTM4LDE1ICs0MCwxNiBAQCBjbGFzcyBTcGVlY2hTeW50aGVzaXNW
b2ljZTsKICAgICAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzIDogcHVibGljIFJlZkNv
dW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4gY3JlYXRlKFNwZWVjaFN5bnRoZXNpcyop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiBjcmVhdGUo
U3BlZWNoU3ludGhlc2lzKiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIAogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplVm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8U3BlZWNoU3ludGhl
c2lzVm9pY2U+ID4mKTsKICAgICB2b2lkIHBsYXRmb3JtU3BlYWsoU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKik7CiAgICAgCiBwcml2YXRlOgotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNw
ZWVjaFN5bnRoZXNpcyopOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRo
ZXNpcyosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAotICAgIFNwZWVjaFN5bnRoZXNpcyog
bV9zcGVlY2hTeW50aHNpczsKKyAgICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhlc2lz
OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggNzc0ZTJkNmEyMmQyZjNiZDBlZTY0
ZTA0Nzc5ZjQzYTY2OTU0MTAzOS4uNzQ1M2Q4ZjRhNWIwZGJjNmIwM2YzZjA0NDA2MTVjMzAwZmQ4
MmQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CiAgICAgYm9vbCBsb2NhbFNl
cnZpY2UoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU2VydmljZTsgfQogICAgIGJvb2wgaXNEZWZh
dWx0KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0OyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJv
b2wgaXNEZWZhdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAppbmRleCA2NjEyM2Q1YWYxMWNhYmIwZWNlM2VhYTRj
NjIwNzE3NWFhNjFlNmY3Li43NzdhMTBmZDE2NTk3MDgzNGQwZDUzOWNlOWNiNWEwMzNmNmEzM2Qw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmNwcApAQCAtMjUsMjIgKzI1LDE3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKK1Bhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqIGNsaWVudCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xp
ZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
KGNsaWVudCwgY29udGV4dCkpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNs
aWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQotewotICAgIGlu
aXRpYWxpemVWb2ljZUxpc3QoKTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IGNmZGM3ZTE5ZDAw
M2I4OWNlODE2YzQ2YTQ2YzI5ZjI5N2RiYzAwZjYuLjkxNjg2MTk2ZTgyMmU2NGI2NDRkNWVjOTdh
OTc5OWQ5MjNlNzBmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTQ0LDcgKzQ0LDEyIEBAIGVudW0gU3BlZWNoQm91
bmRhcnkgewogICAgIFNwZWVjaFNlbnRlbmNlQm91bmRhcnkKIH07CiAKKyNpZiBQTEFURk9STShD
SFJPTUlVTSkKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI7CisjZW5kaWYKKyAgICAK
IGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCB7
CiBwdWJsaWM6CkBAIC02MSw3ICs2Niw3IEBAIHByb3RlY3RlZDoKICAgICAKIGNsYXNzIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cj4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkg
eyB9CiAgICAgCkBAIC03MiwxOCArNzcsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWwoKTsKICAgICAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OyB9Ci0gICAgCisK
KyAgICB2b2lkIHNldFZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+ID4mKTsKKwogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOworICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAgICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplckNsaWVudCogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVj
aFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBTcGVlY2hTeW50
aGVzaXNDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iYmVkMTczYzU2MTlhZDFlZTNhNThiZmI2YjI3ZDg3MzljZTljZjM2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcApAQCAtMCwwICsxLDk1IEBACisvKgorICog
Q29weXJpZ2h0IChjKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKwor
I2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50KGNs
aWVudCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworCisgICAgUGFn
ZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgbV9j
b250cm9sbGVyID0gU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6ZnJvbShwYWdlKTsKKyAgICBB
U1NFUlQobV9jb250cm9sbGVyKTsKKworICAgIG1fY29udHJvbGxlci0+c2V0UGxhdGZvcm1TeW50
aGVzaXplcih0aGlzKTsKKworICAgIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKK30KKyAgICAKK3Zv
aWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCit7Cisg
ICAgbV9jb250cm9sbGVyLT5pbml0aWFsaXplVm9pY2VMaXN0KCk7Cit9CisgICAgCit2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisgICAgbV9jb250cm9sbGVyLT5zcGVhaygmdXR0
ZXJhbmNlKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSgpCit7
CisgICAgbV9jb250cm9sbGVyLT5wYXVzZSgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OnJlc3VtZSgpCit7CisgICAgbV9jb250cm9sbGVyLT5yZXN1bWUoKTsKK30KKwor
dm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIG1fY29udHJv
bGxlci0+Y2FuY2VsKCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c2V0
Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYg
dm9pY2VzKQoreworICAgIG1fdm9pY2VMaXN0ID0gdm9pY2VzOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU3BlZWNoU3ludGhl
c2lzQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDExOGMxZjIyZWUyMTc0MWRkODhkNzA1ZGE0
ODYzZDIzMDVhNzQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsMTc3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNp
c0NvbnRyb2xsZXIuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NvbnN0IGNoYXIqIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OnN1
cHBsZW1lbnROYW1lKCkKK3sKKyAgICByZXR1cm4gIlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIi
OworfQorCitTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpTcGVlY2hTeW50aGVzaXNDb250cm9s
bGVyKFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xp
ZW50KGNsaWVudCkKKyAgICAsIG1fc3ludGhlc2l6ZXIoMCkKKyAgICAsIG1fbmV4dFV0dGVyYW5j
ZUlkKDEpCit7CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIodGhpcyk7Cit9CisKK1NwZWVj
aFN5bnRoZXNpc0NvbnRyb2xsZXI6On5TcGVlY2hTeW50aGVzaXNDb250cm9sbGVyKCkKK3sKKyAg
ICAvLyBGSVhNRTogQ2FsbCBtX2NsaWVudC0+cGFnZURlc3Ryb3llZCgpOyBvbmNlIHdlIGhhdmUg
aW1wbGVtZW50ZWQgYSBjbGllbnQuCit9CisKK1Bhc3NPd25QdHI8U3BlZWNoU3ludGhlc2lzQ29u
dHJvbGxlcj4gU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6Y3JlYXRlKFNwZWVjaFN5bnRoZXNp
c0NvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNw
ZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIoY2xpZW50KSk7Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhl
c2lzQ29udHJvbGxlcjo6c2V0UGxhdGZvcm1TeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKiBzeW50aGVzaXplcikKK3sKKyAgICBtX3N5bnRoZXNpemVyID0gc3ludGhlc2l6ZXI7
Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6c2V0Vm9pY2VMaXN0KFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VzKQoreworICAg
IGlmICghbV9zeW50aGVzaXplcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zeW50aGVzaXpl
ci0+c2V0Vm9pY2VMaXN0KHZvaWNlcyk7CisgICAgaWYgKG1fc3ludGhlc2l6ZXItPmNsaWVudCgp
KQorICAgICAgICBtX3N5bnRoZXNpemVyLT5jbGllbnQoKS0+dm9pY2VzRGlkQ2hhbmdlKCk7Cit9
CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6ZGlkU3RhcnRTcGVha2luZyhpbnQg
dXR0ZXJhbmNlSWQpCit7CisgICAgaWYgKCFtX3N5bnRoZXNpemVyIHx8ICFtX3N5bnRoZXNpemVy
LT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRh
aW5zKHV0dGVyYW5jZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zeW50aGVzaXplci0+
Y2xpZW50KCktPmRpZFN0YXJ0U3BlYWtpbmcobV91dHRlcmFuY2VzLmdldCh1dHRlcmFuY2VJZCkp
OworfQorCit2b2lkIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OmRpZEZpbmlzaFNwZWFraW5n
KGludCB1dHRlcmFuY2VJZCkKK3sKKyAgICBpZiAoIW1fc3ludGhlc2l6ZXIgfHwgIW1fc3ludGhl
c2l6ZXItPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX3V0dGVyYW5jZXMu
Y29udGFpbnModXR0ZXJhbmNlSWQpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N5bnRoZXNp
emVyLT5jbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcobV91dHRlcmFuY2VzLmdldCh1dHRlcmFu
Y2VJZCkpOworICAgIG1fdXR0ZXJhbmNlcy5yZW1vdmUodXR0ZXJhbmNlSWQpOworfQorCit2b2lk
IFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OmRpZFBhdXNlU3BlYWtpbmcoaW50IHV0dGVyYW5j
ZUlkKQoreworICAgIGlmICghbV9zeW50aGVzaXplciB8fCAhbV9zeW50aGVzaXplci0+Y2xpZW50
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fdXR0ZXJhbmNlcy5jb250YWlucyh1dHRl
cmFuY2VJZCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3ludGhlc2l6ZXItPmNsaWVudCgp
LT5kaWRQYXVzZVNwZWFraW5nKG1fdXR0ZXJhbmNlcy5nZXQodXR0ZXJhbmNlSWQpKTsKK30KKwor
dm9pZCBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpkaWRSZXN1bWVTcGVha2luZyhpbnQgdXR0
ZXJhbmNlSWQpCit7CisgICAgaWYgKCFtX3N5bnRoZXNpemVyIHx8ICFtX3N5bnRoZXNpemVyLT5j
bGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRhaW5z
KHV0dGVyYW5jZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zeW50aGVzaXplci0+Y2xp
ZW50KCktPmRpZFJlc3VtZVNwZWFraW5nKG1fdXR0ZXJhbmNlcy5nZXQodXR0ZXJhbmNlSWQpKTsK
K30KKwordm9pZCBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpzcGVha2luZ0Vycm9yT2NjdXJy
ZWQoaW50IHV0dGVyYW5jZUlkKQoreworICAgIGlmICghbV9zeW50aGVzaXplciB8fCAhbV9zeW50
aGVzaXplci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fdXR0ZXJhbmNl
cy5jb250YWlucyh1dHRlcmFuY2VJZCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3ludGhl
c2l6ZXItPmNsaWVudCgpLT5zcGVha2luZ0Vycm9yT2NjdXJyZWQobV91dHRlcmFuY2VzLmdldCh1
dHRlcmFuY2VJZCkpOworICAgIG1fdXR0ZXJhbmNlcy5yZW1vdmUodXR0ZXJhbmNlSWQpOworfQor
Cit2b2lkIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJy
ZWQoaW50IHV0dGVyYW5jZUlkLCBpbnQgY2hhckluZGV4KQoreworICAgIGlmICghbV9zeW50aGVz
aXplciB8fCAhbV9zeW50aGVzaXplci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoIW1fdXR0ZXJhbmNlcy5jb250YWlucyh1dHRlcmFuY2VJZCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc3ludGhlc2l6ZXItPmNsaWVudCgpLT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQobV91
dHRlcmFuY2VzLmdldCh1dHRlcmFuY2VJZCksIFNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhckluZGV4
KTsKK30KKwordm9pZCBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpzZW50ZW5jZUJvdW5kYXJ5
RXZlbnRPY2N1cnJlZChpbnQgdXR0ZXJhbmNlSWQsIGludCBjaGFySW5kZXgpCit7CisgICAgaWYg
KCFtX3N5bnRoZXNpemVyIHx8ICFtX3N5bnRoZXNpemVyLT5jbGllbnQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRhaW5zKHV0dGVyYW5jZUlkKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9zeW50aGVzaXplci0+Y2xpZW50KCktPmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChtX3V0dGVyYW5jZXMuZ2V0KHV0dGVyYW5jZUlkKSwgU3BlZWNoU2VudGVuY2VCb3Vu
ZGFyeSwgY2hhckluZGV4KTsKK30KKwordm9pZCBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpp
bml0aWFsaXplVm9pY2VMaXN0KCkKK3sKKyAgICBtX2NsaWVudC0+aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOworfQorCit2b2lkIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXI6OnNwZWFrKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit7CisgICAgaW50IGlk
ID0gbV9uZXh0VXR0ZXJhbmNlSWQrKzsKKyAgICBtX3V0dGVyYW5jZXMuYWRkKGlkLCB1dHRlcmFu
Y2UpOworICAgIG1fY2xpZW50LT5zcGVhayh1dHRlcmFuY2UsIGlkKTsKK30KKwordm9pZCBTcGVl
Y2hTeW50aGVzaXNDb250cm9sbGVyOjpwYXVzZSgpCit7CisgICAgbV9jbGllbnQtPnBhdXNlKCk7
Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6cmVzdW1lKCkKK3sKKyAgICBt
X2NsaWVudC0+cmVzdW1lKCk7Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6
Y2FuY2VsKCkKK3sKKyAgICBtX2NsaWVudC0+Y2FuY2VsKCk7Cit9CisKK3ZvaWQgcHJvdmlkZVNw
ZWVjaFN5bnRoZXNpc1RvKFBhZ2UqIHBhZ2UsIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkKK3sKKyAgICBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOjpwcm92aWRlVG8o
cGFnZSwgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlcjo6c3VwcGxlbWVudE5hbWUoKSwgU3BlZWNo
U3ludGhlc2lzQ29udHJvbGxlcjo6Y3JlYXRlKGNsaWVudCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNp
c0NvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTUxNWNjYzEwYTE4YzM1ZWUzYTkxYmI0NzE1M2E0
MzQ5NzAzMzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
T1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXJfaAorI2RlZmluZSBTcGVlY2hT
eW50aGVzaXNDb250cm9sbGVyX2gKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworCitjbGFz
cyBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyOworCitjbGFzcyBTcGVlY2hTeW50aGVzaXNDb250
cm9sbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihT
cGVlY2hTeW50aGVzaXNDb250cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFs
aXplVm9pY2VMaXN0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSosIGludCB1dHRlcmFuY2VJZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCitjbGFzcyBTcGVl
Y2hTeW50aGVzaXNDb250cm9sbGVyIDogcHVibGljIFN1cHBsZW1lbnQ8UGFnZT4geworcHVibGlj
OgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIoKTsKKworICAgIHZvaWQg
c2V0UGxhdGZvcm1TeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKik7CisKKyAg
ICAvLyBNZXNzYWdlcyBwYXNzZWQgdG8gV2ViQ29yZQorICAgIHZvaWQgc2V0Vm9pY2VMaXN0KFZl
Y3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYpOworICAgIHZvaWQg
ZGlkU3RhcnRTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpOworICAgIHZvaWQgZGlkRmluaXNoU3Bl
YWtpbmcoaW50IHV0dGVyYW5jZUlkKTsKKyAgICB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoaW50IHV0
dGVyYW5jZUlkKTsKKyAgICB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7
CisgICAgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoaW50IHV0dGVyYW5jZUlkKTsKKyAgICB2
b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoaW50IHV0dGVyYW5jZUlkLCBpbnQgY2hhcklu
ZGV4KTsKKyAgICB2b2lkIHNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGludCB1dHRlcmFu
Y2VJZCwgaW50IGNoYXJJbmRleCk7CisKKyAgICAvLyBNZXNzYWdlcyBwYXNzZWQgdG8gV2ViS2l0
CisgICAgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAgdm9pZCBzcGVhayhjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIHZvaWQgcGF1c2UoKTsKKyAg
ICB2b2lkIHJlc3VtZSgpOworICAgIHZvaWQgY2FuY2VsKCk7CisKKyAgICBzdGF0aWMgUGFzc093
blB0cjxTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyPiBjcmVhdGUoU3BlZWNoU3ludGhlc2lzQ29u
dHJvbGxlckNsaWVudCopOworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OworICAgIHN0YXRpYyBTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyKiBmcm9tKFBhZ2UqIHBhZ2Up
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIqPihTdXBwbGVt
ZW50PFBhZ2U+Ojpmcm9tKHBhZ2UsIHN1cHBsZW1lbnROYW1lKCkpKTsgfQorCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIoU3BlZWNoU3ludGhlc2lzQ29u
dHJvbGxlckNsaWVudCopOworCisgICAgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxlckNsaWVudCog
bV9jbGllbnQ7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciogbV9zeW50aGVzaXplcjsK
KworICAgIGludCBtX25leHRVdHRlcmFuY2VJZDsKKyAgICBIYXNoTWFwPGludCwgY29uc3QgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPiBtX3V0dGVyYW5jZXM7Cit9OworCit2b2lk
IHByb3ZpZGVTcGVlY2hTeW50aGVzaXNUbyhQYWdlKiwgU3BlZWNoU3ludGhlc2lzQ29udHJvbGxl
ckNsaWVudCopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKworI2VuZGlmIC8vIFNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzTWFjLm1tCmluZGV4IGFhNThlYzYyMzE5ODE3M2EwZjgwN2UyYmVmYzhjZDBi
MDdjZDU4MTAuLjg4YTk5ZjRkNTVkYTdiZTVlNjg0MDRlNDhhOTg3NTA1ZWQ5Njc1ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNNYWMubW0KQEAgLTM5LDcgKzM5LDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcz4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXM6OmNyZWF0ZShTcGVlY2hTeW50aGUK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKHN5bnRoZXNp
cykpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpczo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXMoU3BlZWNoU3ludGhlc2lzKiBzeW50aGVzaXMpCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpczo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKiBzeW50aGVzaXMsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKQogICAgIDogbV9zcGVlY2hTeW50aGVzaXMoc3ludGhlc2lzKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRleCA3MDk0ZmEzNTM4MjJlODc0NWU0NmUzNGRk
YmYzN2M3NGIwZWE1MTU1Li4yZDA1YWZmMjlkOGJiMmVhNWYyYzU1ZDNlNDdjYjk3M2Q1ODE2MmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMTg4LDYgKzE4OCwxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KikKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xp
ZW50KQoreworICAgIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKK30KKwogdm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKIHsKICAgICBOU1N0cmluZyAq
ZGVmYXVsdFZvaWNlVVJJID0gW05TU3BlZWNoU3ludGhlc2l6ZXIgZGVmYXVsdFZvaWNlXTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKaW5kZXggYzJmMGQ2YmM5MGY4NmI2ODQ4NGJkN2VlY2Y5
MjQ5ODQ2ZGYyYzcwOC4uMTZjYTBjMzY0NmQ5YzY0MGZkMWQ0ZjU5MjhkODc0NGZkNThiMjM4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUGFzc093blB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OmNyZWF0ZSgKIH0KICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50KiBjbGllbnQpCi0gICAgOiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkKKyAg
ICA6IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50LCAwKQogICAgICwgbV9zcGVha2lu
Z0ZpbmlzaGVkVGltZXIodGhpcywgJlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVh
a2luZ0ZpbmlzaGVkKQogICAgICwgbV91dHRlcmFuY2UoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAppbmRleCAxMDVhOTJjNTg5OWFjODAyZjg2M2FhMmFhNjUzM2YwZDdiNTllNzc0Li45
YmQ1ODA5OGRkYmExMGVkNGE1NjI0OTdiOWViZDFmZTg3OTI2NDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCkBAIC0yNTksNiArMjU5LDEwIEBACiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJTcGVlY2hSZWNvZ25pdGlvblJlc3VsdC5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYlNwZWVjaFJlY29nbml6ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJTcGVlY2hSZWNvZ25pemVyLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXMuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlN0b3JhZ2VRdW90YUNhbGxiYWNrcy5oJywKQEAgLTQx
Miw2ICs0MTYsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvU3BlZWNoSW5wdXRDbGllbnRJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvU3BlZWNoUmVjb2duaXRpb25DbGllbnRQcm94eS5o
JywKKyAgICAgICAgICAgICAgICAnc3JjL1NwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5LmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9TcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eS5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VBcmVhUHJveHkuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1N0b3JhZ2VBcmVhUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdl
SW5mb0Nocm9taXVtLmNwcCcsCkBAIC01NjYsNiArNTcyLDggQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlNwZWVjaElucHV0UmVzdWx0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
cGVlY2hSZWNvZ25pdGlvbkhhbmRsZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3Bl
ZWNoUmVjb2duaXRpb25SZXN1bHQuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlN0b3JhZ2VFdmVu
dERpc3BhdGNoZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVv
dGFDYWxsYmFja3NJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlUXVv
dGFDYWxsYmFja3NJbXBsLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9m
ZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4
IGQxOTE0YmQyMjA0ZWIyZWVlYjkxMDIzYzI4ZWY2MjkyMTVjOTMxNDEuLmE4M2U2Njk0OWY5NzE0
ZTc4MDZlMTMyOTZhNTdkNzQ2ZTNiZjAzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVz
Lmd5cGkKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9
MScsCiAgICAgICAnRU5BQkxFX1NIQURPV19ET009MScsCiAgICAgICAnRU5BQkxFX1NNT09USF9T
Q1JPTExJTkc9MScsCi0gICAgICAnRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM9MCcsCisgICAgICAn
RU5BQkxFX1NQRUVDSF9TWU5USEVTSVM9MScsCiAgICAgICAnRU5BQkxFX1NRTF9EQVRBQkFTRT08
KGVuYWJsZV9zcWxfZGF0YWJhc2UpJywKICAgICAgICdFTkFCTEVfU1RZTEVfU0NPUEVEPTEnLAog
ICAgICAgJ0VOQUJMRV9TVUJQSVhFTF9MQVlPVVQ9MScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MGNlNDE0
OTU2ZDdjYWUxZDhlYTlmY2U0ODUwNzJkMTRiMTdkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXMuaApAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXNfaAorCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3Bl
ZWNoU3ludGhlc2lzQ2xpZW50OworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOwor
CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXMgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBz
ZXRDbGllbnQoV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc0NsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA4YjViODc5YzBkZDQ5YWYxYmQ4OGQ5YzkzNzA3Y2QwNTZiNDVmMTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNDbGll
bnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXND
bGllbnRfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnRfaAorCisjaW5jbHVkZSAi
Li4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUg
IldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJTcGVlY2hTeW50aGVzaXNDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNw
ZWVjaFN5bnRoZXNpc0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlz
dChjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGludCB1dHRlcmFuY2VJZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoaW50IHV0dGVyYW5jZUlk
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoaW50IHV0
dGVyYW5jZUlkLCBpbnQgY2hhckluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbnRlbmNl
Qm91bmRhcnlFdmVudE9jY3VycmVkKGludCB1dHRlcmFuY2VJZCwgaW50IGNoYXJJbmRleCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50
aGVzaXNDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDI4NThmMzBm
NzU5NWE0Y2ZjNjJkOGNkYzI0NTBjYWY2YzZmOTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAg
LTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKworI2luY2x1ZGUg
Ii4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb24uaCIKKyNpbmNsdWRl
ICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaCIKKyNp
bmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7CitwdWJsaWM6CisgICAgaW50IGlkKCkg
Y29uc3Q7CisgICAgV2ViU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgbGFuZygp
IGNvbnN0OworICAgIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0OworICAgIGZsb2F0IHZvbHVtZSgp
IGNvbnN0OworICAgIGZsb2F0IHJhdGUoKSBjb25zdDsKKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0
OworICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdSwgaW50IHV0dGVyYW5jZUlkKQorICAgICAg
ICA6IG1fcHJpdmF0ZSh1KSwgbV9pZCh1dHRlcmFuY2VJZCkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZTsgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
Ly8gTm8gaW1wbGVtZW50YXRpb24gZm9yIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yLiBEZWNsYXJl
ZCBwcml2YXRlIHRvIGVuc3VyZSB0aGF0IG5vIGluc3RhbmNlcworICAgIC8vIGNhbiBiZSBjcmVh
dGVkIGJ5IHRoZSBjb25zdW1lcnMgb2YgQ2hyb21pdW0gV2ViS2l0LgorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSgpOworCisgICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIG1fcHJpdmF0ZTsKKyAgICBpbnQgbV9pZDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXNWb2ljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzOWM5YzhhNWJmYmE3OTc2NTc3NGYwZGIyNWVh
NGUzZDg2NjIwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2VfaAorCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UgeworcHVibGljOgorICAgIFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlKCkgeyB9CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVs
dCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNWb2ljZSYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+
IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCmluZGV4IGU0NDZlMmE2OTNmOTFhMTcxYzVlMmM5M2YzMDE4NjQwZDhk
NTVlMTkuLjM4ZDUxNzI2YmVkYmNiYjRmMTM5YmZjYTU0OTgzZTYwNzY0MWZiZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTc2LDYgKzc2
LDcgQEAgY2xhc3MgV2ViUmFuZ2U7CiBjbGFzcyBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXI7CiBj
bGFzcyBXZWJTcGVlY2hJbnB1dExpc3RlbmVyOwogY2xhc3MgV2ViU3BlZWNoUmVjb2duaXplcjsK
K2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpczsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBj
bGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OwpAQCAtMzQ4LDYgKzM0OSw5IEBAIHB1
YmxpYzoKICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3Igc3BlZWNoIHJlY29nbml0
aW9uIHNlcnZpY2VzLgogICAgIHZpcnR1YWwgV2ViU3BlZWNoUmVjb2duaXplciogc3BlZWNoUmVj
b2duaXplcigpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJ
IGZvciBzcGVlY2ggc3ludGhlc2lzIHNlcnZpY2VzLgorICAgIHZpcnR1YWwgV2ViU3BlZWNoU3lu
dGhlc2lzKiBzcGVlY2hTeW50aGVzaXMoKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBEZXZpY2Ug
T3JpZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZvciBkZXZpY2Ugb3JpZW50
YXRpb24gc2VydmljZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9T
cGVlY2hTeW50aGVzaXNDbGllbnRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9TcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI2MWI4NWI2OWYy
MjE5YmVjY2M2MzUzZjM1YTBjZTZkNWY1ZWY2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5LmNwcApAQCAtMCww
ICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTcGVlY2hT
eW50aGVzaXNDbGllbnRQcm94eS5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8U3BlZWNoU3ludGhlc2lzQ2xpZW50
UHJveHk+IFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpjcmVhdGUoV2ViU3BlZWNoU3ludGhl
c2lzKiBzeW50aGVzaXMpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTcGVlY2hTeW50aGVz
aXNDbGllbnRQcm94eShzeW50aGVzaXMpKTsKK30KKworU3BlZWNoU3ludGhlc2lzQ2xpZW50UHJv
eHk6OlNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5KFdlYlNwZWVjaFN5bnRoZXNpcyogc3ludGhl
c2lzKQorICAgIDogbV9zeW50aGVzaXMoc3ludGhlc2lzKQoreworICAgIG1fc3ludGhlc2lzLT5z
ZXRDbGllbnQodGhpcyk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5Ojp+U3BlZWNo
U3ludGhlc2lzQ2xpZW50UHJveHkoKQoreworfQorCit2b2lkIFNwZWVjaFN5bnRoZXNpc0NsaWVu
dFByb3h5OjpzZXRDb250cm9sbGVyKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCit7CisgICAgbV9jb250cm9sbGVyID0gY29udHJvbGxlcjsKK30KKwordm9p
ZCBTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6c2V0Vm9pY2VMaXN0KGNvbnN0IFdlYlZlY3Rv
cjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZvaWNlcykKK3sKKyAgICBpZiAoIW1fY29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9pY2VzLmFwcGVuZChQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tp
XSkpOworICAgIG1fY29udHJvbGxlci0+c2V0Vm9pY2VMaXN0KG91dFZvaWNlcyk7Cit9CisKK3Zv
aWQgU3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHk6OmRpZFN0YXJ0U3BlYWtpbmcoaW50IHV0dGVy
YW5jZUlkKQoreworICAgIGlmICghbV9jb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2NvbnRyb2xsZXItPmRpZFN0YXJ0U3BlYWtpbmcodXR0ZXJhbmNlSWQpOworfQorCit2b2lk
IFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpkaWRQYXVzZVNwZWFraW5nKGludCB1dHRlcmFu
Y2VJZCkKK3sKKyAgICBpZiAoIW1fY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jb250cm9sbGVyLT5kaWRQYXVzZVNwZWFraW5nKHV0dGVyYW5jZUlkKTsKK30KKwordm9pZCBT
cGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoaW50IHV0dGVyYW5j
ZUlkKQoreworICAgIGlmICghbV9jb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NvbnRyb2xsZXItPmRpZFJlc3VtZVNwZWFraW5nKHV0dGVyYW5jZUlkKTsKK30KKwordm9pZCBT
cGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6ZGlkRmluaXNoU3BlYWtpbmcoaW50IHV0dGVyYW5j
ZUlkKQoreworICAgIGlmICghbV9jb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NvbnRyb2xsZXItPmRpZEZpbmlzaFNwZWFraW5nKHV0dGVyYW5jZUlkKTsKK30KKwordm9pZCBT
cGVlY2hTeW50aGVzaXNDbGllbnRQcm94eTo6c3BlYWtpbmdFcnJvck9jY3VycmVkKGludCB1dHRl
cmFuY2VJZCkKK3sKKyAgICBpZiAoIW1fY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb250cm9sbGVyLT5zcGVha2luZ0Vycm9yT2NjdXJyZWQodXR0ZXJhbmNlSWQpOworfQor
Cit2b2lkIFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5Ojp3b3JkQm91bmRhcnlFdmVudE9jY3Vy
cmVkKGludCB1dHRlcmFuY2VJZCwgaW50IGNoYXJJbmRleCkKK3sKKyAgICBpZiAoIW1fY29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb250cm9sbGVyLT53b3JkQm91bmRhcnlF
dmVudE9jY3VycmVkKHV0dGVyYW5jZUlkLCBjaGFySW5kZXgpOworfQorCit2b2lkIFNwZWVjaFN5
bnRoZXNpc0NsaWVudFByb3h5OjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChpbnQgdXR0
ZXJhbmNlSWQsIGludCBjaGFySW5kZXgpCit7CisgICAgaWYgKCFtX2NvbnRyb2xsZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29udHJvbGxlci0+c2VudGVuY2VCb3VuZGFyeUV2ZW50T2Nj
dXJyZWQodXR0ZXJhbmNlSWQsIGNoYXJJbmRleCk7Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lz
Q2xpZW50UHJveHk6OmluaXRpYWxpemVWb2ljZUxpc3QoKQoreworICAgIG1fc3ludGhlc2lzLT5p
bml0aWFsaXplVm9pY2VMaXN0KCk7Cit9CisKK3ZvaWQgU3BlZWNoU3ludGhlc2lzQ2xpZW50UHJv
eHk6OnNwZWFrKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiB1dHRlcmFuY2UsIGludCB1dHRlcmFuY2VJZCkKK3sKKyAgICBpZiAoIW1fc3ludGhlc2lzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3N5bnRoZXNpcy0+c3BlYWsoV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSwgdXR0ZXJhbmNlSWQpKTsKK30KKwordm9pZCBTcGVlY2hT
eW50aGVzaXNDbGllbnRQcm94eTo6cGF1c2UoKQoreworICAgIG1fc3ludGhlc2lzLT5wYXVzZSgp
OworfQorCit2b2lkIFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5OjpyZXN1bWUoKQoreworICAg
IG1fc3ludGhlc2lzLT5yZXN1bWUoKTsKK30KKwordm9pZCBTcGVlY2hTeW50aGVzaXNDbGllbnRQ
cm94eTo6Y2FuY2VsKCkKK3sKKyAgICBtX3N5bnRoZXNpcy0+Y2FuY2VsKCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1NwZWVjaFN5bnRoZXNpc0NsaWVu
dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVlY2hTeW50aGVzaXNDbGll
bnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MGQzMzAzOGYzY2JhYjcxOTBhOWIyZDFjZTUwMWViNDJm
Y2ZjNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9TcGVl
Y2hTeW50aGVzaXNDbGllbnRQcm94eS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5X2gKKyNkZWZpbmUgU3BlZWNoU3ludGhlc2lzQ2xp
ZW50UHJveHlfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
aCIKKyNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2lzLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzQ2xpZW50Lmgi
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzQ29udHJvbGxlckNsaWVudCwgcHVibGljIFdlYlNwZWVjaFN5bnRoZXNpc0NsaWVudCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHkoKTsKKworICAg
IHN0YXRpYyBQYXNzT3duUHRyPFNwZWVjaFN5bnRoZXNpc0NsaWVudFByb3h5PiBjcmVhdGUoV2Vi
U3BlZWNoU3ludGhlc2lzKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9pY2VMaXN0KGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaFNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVhbCB2b2lk
IHNwZWFraW5nRXJyb3JPY2N1cnJlZChpbnQgdXR0ZXJhbmNlSWQpOworICAgIHZpcnR1YWwgdm9p
ZCB3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGludCB1dHRlcmFuY2VJZCwgaW50IGNoYXJJbmRl
eCk7CisgICAgdmlydHVhbCB2b2lkIHNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGludCB1
dHRlcmFuY2VJZCwgaW50IGNoYXJJbmRleCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZv
aWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSosIGludCB1dHRlcmFuY2VJ
ZCk7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgp
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAgICBTcGVlY2hTeW50
aGVzaXNDbGllbnRQcm94eShXZWJTcGVlY2hTeW50aGVzaXMqKTsKKworICAgIFdlYlNwZWVjaFN5
bnRoZXNpcyogbV9zeW50aGVzaXM7CisgICAgV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzQ29udHJv
bGxlciogbV9jb250cm9sbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBTcGVlY2hTeW50aGVzaXNDbGllbnRQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zM2IxZjNkMDAxZTRjNGViYmQ1ZmUzNTQxYTIxMjY5NDgwM2M1MzY3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbnQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjppZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWQ7Cit9CisKK1dlYlN0cmluZyBXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPnRleHQoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6bGFuZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFuZygpOworfQorCitX
ZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2ljZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+dm9pY2UoKSA/IFdlYlN0cmluZyhtX3ByaXZhdGUtPnZvaWNl
KCktPm5hbWUoKSkgOiBXZWJTdHJpbmcoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjp2b2x1bWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvbHVt
ZSgpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnJhdGUoKSBjb25z
dAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnJhdGUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+cGl0Y2goKTsKK30KKworZG91YmxlIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3Rh
cnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWUoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY5OTczY2Iz
ZDgwZWM3MjRmYTkyZGFkMGJkYTQ5M2UzYWUwYWU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkFsdGVy
bmF0aXZlLmgiCisjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJT
cGVlY2hTeW50aGVzaXNWb2ljZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9w
cml2YXRlOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjphc3NpZ24oY29uc3Qg
V2ViU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKK3sKKyAgICBtX3By
aXZhdGUgPSBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUodm9p
Y2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0KTsKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgp
OworfQorCitXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZWRjNGNhMjdjNDEzNDQxODhh
OWVhMGFhZTNjMDk0Y2E1YzAyYjdkYi4uODU4NDQ5YzIwOWRiNzc4NWUyYWM0ZjBmNzRkZDM2Yzc1
NDhhN2FkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApA
QCAtMTEwLDYgKzExMCw4IEBACiAjaW5jbHVkZSAiU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvbkNsaWVudFByb3h5LmgiCisjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzQ2xpZW50UHJv
eHkuaCIKKyNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0RmllbGRE
ZWNvcmF0b3JJbXBsLmgiCkBAIC00MzgsNiArNDQwLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJ
bXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQog
ICAgICwgbV9zcGVlY2hSZWNvZ25pdGlvbkNsaWVudChTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFBy
b3h5OjpjcmVhdGUoY2xpZW50ID8gY2xpZW50LT5zcGVlY2hSZWNvZ25pemVyKCkgOiAwKSkKICNl
bmRpZgorI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgICwgbV9zcGVlY2hTeW50aGVz
aXNDbGllbnQoU3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHk6OmNyZWF0ZShjbGllbnQgPyBjbGll
bnQtPnNwZWVjaFN5bnRoZXNpcygpIDogMCkpCisjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eShhZG9wdFB0cihuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94
eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgOiAwKSkpCiAgICAg
LCBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9uQ2xpZW50
UHJveHkoY2xpZW50ID8gY2xpZW50LT5nZW9sb2NhdGlvbkNsaWVudCgpIDogMCkpKQogI2lmIEVO
QUJMRShCQVRURVJZX1NUQVRVUykKQEAgLTQ4NCw2ICs0ODksOSBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVF
Q0gpCiAgICAgcHJvdmlkZVNwZWVjaFJlY29nbml0aW9uVG8obV9wYWdlLmdldCgpLCBtX3NwZWVj
aFJlY29nbml0aW9uQ2xpZW50LmdldCgpKTsKICNlbmRpZgorI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIHByb3ZpZGVTcGVlY2hTeW50aGVzaXNUbyhtX3BhZ2UuZ2V0KCksIG1fc3Bl
ZWNoU3ludGhlc2lzQ2xpZW50LmdldCgpKTsKKyNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAgICAgcHJvdmlkZU5vdGlmaWNh
dGlvbihtX3BhZ2UuZ2V0KCksIG5vdGlmaWNhdGlvblByZXNlbnRlckltcGwoKSk7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IGY0NTVmNDRhYzNk
NzQyMjc0ZTcyZTdjNTdmMjlmMjg2OGI2OTg4MDkuLjUwMDlkMzcxMGY5NjgxZmRlYTIwMzQyOGQx
MDZhOTU0OWE3ZjM3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aApAQCAtOTgsNiArOTgsNyBAQCBjbGFzcyBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiBjbGFz
cyBQcmVyZW5kZXJlckNsaWVudEltcGw7CiBjbGFzcyBTcGVlY2hJbnB1dENsaWVudEltcGw7CiBj
bGFzcyBTcGVlY2hSZWNvZ25pdGlvbkNsaWVudFByb3h5OworY2xhc3MgU3BlZWNoU3ludGhlc2lz
Q2xpZW50UHJveHk7CiBjbGFzcyBVc2VyTWVkaWFDbGllbnRJbXBsOwogY2xhc3MgVmFsaWRhdGlv
bk1lc3NhZ2VDbGllbnRJbXBsOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKQEAgLTg3
MCw2ICs4NzEsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAgICAg
T3duUHRyPFNwZWVjaFJlY29nbml0aW9uQ2xpZW50UHJveHk+IG1fc3BlZWNoUmVjb2duaXRpb25D
bGllbnQ7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBPd25QdHI8
U3BlZWNoU3ludGhlc2lzQ2xpZW50UHJveHk+IG1fc3BlZWNoU3ludGhlc2lzQ2xpZW50OworI2Vu
ZGlmCiAKICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VP
cmllbnRhdGlvbkNsaWVudFByb3h5OwogICAgIE93blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5
PiBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192957</attachid>
            <date>2013-03-13 12:03:57 -0700</date>
            <delta_ts>2013-03-15 15:25:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130313115954.patch</filename>
            <type>text/plain</type>
            <size>49076</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li44ODcwNGRmOTM2YzVhZmM3MDMxODNkMjRkODQ5
MzFmZWRiY2JiOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0wMy0xMyAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
UGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlU3BlZWNoU3ludGhl
c2lzKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNwZWVjaFN5bnRoZXNpcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpczo6fldlYlNwZWVjaFN5bnRoZXNpcyk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNwZWVjaFN5bnRoZXNpc0Rl
bGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGU6On5X
ZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZSk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dXR0ZXJhbmNl
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UpOgorCiAyMDEz
LTAzLTExICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIE1vdmUgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB0byBQbGF0Zm9ybS8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBmN2I5YjFkNTg0NzM2NjU0YTQ3YTNhZTkyMDc4MWJjYTMyMmVkZDI3Li4wZTc3NTU1
M2Y1YTU2Mzg5NDlmMTY4YzM0YzdkMDVhMjk0Mjk4NmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzggQEAKKzIwMTMtMDMtMTMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZvciBDaHJvbWl1bQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjk1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hT
eW50aGVzaXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93U3BlZWNoU3ludGhlc2lz
OjpzcGVlY2hTeW50aGVzaXMpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OlNwZWVjaFN5bnRoZXNpcyk6CisgICAg
ICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2U6On5T
cGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2lj
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3Bl
YWspOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cGF1c2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
RGVsZWdhdGVJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1wbDo6V2ViU3BlZWNoU3ludGhlc2lz
RGVsZWdhdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpc0RlbGVn
YXRlSW1wbDo6fldlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGw6OnNldFZvaWNlTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGw6OmRpZFN0YXJ0U3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBs
OjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVz
aXNEZWxlZ2F0ZUltcGw6OmRpZFBhdXNlU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsOjpkaWRSZXN1bWVTcGVha2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGw6OnNwZWFraW5nRXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUlt
cGw6OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3Bl
ZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGw6OnRyYWNr
VXR0ZXJhbmNlQW5kR2V0SWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGwpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjp2b2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
OjpwaXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c3RhcnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6YXNzaWduKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKwogMjAxMy0wMy0xMiAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXNvdXJj
ZVNjcmlwdEZpbGUgZGl2ZXJnZWQgc3RhdGUgc2hvdWxkIGJlIGNvcnJlY3RseSByZXNldCBhZnRl
ciBkZWJ1Z2dlciByZXNldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5n
eXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggMTIyZWVmOWI5NTU2YjM4
Zjk5NWUzYjNmYWJkNGE1OTZkYzgxZTI3Yy4uMzlkYTQxNTVmZDM2MmUyN2IwZTVlMWE4MTg5NTNm
NWI2NTU3NjU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysr
IGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTEyOSw2ICsxMjksMTAgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzLmgnLAorICAgICAg
ICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZS5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBmMmE5MTEzMzk4NjcwZTZmZmEzYWZmY2U0N2Fi
YjFmOTY3MTcyZmU1Li40Y2FiN2E0MDU1ZWMwNzRkNTEyMGRjMmZiNjAwODhjYTY1ZGEyYTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKKysr
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKICNpbmNsdWRlICJXZWJHcmFwaGljc0Nv
bnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmluZy5oIgorI2luY2x1ZGUgIldl
YlNwZWVjaFN5bnRoZXNpcy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldl
YlZlY3Rvci5oIgogCkBAIC02OSw2ICs3MCw3IEBAIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjsKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKIGNsYXNz
IFdlYlNhbmRib3hTdXBwb3J0OwogY2xhc3MgV2ViU29ja2V0U3RyZWFtSGFuZGxlOworY2xhc3Mg
V2ViU3BlZWNoU3ludGhlc2lzOwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdl
YlVuaXRUZXN0U3VwcG9ydDsKIGNsYXNzIFdlYlRoZW1lRW5naW5lOwpAQCAtMTE1LDYgKzExNyw4
IEBAIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdl
Ykh5cGhlbmF0b3IqIGh5cGhlbmF0b3IoKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBNYXkgcmV0
dXJuIG51bGwuCisgICAgdmlydHVhbCBXZWJTcGVlY2hTeW50aGVzaXMqIGNyZWF0ZVNwZWVjaFN5
bnRoZXNpcygpIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpcy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZjZWUyMTE2OGNhMGFlYzIyNWY1YmE1N2YwY2RhNjQyOTdiZGZmYzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpcy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5bnRo
ZXNpc19oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpc19oCisKKyNpbmNsdWRlICJXZWJDb21t
b24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc0Rl
bGVnYXRlOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJT
cGVlY2hTeW50aGVzaXMgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNwZWVjaFN5bnRoZXNp
cygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldERlbGVnYXRlKFdlYlNwZWVjaFN5bnRoZXNp
c0RlbGVnYXRlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZXN1bWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3lu
dGhlc2lzRGVsZWdhdGUuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoU3ludGhlc2lzRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2M5NGIzNjZlNjI3YWZkNGZiYmFi
OWI2MjA2M2M2NGRhMjQzZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlX2gKKyNkZWZpbmUg
V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVfaAorCisjaW5jbHVkZSAiLi4vLi4vLi4vUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXNEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2lz
RGVsZWdhdGUoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2ljZUxpc3QoY29uc3QgV2Vi
VmVjdG9yPFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYgdm9pY2VzKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGludCB1dHRlcmFuY2VJZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGludCB1dHRlcmFuY2VJZCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGludCB1dHRlcmFuY2VJZCwg
aW50IGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChpbnQgdXR0ZXJhbmNlSWQsIGludCBjaGFySW5kZXgpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWE2M2NlNTBiNTgwY2Zj
OWMxZGMzN2UxNmE0OWYyNTA1ODgxM2U0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTAs
MCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOyB9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworcHVibGljOgor
ICAgIGludCBpZCgpIGNvbnN0OworICAgIFdlYlN0cmluZyB0ZXh0KCkgY29uc3Q7CisgICAgV2Vi
U3RyaW5nIGxhbmcoKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgdm9pY2UoKSBjb25zdDsKKyAgICBm
bG9hdCB2b2x1bWUoKSBjb25zdDsKKyAgICBmbG9hdCByYXRlKCkgY29uc3Q7CisgICAgZmxvYXQg
cGl0Y2goKSBjb25zdDsKKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHUsIGludCB1dHRlcmFu
Y2VJZCkKKyAgICAgICAgOiBtX3ByaXZhdGUodSksIG1faWQodXR0ZXJhbmNlSWQpCisgICAgewor
ICAgIH0KKworICAgIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKiB1dHRlcmFuY2UoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGU7IH0KKyNlbmRpZgorCitw
cml2YXRlOgorICAgIC8vIE5vIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZGVmYXVsdCBjb25zdHJ1
Y3Rvci4gRGVjbGFyZWQgcHJpdmF0ZSB0byBlbnN1cmUgdGhhdCBubyBpbnN0YW5jZXMKKyAgICAv
LyBjYW4gYmUgY3JlYXRlZCBieSB0aGUgY29uc3VtZXJzIG9mIENocm9taXVtIFdlYktpdC4KKyAg
ICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3ByaXZhdGU7CisgICAgaW50IG1faWQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM2OWY0M2IyZWRi
OGIxMjQ1YjZjZjBjMmY2NzIwYjAwYzYwODc2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisj
ZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
IHsKK3B1YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikg
eyBhc3NpZ24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNl
dCgpOyB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlN0cmluZyYg
dm9pY2VVUkksIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBsYW5nLCBi
b29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UmKTsKKyAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVzZXQoKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIG9wZXJh
dG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
PigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVl
Y2hTeW50aGVzaXMuY3BwCmluZGV4IGNjYzk1OTNiMjIyNDY1NmIxYWU2ODIwODkxNWNkYzM1MmI0
MThlNzkuLmE5ZGViOTE3ZGI0OWI4NWUzNzc4MGRiNzNhNjhhNDM2OGZmMWRjYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNp
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNo
U3ludGhlc2lzLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTcyLDcgKzc0LDcgQEAgU3BlZWNoU3ludGhlc2lzKiBET01XaW5kb3dT
cGVlY2hTeW50aGVzaXM6OnNwZWVjaFN5bnRoZXNpcyhET01XaW5kb3cqIHdpbmRvdykKIFNwZWVj
aFN5bnRoZXNpcyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzOjpzcGVlY2hTeW50aGVzaXMoKQog
ewogICAgIGlmICghbV9zcGVlY2hTeW50aGVzaXMgJiYgZnJhbWUoKSkKLSAgICAgICAgbV9zcGVl
Y2hTeW50aGVzaXMgPSBTcGVlY2hTeW50aGVzaXM6OmNyZWF0ZSgpOworICAgICAgICBtX3NwZWVj
aFN5bnRoZXNpcyA9IFNwZWVjaFN5bnRoZXNpczo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCkp
OwogICAgIHJldHVybiBtX3NwZWVjaFN5bnRoZXNpcy5nZXQoKTsKIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IGM0
ZGZmNGU0OTcwZWY2ZDc4NDliNzRjNmU5ZTY5OGZjOWIyOTk4ZjcuLmIzYjhmZTUyZDBiMzFkY2Q3
YzNlNGE0ZjQ3OTNiYmJiOWE5MzkxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcApAQCAtMjgsMjAgKzI4LDIwIEBACiAKICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVz
aXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1QYXNz
UmVmUHRyPFNwZWVjaFN5bnRoZXNpcz4gU3BlZWNoU3ludGhlc2lzOjpjcmVhdGUoKQorUGFzc1Jl
ZlB0cjxTcGVlY2hTeW50aGVzaXM+IFNwZWVjaFN5bnRoZXNpczo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hT
eW50aGVzaXMoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hTeW50aGVzaXMoY29u
dGV4dCkpOwogfQogICAgIAotU3BlZWNoU3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoKQorU3Bl
ZWNoU3ludGhlc2lzOjpTcGVlY2hTeW50aGVzaXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKICAgICA6IG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnJlbnRTcGVlY2hVdHRlcmFuY2Uo
MCkKICAgICAsIG1faXNQYXVzZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oCmluZGV4IDNkYzlmYzJjYjkxOGE1NDFiNTdkZGI2YzRm
ZTc2ZTgwZmYzYzUzMTYuLjU3NDU3ZWI4Zjk4OGI4YjcwMmQzNTg2M2VkM2M2OGI1YmVhMmY0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5o
CkBAIC00MCwxMSArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2U7CiAgICAgCiBjbGFzcyBTcGVlY2hTeW50
aGVzaXMgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCwgcHVibGljIFJl
ZkNvdW50ZWQ8U3BlZWNoU3ludGhlc2lzPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3BlZWNoU3ludGhlc2lzPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVl
Y2hTeW50aGVzaXM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgCiAgICAg
Ym9vbCBwZW5kaW5nKCkgY29uc3Q7CiAgICAgYm9vbCBzcGVha2luZygpIGNvbnN0OwpAQCAtNjEs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQbGF0Zm9ybVN5bnRoZXNpemVyKFBhc3NP
d25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4pOwogICAgIAogcHJpdmF0ZToKLSAgICBT
cGVlY2hTeW50aGVzaXMoKTsKKyAgICBTcGVlY2hTeW50aGVzaXMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIAogICAgIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgb3Zl
cnJpZGUgbWV0aG9kcy4KICAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgT1ZFUlJJ
REU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
LmlkbAppbmRleCBhMTI1Yjk1ZjI3OTBjYWJmYjUwMDQ4ZjBhZTMxMmNiN2M4NzQ4ZDQyLi4zZTA2
ZjViNGU3ZDA1ODYyYWE1MGU4ZjM5YWMwNTlkYzlkY2U0MDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5pZGwKQEAgLTIyLDkgKzIyLDEw
IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCi0gCisKIFsKLSAgICBD
b25kaXRpb25hbD1TUEVFQ0hfU1lOVEhFU0lTCisgICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRI
RVNJUywKKyAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0CiBdIGludGVyZmFjZSBT
cGVlY2hTeW50aGVzaXMgIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBwZW5kaW5n
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHNwZWFraW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXgg
ZjBmMjQzZDMwYjQ2ZjBkNjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTlj
YjVhZmNiM2U0Y2Y0NTE0ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwg
flNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNo
U3ludGhlc2lzVm9pY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+KTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybVZvaWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGQ1
ZjJiZTNjYzc3MDgzN2ZiOTQxYzI0ZWE4NzFmMDJhNmJjMjZmOC4uZDYxMzQ1MGUxZjE2Mzg0MTEy
MzJhOWZkNGE5NGQ5YTM0NjkxN2E1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTgzLDcgKzk4Myw2
IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcs
Ci0gICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvY2hyb21pdW0vU3BlZWNoU3ludGhlc2lzQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlLmNwcCcsCkBAIC0zNjgxLDYgKzM2ODAsMTIgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
UGxhdGZvcm1Ub3VjaEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91
Y2hQb2ludC5oJywKQEAgLTM4NTYsNiArMzg2MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lk
Z2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBA
IC03NDIzLDYgKzc0MjksMTAgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJJbXBsLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGwu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUaHJlYWRTYWZl
RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJh
bnNmb3JtS2V5ZnJhbWUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5
NDg5N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi5iNjNmNGRjNzk5MTk2NDc3ZTExNjVhYTRlZGYwZDE0
YTBjNTk4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIApAQCAtMzgsMTUgKzQwLDE2IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlOwog
ICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiBjcmVhdGUoU3BlZWNoU3ludGhlc2lzKik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IGNyZWF0ZShTcGVlY2hT
eW50aGVzaXMqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2lj
ZT4gPiYpOwogICAgIHZvaWQgcGxhdGZvcm1TcGVhayhTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
KTsKICAgICAKIHByaXZhdGU6Ci0gICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3lu
dGhlc2lzKik7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVj
aFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIyZDJmM2JkMGVlNjRlMDQ3Nzlm
NDNhNjY5NTQxMDM5Li43NDUzZDhmNGE1YjBkYmM2YjAzZjNmMDQ0MDYxNWMzMDBmZDgyZDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IGxhbmcoKSBjb25zdCB7IHJldHVybiBtX2xhbmc7IH0KICAgICBib29sIGxvY2FsU2VydmljZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTZXJ2aWNlOyB9CiAgICAgYm9vbCBpc0RlZmF1bHQoKSBj
b25zdCB7IHJldHVybiBtX2RlZmF1bHQ7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0Rl
ZmF1bHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIuY3BwCmluZGV4IDY2MTIzZDVhZjExY2FiYjBlY2UzZWFhNGM2MjA3MTc1
YWE2MWU2ZjcuLjQxOGVlNzEzOWI0YWUyZDM4NWQxNTA4ZWM3OWI5ODZkNjk0MDZhMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKQEAgLTM1LDEyICsz
Niw2IEBAIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3JtCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xp
ZW50KQotewotICAgIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKLX0KLSAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmlu
ZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2YTQ2YzI5ZjI5N2RiYzAwZjYuLmY5YjJhZGNmNTQ3
NWI5ODM3NTdlNzBmY2RmMWY2ZDgyMzllYWVkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBA
CiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXM7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZTsKK30KKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gU3BlZWNoQm91bmRhcnkgewpAQCAtNDUsNiArNTIs
NyBAQCBlbnVtIFNwZWVjaEJvdW5kYXJ5IHsKIH07CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3Mg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCB7CiBwdWJsaWM6CkBAIC02Myw3ICs3MSw3
IEBAIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyKCkgeyB9CisgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigp
OwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gPiYgdm9pY2VMaXN0KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
KTsKQEAgLTcyLDE4ICs4MCwyNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
OwogICAgIAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KLSAgICAKKworICAgIHZv
aWQgc2V0Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZT4gPiYpOworCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxp
c3QoKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+ID4gbV92b2ljZUxpc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7Ci0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKICAgICAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+IG1fcGxhdGZv
cm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3du
UHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzPiBtX3dlYlNwZWVjaFN5bnRoZXNpczsKKyAg
ICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZT4gbV93ZWJTcGVlY2hT
eW50aGVzaXNEZWxlZ2F0ZTsKKyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU0YmFkOGJlMTczYTMwODJlOWZlM2M2ZjE5YzJjYTAyMGY1OGRjMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJT
cGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50aGVz
aXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXMgPSBhZG9wdFB0
cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVNwZWVjaFN5bnRoZXNpcygpKTsK
KyAgICBtX3dlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlID0gYWRvcHRQdHIobmV3IFdlYlNwZWVj
aFN5bnRoZXNpc0RlbGVnYXRlSW1wbCh0aGlzLCBjbGllbnQpKTsKKyAgICBtX3dlYlNwZWVjaFN5
bnRoZXNpcy0+c2V0RGVsZWdhdGUobV93ZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZS5nZXQoKSk7
CisKKyAgICBpbml0aWFsaXplVm9pY2VMaXN0KCk7Cit9CisKK1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKK3sKK30KKwordm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKK3sKKyAgICBpZiAobV93
ZWJTcGVlY2hTeW50aGVzaXMpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2lzLT5pbml0aWFs
aXplVm9pY2VMaXN0KCk7Cit9CisgICAgCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2Up
Cit7CisgICAgaWYgKCFtX3dlYlNwZWVjaFN5bnRoZXNpcyB8fCAhbV93ZWJTcGVlY2hTeW50aGVz
aXNEZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHV0dGVyYW5jZUlkID0gc3Rh
dGljX2Nhc3Q8V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsKj4obV93ZWJTcGVlY2hTeW50
aGVzaXNEZWxlZ2F0ZS5nZXQoKSktPnRyYWNrVXR0ZXJhbmNlQW5kR2V0SWQoJnV0dGVyYW5jZSk7
CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXMtPnNwZWFrKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKCZ1dHRlcmFuY2UsIHV0dGVyYW5jZUlkKSk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcjo6cGF1c2UoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRo
ZXNpcykKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXMtPnBhdXNlKCk7Cit9CisKK3ZvaWQg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKK3sKKyAgICBpZiAobV93ZWJTcGVl
Y2hTeW50aGVzaXMpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2lzLT5yZXN1bWUoKTsKK30K
Kwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlmICht
X3dlYlNwZWVjaFN5bnRoZXNpcykKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXMtPmNhbmNl
bCgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNlTGlzdChW
ZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZvaWNlcykKK3sK
KyAgICBtX3ZvaWNlTGlzdCA9IHZvaWNlczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc0RlbGVn
YXRlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJkZDZkMzVkMGUy
NGZiZDFlZTUxNjEyYTVhNjgwZjgxZmRkMDBmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdh
dGVJbXBsLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGwuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitpbnQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsOjpzX25l
eHRVdHRlcmFuY2VJZCA9IDE7CisKK1dlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1wbDo6V2Vi
U3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5
bnRoZXNpemVyLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX3N5bnRoZXNpemVyKHN5bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorewor
fQorCitXZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUltcGw6On5XZWJTcGVlY2hTeW50aGVzaXNE
ZWxlZ2F0ZUltcGwoKQoreworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1w
bDo6c2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
PiA+IG91dFZvaWNlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZvaWNlcy5zaXplKCk7
IGkrKykKKyAgICAgICAgb3V0Vm9pY2VzLmFwcGVuZChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tpXSkpOworICAgIG1fc3ludGhlc2l6ZXIt
PnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAgIG1fY2xpZW50LT52b2ljZXNEaWRDaGFuZ2Uo
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc0RlbGVnYXRlSW1wbDo6ZGlk
U3RhcnRTcGVha2luZyhpbnQgdXR0ZXJhbmNlSWQpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCisgICAgaWYgKCFtX3V0dGVyYW5jZXMuY29udGFpbnModXR0ZXJhbmNlSWQpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5j
ZXMuZ2V0KHV0dGVyYW5jZUlkKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVz
aXNEZWxlZ2F0ZUltcGw6OmRpZEZpbmlzaFNwZWFraW5nKGludCB1dHRlcmFuY2VJZCkKK3sKKyNp
ZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBpZiAoIW1fdXR0ZXJhbmNlcy5jb250YWlu
cyh1dHRlcmFuY2VJZCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRGaW5p
c2hTcGVha2luZyhtX3V0dGVyYW5jZXMuZ2V0KHV0dGVyYW5jZUlkKSk7CisgICAgbV91dHRlcmFu
Y2VzLnJlbW92ZSh1dHRlcmFuY2VJZCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50
aGVzaXNEZWxlZ2F0ZUltcGw6OmRpZFBhdXNlU3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKQorewor
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRh
aW5zKHV0dGVyYW5jZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRpZFBh
dXNlU3BlYWtpbmcobV91dHRlcmFuY2VzLmdldCh1dHRlcmFuY2VJZCkpOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsOjpkaWRSZXN1bWVTcGVha2luZyhp
bnQgdXR0ZXJhbmNlSWQpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgaWYg
KCFtX3V0dGVyYW5jZXMuY29udGFpbnModXR0ZXJhbmNlSWQpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2NsaWVudC0+ZGlkUmVzdW1lU3BlYWtpbmcobV91dHRlcmFuY2VzLmdldCh1dHRlcmFu
Y2VJZCkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBs
OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoaW50IHV0dGVyYW5jZUlkKQoreworI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQorICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRhaW5zKHV0dGVyYW5j
ZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPnNwZWFraW5nRXJyb3JPY2N1
cnJlZChtX3V0dGVyYW5jZXMuZ2V0KHV0dGVyYW5jZUlkKSk7CisgICAgbV91dHRlcmFuY2VzLnJl
bW92ZSh1dHRlcmFuY2VJZCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNE
ZWxlZ2F0ZUltcGw6OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoaW50IHV0dGVyYW5jZUlkLCBp
bnQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIGlmICgh
bV91dHRlcmFuY2VzLmNvbnRhaW5zKHV0dGVyYW5jZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jbGllbnQtPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5jZXMuZ2V0KHV0dGVy
YW5jZUlkKSwgU3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChpbnQgdXR0ZXJhbmNlSWQsIGludCBjaGFySW5kZXgpCit7CisjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpIAorICAgIGlmICghbV91dHRlcmFuY2VzLmNvbnRhaW5zKHV0dGVyYW5j
ZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmJvdW5kYXJ5RXZlbnRPY2N1
cnJlZChtX3V0dGVyYW5jZXMuZ2V0KHV0dGVyYW5jZUlkKSwgU3BlZWNoU2VudGVuY2VCb3VuZGFy
eSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQorCitpbnQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdh
dGVJbXBsOjp0cmFja1V0dGVyYW5jZUFuZEdldElkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit7CisgICAgaW50IGlkID0gc19uZXh0VXR0ZXJhbmNl
SWQrKzsKKyAgICBtX3V0dGVyYW5jZXMuYWRkKGlkLCB1dHRlcmFuY2UpOworICAgIHJldHVybiBp
ZDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNEZWxlZ2F0ZUlt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNo
U3ludGhlc2lzRGVsZWdhdGVJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA0ZWY1ZDM1ZDU2N2QwNWZkMzJh
YTRjM2RiZDc2MzE0MmU0ODMzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsLmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2lzRGVs
ZWdhdGVJbXBsX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsX2gKKwor
I2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXNEZWxlZ2F0ZUltcGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNEZWxl
Z2F0ZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJ
bXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9y
PFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaFNwZWFraW5nKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFBhdXNlU3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dW1lU3BlYWtpbmcoaW50IHV0dGVyYW5jZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdF
cnJvck9jY3VycmVkKGludCB1dHRlcmFuY2VJZCk7CisgICAgdmlydHVhbCB2b2lkIHdvcmRCb3Vu
ZGFyeUV2ZW50T2NjdXJyZWQoaW50IHV0dGVyYW5jZUlkLCBpbnQgY2hhckluZGV4KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoaW50IHV0dGVyYW5jZUlk
LCBpbnQgY2hhckluZGV4KTsKKworICAgIGludCB0cmFja1V0dGVyYW5jZUFuZEdldElkKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik7CisKK3ByaXZhdGU6CisgICAgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplciogbV9zeW50aGVzaXplcjsKKyAgICBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50KiBtX2NsaWVudDsKKworICAgIHN0YXRpYyBpbnQgc19uZXh0VXR0
ZXJhbmNlSWQ7CisgICAgSGFzaE1hcDxpbnQsIGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKj4gbV91dHRlcmFuY2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzRGVsZWdhdGVJbXBsX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODJlMTgyNmI2
NjM2YThiODRhZjI3NDJjNTlhN2VjMzUzYTQyNDllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorCisjaW5jbHVk
ZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2ludCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmlkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pZDsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dGV4dCgpOworfQorCitX
ZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT5sYW5nKCk7Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnZvaWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52
b2ljZSgpID8gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+dm9pY2UoKS0+bmFtZSgpKSA6IFdlYlN0cmlu
ZygpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dm9sdW1lKCk7Cit9CisKK2Zsb2F0IFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cmF0ZSgpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnBp
dGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5waXRjaCgpOworfQorCitkb3Vi
bGUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzdGFydFRpbWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTUxNzc1YWNmMzQ0YTQ3MmVjZmEw
MWVlNDlkOTM2ZWM2NmI4MjA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKQEAgLTAs
MCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaD4KKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0
aW9uQWx0ZXJuYXRpdmUuaCIKKyNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjphc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9p
ZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6YXNzaWduKGNvbnN0IFdlYlN0cmluZyYgdm9pY2VV
UkksIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBsYW5nLCBib29sIGxv
Y2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCit7CisgICAgbV9wcml2YXRlID0gV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKHZvaWNlVVJJLCBuYW1lLCBsYW5n
LCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
Vm9pY2U6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDcwOTRmYTM1MzgyMmU4NzQ1ZTQ2
ZTM0ZGRiZjM3Yzc0YjBlYTUxNTUuLmViOTJkZDQ5ODY3MzI2ZjNmYjlmNDAwOGEzM2QxNjA3OGE2
ZjRiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0xODgsNiArMTg4LDE2IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQp
CisgICAgOiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50KGNsaWVudCkKK3sKKyAgICBpbml0aWFs
aXplVm9pY2VMaXN0KCk7Cit9CisKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKCkKK3sKK30KKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKIHsKICAgICBOU1N0cmluZyAqZGVmYXVsdFZvaWNl
VVJJID0gW05TU3BlZWNoU3ludGhlc2l6ZXIgZGVmYXVsdFZvaWNlXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vZmVhdHVyZXMuZ3lwaQppbmRleCBkMzc3ZjY5ODI3NDUxYzI2YWU3NGVjYWNhMmEwNWExZDBl
YmIxNTE3Li5hNTQxZWFlZmIwMmUzMWE5ODQ3NDM5NDI4ZjdlOGIxY2FkNjA0ODBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAgICdF
TkFCTEVfU0NSSVBURURfU1BFRUNIPTEnLAogICAgICAgJ0VOQUJMRV9TSEFET1dfRE9NPTEnLAog
ICAgICAgJ0VOQUJMRV9TTU9PVEhfU0NST0xMSU5HPTEnLAotICAgICAgJ0VOQUJMRV9TUEVFQ0hf
U1lOVEhFU0lTPTAnLAorICAgICAgJ0VOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTPTEnLAogICAgICAg
J0VOQUJMRV9TUUxfREFUQUJBU0U9PChlbmFibGVfc3FsX2RhdGFiYXNlKScsCiAgICAgICAnRU5B
QkxFX1NUWUxFX1NDT1BFRD0xJywKICAgICAgICdFTkFCTEVfU1VCUElYRUxfTEFZT1VUPTEnLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193382</attachid>
            <date>2013-03-15 15:26:01 -0700</date>
            <delta_ts>2013-03-16 00:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130315152156.patch</filename>
            <type>text/plain</type>
            <size>71542</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li44MzQ4MDJjOWZlOTE5NDQ4ZjBiMGM0YzI4N2Y1
ZTg2MmM1NjA0NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMy0wMy0xNSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
UGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRlU3BlZWNoU3ludGhl
c2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9y
PSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6aXNOdWxs
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDo6fldlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xMSAgTWFyayBQaWxncmltICA8cGlsZ3Jp
bUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MgdG8gUGxhdGZvcm0vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1NGE0N2Ez
YWU5MjA3ODFiY2EzMjJlZGQyNy4uNzdhOGY3NmU2MmQ1YWI1ZWJlOTI2NGUwZWUxYmFkOTIxNzAy
ZDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxMy0wMy0xNSAgRG9taW5pYyBN
YXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViIFNw
ZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OnNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpczo6U3BlZWNoU3ludGhlc2lzKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
czo6Ym91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpczo6ZGlkU3RhcnRTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXM6OmRpZFBhdXNlU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
OjpkaWRSZXN1bWVTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6
OmRpZEZpbmlzaFNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6
c3BlYWtpbmdFcnJvck9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTcGVlY2hTeW50aGVzaXMpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5pZGw6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OmxhbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpz
ZXRMYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9s
dW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9s
dW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFBpdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0U3RhcnRUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGxhdGZvcm1VdHRlcmFu
Y2UpOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoU3ludGhlc2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmg6
CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3Jl
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldENsaWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAgIChQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCk6CisgICAgICAgIChQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c2V0Vm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2U6OnNldElzRGVmYXVsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2lj
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpz
cGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2
ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKToKKwogMjAxMy0wMy0xMiAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXNvdXJjZVNjcmlwdEZpbGUgZGl2ZXJn
ZWQgc3RhdGUgc2hvdWxkIGJlIGNvcnJlY3RseSByZXNldCBhZnRlciBkZWJ1Z2dlciByZXNldC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmY4MmI2OGExZjY0N2VhNDRkYTU5ZDA0NzAz
MTFjYzcwODNjZTY0MS4uMjliYWE1ZTBiMGFjY2ZjM2NjMTFhMTljYjdjODFiNTVhNDBiMjQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wMy0xNSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZlYXR1cmVzLmd5cGk6CisKIDIwMTMtMDMt
MTEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDU0NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmluZGV4
IDEyMmVlZjliOTU1NmIzOGY5OTVlM2IzZmFiZDRhNTk2ZGM4MWUyN2MuLjQ1OTk0MTQzYmU5M2M4
Y2VkZDY1MTRlY2QzODAxMWJiZDBjZDliZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC0xMjks
NiArMTI5LDEwIEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVh
bUhhbmRsZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENv
bG9yTGF5ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpemVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3Rv
cmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1l
c3BhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBmMmE5MTEzMzk4
NjcwZTZmZmEzYWZmY2U0N2FiYjFmOTY3MTcyZmU1Li44MDZjYzYwODI1MzAxYzE1ZTk3MTI0NDc4
MGU2ZGM5Yjc2MGQzNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0
Zm9ybS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKICNpbmNs
dWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyLmgiCiAjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKQEAgLTY5LDYgKzcwLDggQEAgY2xhc3Mg
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50OwogY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQ7CiBjbGFzcyBXZWJTb2NrZXRT
dHJlYW1IYW5kbGU7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50OwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNzIFdl
YlVuaXRUZXN0U3VwcG9ydDsKIGNsYXNzIFdlYlRoZW1lRW5naW5lOwpAQCAtMTE1LDYgKzExOCw4
IEBAIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFsIFdl
Ykh5cGhlbmF0b3IqIGh5cGhlbmF0b3IoKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBNYXkgcmV0
dXJuIG51bGwuCisgICAgdmlydHVhbCBXZWJTcGVlY2hTeW50aGVzaXplciogY3JlYXRlU3BlZWNo
U3ludGhlc2l6ZXIoV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAK
ICAgICAvLyBBdWRpbyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNjUxNmNlM2JjNzViZmFmZDE3MzU3YjgwMjU0NDAzMjQxOTZlODZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2VfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Vf
aAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworcHVibGljOgorICAgIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKSB7IGFzc2lnbihvdGhl
cik7IH0KKyAgICB+V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyByZXNldCgpOyB9CisK
KyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShjb25zdCBXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90aGVy
KTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHZvaWQgYXNzaWduKGNvbnN0
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZvaWQgcmVzZXQoKTsKKyAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAg
V2ViU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgbGFuZygpIGNvbnN0OworICAg
IFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6
Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gtYXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAor
ICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OyAvLyAwLi4uMSwgMSBpcyBkZWZhdWx0CisgICAgZmxv
YXQgcmF0ZSgpIGNvbnN0OyAvLyAwLjEuLi4xMCwgMSBpcyBkZWZhdWx0CisgICAgZmxvYXQgcGl0
Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisgICAgZG91YmxlIHN0YXJ0VGlt
ZSgpIGNvbnN0OyAvLyBJbiBzZWNvbmRzLgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+Jik7CisgICAgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJiBvcGVyYXRvcj0oV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZkNWExNjEzYzBhYjdjNTJhNzc2ZWM4MmNhNjQyNDZhZmE2YTJmMzUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2VfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
cGVlY2hTeW50aGVzaXNWb2ljZSB7CitwdWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UoKSB7IH0KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBXZWJTcGVlY2hTeW50
aGVzaXNWb2ljZSYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50
aGVzaXNWb2ljZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2Um
IG9wZXJhdG9yPShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZSYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworCisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFZvaWNlVVJJKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRMYW5ndWFnZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
SXNMb2NhbFNlcnZpY2UoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldElzRGVmYXVs
dChib29sKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPigpIGNvbnN0
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YzBmOTY1YzQxNWNhNDk1ODc5NTI2ZGIwMjMzMjZlMWYzNjU2ZDY4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXplci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5
bnRoZXNpemVyX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorCisjaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudDsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsKKworY2xh
c3MgV2ViU3BlZWNoU3ludGhlc2l6ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNwZWVj
aFN5bnRoZXNpemVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVm9pY2VMaXN0KCkg
PSAwOworCisgICAgLy8gT0sgdG8gY2FsbCB3aXRoIG1vcmUgdGhhbiBvbmUgdXR0ZXJhbmNlLCB3
aWxsIHF1ZXVlLgorICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlc3VtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50
aGVzaXplcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ3MDcyN2E0OWIx
ZDA1ZmFjYThmY2JjNGY3ZjMwYjQ4YjJlN2I1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudF9o
CisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRW
b2ljZUxpc3QoY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXN1bWVTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3Vy
cmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgd29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmLCBpbnQgY2hhckluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbnRlbmNl
Qm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYs
IGludCBjaGFySW5kZXgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5k
ZXggY2NjOTU5M2IyMjI0NjU2YjFhZTY4MjA4OTE1Y2RjMzUyYjQxOGU3OS4uYTlkZWI5MTdkYjQ5
Yjg1ZTM3NzgwZGI3M2E2OGE0MzY4ZmYxZGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0z
NCw2ICszNCw4IEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzIs
NyArNzQsNyBAQCBTcGVlY2hTeW50aGVzaXMqIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczo6c3Bl
ZWNoU3ludGhlc2lzKERPTVdpbmRvdyogd2luZG93KQogU3BlZWNoU3ludGhlc2lzKiBET01XaW5k
b3dTcGVlY2hTeW50aGVzaXM6OnNwZWVjaFN5bnRoZXNpcygpCiB7CiAgICAgaWYgKCFtX3NwZWVj
aFN5bnRoZXNpcyAmJiBmcmFtZSgpKQotICAgICAgICBtX3NwZWVjaFN5bnRoZXNpcyA9IFNwZWVj
aFN5bnRoZXNpczo6Y3JlYXRlKCk7CisgICAgICAgIG1fc3BlZWNoU3ludGhlc2lzID0gU3BlZWNo
U3ludGhlc2lzOjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIG1fc3Bl
ZWNoU3ludGhlc2lzLmdldCgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3
NGM2ZTllNjk4ZmM5YjI5OThmNy4uNGU3MmExMzg5ZWNhZjgzYjc1Mjk1NzQ3OTEzMjYwNmYzOGU0
ZWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuY3BwCkBAIC0yOCwyMCArMjgsMjAgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCi0jaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5oIgogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc0V2ZW50LmgiCiAjaW5jbHVk
ZSAiU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVBhc3NSZWZQdHI8U3BlZWNoU3ludGhl
c2lzPiBTcGVlY2hTeW50aGVzaXM6OmNyZWF0ZSgpCitQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNp
cz4gU3BlZWNoU3ludGhlc2lzOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaFN5bnRoZXNpcygpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNwZWVjaFN5bnRoZXNpcyhjb250ZXh0KSk7CiB9CiAgICAgCi1T
cGVlY2hTeW50aGVzaXM6OlNwZWVjaFN5bnRoZXNpcygpCitTcGVlY2hTeW50aGVzaXM6OlNwZWVj
aFN5bnRoZXNpcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogbV9wbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSh0
aGlzKSkKICAgICAsIG1fY3VycmVudFNwZWVjaFV0dGVyYW5jZSgwKQogICAgICwgbV9pc1BhdXNl
ZChmYWxzZSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxl
U3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAg
IH0KIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQo
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSwgU3BlZWNo
Qm91bmRhcnkgYm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKK3ZvaWQgU3BlZWNoU3ludGhl
c2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB3
b3JkQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIndvcmQiKSkpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJzZW50ZW5jZSIpKSk7CkBAIC0xNjksMzMgKzE2OSwzOCBAQCB2b2lkIFNwZWVjaFN5
bnRoZXNpczo6Ym91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbgogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3Bl
YWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkK
K3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBmaXJlRXZlbnQo
ZXZlbnROYW1lcygpLnN0YXJ0RXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CisgICAgaWYgKHV0dGVy
YW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3RhcnRFdmVu
dCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGll
bnQoKSksIDAsIFN0cmluZygpKTsKIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRQ
YXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRl
cmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgbV9p
c1BhdXNlZCA9IHRydWU7Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBz
dGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgp
KSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVudCgpKQorICAgICAgICBm
aXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CiB9CiAK
LXZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50aGVzaXM6
OmRpZFJlc3VtZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gZmFsc2U7Ci0gICAgZmlyZUV2
ZW50KGV2ZW50TmFtZXMoKS5yZXN1bWVFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAo
dXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5yZXN1
bWVFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRp
ZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1
dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmcoUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAg
IGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+
Y2xpZW50KCkpCisgICAgICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CiB9
CiAgICAgCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVj
aFN5bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBoYW5kbGVTcGVha2luZ0Nv
bXBsZXRlZChzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2Ut
PmNsaWVudCgpKSwgdHJ1ZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAg
IGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVlKTsKIH0KLSAgICAKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggM2RjOWZj
MmNiOTE4YTU0MWI1N2RkYjZjNGZlNzZlODBmZjNjNTMxNi4uZTJjNWM3NzFiMGUxMTY3ZWVkMjM4
MzU1YmJlMTVkZDA0ZTNjMDM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmgKQEAgLTQwLDExICs0MCwxMiBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudDsKK2NsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTcGVlY2hTeW50aGVzaXNWb2ljZTsKICAg
ICAKIGNsYXNzIFNwZWVjaFN5bnRoZXNpcyA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXM+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXM+IGNyZWF0ZSgpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpcz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKICAgICAKICAgICBib29sIHBlbmRpbmcoKSBjb25zdDsKICAgICBib29sIHNwZWFr
aW5nKCkgY29uc3Q7CkBAIC02MSwxNiArNjIsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGxh
dGZvcm1TeW50aGVzaXplcihQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+KTsK
ICAgICAKIHByaXZhdGU6Ci0gICAgU3BlZWNoU3ludGhlc2lzKCk7CisgICAgU3BlZWNoU3ludGhl
c2lzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICAKICAgICAvLyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50IG92ZXJyaWRlIG1ldGhvZHMuCiAgICAgdmlydHVhbCB2b2lkIHZv
aWNlc0RpZENoYW5nZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFr
aW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3Bl
YWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdF
cnJvck9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSosIFNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBj
aGFySW5kZXgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKFBh
c3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50
T2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4sIFNw
ZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpIE9WRVJSSURFOwogCiAgICAgdm9pZCBz
dGFydFNwZWFraW5nSW1tZWRpYXRlbHkoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik7CiAgICAg
dm9pZCBoYW5kbGVTcGVha2luZ0NvbXBsZXRlZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBi
b29sIGVycm9yT2NjdXJyZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5pZGwKaW5kZXggYTEyNWI5NWYyNzkwY2FiZmI1MDA0OGYwYWUzMTJj
YjdjODc0OGQ0Mi4uM2UwNmY1YjRlN2QwNTg2MmFhNTBlOGYzOWFjMDU5ZGM5ZGNlNDA3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaWRs
CkBAIC0yMiw5ICsyMiwxMCBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAq
LwotIAorCiBbCi0gICAgQ29uZGl0aW9uYWw9U1BFRUNIX1NZTlRIRVNJUworICAgIENvbmRpdGlv
bmFsPVNQRUVDSF9TWU5USEVTSVMsCisgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dAogXSBpbnRlcmZhY2UgU3BlZWNoU3ludGhlc2lzICB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gcGVuZGluZzsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzcGVha2lu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0MTJlNmE1Y2FjZDY5MDViN2RkZjM5
NTI1MjFkOGFkODAuLmJjNTUyM2U1ZDE1OWNkM2E3YjZkYTRmODMzNDVhM2RlNWY3YWU0NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsOSBAQCBQYXNzUmVmUHRyPFNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0
RXhlYwogCiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAg
ICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgICwgbV9wbGF0Zm9y
bVV0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSh0aGlzKSkKKyAgICAs
IG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNy
ZWF0ZSh0aGlzKSkKIHsKLSAgICBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFRleHQodGV4dCk7Cisg
ICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KICAgICAKIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSogdm9pY2UpCiAgICAgbV92b2lj
ZSA9IHZvaWNlOwogICAgIAogICAgIGlmICh2b2ljZSkKLSAgICAgICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsKKyAgICAgICAgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0Vm9pY2Uodm9pY2UtPnBsYXRmb3JtVm9pY2UoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggMjliZmRjNGE0MzQzMDVkZGYy
ZTZhOTY5ZjQxMGQwYzM3MWQ3N2YzOS4uODJmODk2N2U5ZjE3MjAxYTkwNmNjMDIwNmY5YmY5ZmQ2
OTg2ODIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTQxLDI2ICs0MSwyNiBAQCBjbGFzcyBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2VDbGllbnQsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwogICAgIAotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UudGV4dCgpOyB9Ci0gICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFRleHQodGV4dCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7
IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFRleHQodGV4dCk7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9pZCBzZXRMYW5n
KGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExhbmcobGFuZyk7
IH0KKyAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLT5sYW5nKCk7IH0KKyAgICB2b2lkIHNldExhbmcoY29uc3QgU3RyaW5nJiBsYW5nKSB7
IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldExhbmcobGFuZyk7IH0KIAogICAgIFNwZWVjaFN5bnRo
ZXNpc1ZvaWNlKiB2b2ljZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0Vm9pY2UoU3BlZWNoU3ludGhl
c2lzVm9pY2UqKTsKIAotICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1VdHRlcmFuY2Uudm9sdW1lKCk7IH0KLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCB2b2x1bWUp
IHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRWb2x1bWUodm9sdW1lKTsgfQorICAgIGZsb2F0IHZv
bHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnZvbHVtZSgpOyB9Cisg
ICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNl
dFZvbHVtZSh2b2x1bWUpOyB9CiAKLSAgICBmbG9hdCByYXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVV0dGVyYW5jZS5yYXRlKCk7IH0KLSAgICB2b2lkIHNldFJhdGUoZmxvYXQgcmF0ZSkg
eyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFJhdGUocmF0ZSk7IH0KKyAgICBmbG9hdCByYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+cmF0ZSgpOyB9CisgICAgdm9pZCBz
ZXRSYXRlKGZsb2F0IHJhdGUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0UmF0ZShyYXRlKTsg
fQogCi0gICAgZmxvYXQgcGl0Y2goKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNl
LnBpdGNoKCk7IH0KLSAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNoKSB7IG1fcGxhdGZvcm1V
dHRlcmFuY2Uuc2V0UGl0Y2gocGl0Y2gpOyB9CisgICAgZmxvYXQgcGl0Y2goKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5waXRjaCgpOyB9CisgICAgdm9pZCBzZXRQaXRjaChm
bG9hdCBwaXRjaCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRQaXRjaChwaXRjaCk7IH0KIAot
ICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNl
LnN0YXJ0VGltZSgpOyB9Ci0gICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkg
eyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CisgICAgZG91
YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnN0YXJ0
VGltZSgpOyB9CisgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQogICAgIAogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoc3RhcnQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoZW5kKTsKQEAgLTc1LDExICs3NSwxMSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKIAotICAgIGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBw
bGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2U7IH0K
KyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBwbGF0Zm9y
bVV0dGVyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2U7IH0KIAogcHJp
dmF0ZToKICAgICBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
IG1fcGxhdGZvcm1VdHRlcmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVz
aXNWb2ljZT4gbV92b2ljZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXgg
ZjBmMjQzZDMwYjQ2ZjBkNjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTlj
YjVhZmNiM2U0Y2Y0NTE0ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMg
UmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwg
flNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNo
U3ludGhlc2lzVm9pY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+KTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybVZvaWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNGQ1
ZjJiZTNjYzc3MDgzN2ZiOTQxYzI0ZWE4NzFmMDJhNmJjMjZmOC4uMjZiZWU4ZjE3Y2JmMTVkNmEw
ODA0Y2IwNmJmZTkyYTc1NTkyYzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTgzLDcgKzk4Myw2
IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcs
Ci0gICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvY2hyb21pdW0vU3BlZWNoU3ludGhlc2lzQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNw
ZWN0b3JOb2RlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlLmNwcCcsCkBAIC0zNjgxLDYgKzM2ODAsMTIgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9QbGF0Zm9ybU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
UGxhdGZvcm1Ub3VjaEV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91
Y2hQb2ludC5oJywKQEAgLTM4NTYsNiArMzg2MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vUGxhdGZvcm1TY3JlZW5DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lk
Z2V0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBA
IC03NDIzLDYgKzc0MjksMTAgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJJbXBsLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmNwcCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUaHJlYWRTYWZl
RGF0YS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJh
bnNmb3JtS2V5ZnJhbWUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5
NDg5N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi5iNjNmNGRjNzk5MTk2NDc3ZTExNjVhYTRlZGYwZDE0
YTBjNTk4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIApAQCAtMzgsMTUgKzQwLDE2IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlOwog
ICAgIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpcz4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzPiBjcmVhdGUoU3BlZWNoU3ludGhlc2lzKik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXM+IGNyZWF0ZShTcGVlY2hT
eW50aGVzaXMqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgCiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2lj
ZT4gPiYpOwogICAgIHZvaWQgcGxhdGZvcm1TcGVhayhTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
KTsKICAgICAKIHByaXZhdGU6Ci0gICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3lu
dGhlc2lzKik7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVj
aFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogfTsKICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAppbmRleCAyNTRlOTJmMGI4YTE5ZmU4
NmU5MzIzOTg3YzQxMDA0ZTk2NjE4MDZlLi41NjQyZDVmZDc2ZGYwZTVjZTMwMGNmYTljNDIxNjI1
ODM2ZTA0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC0yOSw2ICsyOSwxMSBAQAog
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOworfQogICAgIAogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVu
dChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCA0NGU2MTQyOGIyMzYxZWM1Y2U5MWIy
YzlhMmJiOGE4N2ExMGFjNzU2Li4xYTk5ZTNmNjdhMzA2ZmE2MjhjMTFjZTIzNjYxMGRlMzUyOGY2
ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQwLDkgKzQyLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAotY2xhc3MgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNy
ZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOwogICAgIAogICAg
IGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIHZvaWQg
c2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgfQpAQCAtNjksOCAr
NzEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRpbWUp
IHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KICAgICAKICAgICBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7
IH0KKyAgICB2b2lkIHNldENsaWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNs
aWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgorICAg
IGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CisKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKICAgICBTdHJp
bmcgbV9sYW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAppbmRleCA4MmVlZjJlM2ZhNjQ4NzIzNGVhM2M3YjQ0
ZDAwYWYxMGM4N2M4N2MwLi4wNTI2MzI2ODM2MTEyOWJlODVmMzE3OTNhYThhMzk1NzYzNTU0OWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMzQsNiArMzQsMTEgQEAgUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVh
dGUoY28KIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0KSk7CiB9
CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSk7Cit9CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYg
dm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxv
Y2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJKQpA
QCAtNDQsNiArNDksMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVIKIHsKIH0KIAorUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpCisg
ICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKKyAgICAsIG1fZGVmYXVsdChmYWxzZSkKK3sKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggNzc0ZTJkNmEyMmQyZjNiZDBlZTY0ZTA0Nzc5ZjQzYTY2
OTU0MTAzOS4uZjdhYmE4YzUyZTQ0NDFiOTQ0YzVjNDU5NTk1OTFlNWE1ZDRmNDczZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaApAQCAtMzcsMTUgKzM3LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkks
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2Vydmlj
ZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZSgpOworCiAgICAgY29uc3QgU3RyaW5nJiB2b2lj
ZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VVUkk7IH0KKyAgICB2b2lkIHNldFZvaWNlVVJJ
KGNvbnN0IFN0cmluZyYgdm9pY2VVUkkpIHsgbV92b2ljZVVSSSA9dm9pY2VVUkk7IH0KKwogICAg
IGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIHZvaWQg
c2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQorCiAgICAgY29u
c3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgdm9pZCBzZXRM
YW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcgPSBsYW5nOyB9CisKICAgICBib29sIGxv
Y2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTZXJ2aWNlOyB9CisgICAgdm9pZCBz
ZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2UpIHsgbV9sb2NhbFNlcnZpY2UgPSBsb2Nh
bFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9kZWZh
dWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQpIHsgbV9k
ZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsKKyAg
ICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7CiAKICAgICBTdHJpbmcgbV92b2ljZVVS
STsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAppbmRleCA2NjEyM2Q1YWYxMWNhYmIwZWNl
M2VhYTRjNjIwNzE3NWFhNjFlNmY3Li40MThlZTcxMzliNGFlMmQzODVkMTUwOGVjNzliOTg2ZDY5
NDA2YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQog
CkBAIC0zNSwxMiArMzYsNiBAQCBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZShQbGF0Zm9ybQogICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihjbGllbnQpKTsKIH0KIAotUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3NwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KGNsaWVudCkKLXsKLSAgICBpbml0aWFsaXplVm9pY2VMaXN0KCk7Ci19Ci0gICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaAppbmRleCBjZmRjN2UxOWQwMDNiODljZTgxNmM0NmE0NmMyOWYyOTdkYmMwMGY2
Li5lYzUyNzMwM2NmNzdkNjRiNDdjNDc4NWZmZDcyZDY1YmI0MjM1ZWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCkBAIC0z
Nyw2ICszNywxMyBAQAogT0JKQ19DTEFTUyBXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyOwogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsK
K30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gU3BlZWNoQm91bmRhcnkg
ewpAQCAtNDUsMTUgKzUyLDE2IEBAIGVudW0gU3BlZWNoQm91bmRhcnkgewogfTsKIAogY2xhc3Mg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3Bl
YWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNv
bnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChj
b25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSosIFNwZWVjaEJvdW5kYXJ5LCB1
bnNpZ25lZCBjaGFySW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFr
aW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJy
b3JPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4sIFNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25l
ZCBjaGFySW5kZXgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgPSAw
OwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQoKSB7IH0KQEAgLTYzLDI3ICs3MSwzMyBAQCBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogCi0gICAg
dmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpIHsgfQorICAgIHZpcnR1YWwgflBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKTsKICAgICAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZvaWNlTGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fdm9pY2VMaXN0OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0dWFsIHZv
aWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpOwogICAgIAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KLSAgICAK
KworICAgIHZvaWQgc2V0Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4gPiYpOworCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emVWb2ljZUxpc3QoKTsKICAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4gbV92b2ljZUxpc3Q7CiAgICAgCiBwcml2YXRlOgog
ICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIG1fc3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQ7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKICAgICAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+
IG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXI+IG1fd2ViU3BlZWNoU3lu
dGhlc2l6ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ+
IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNmFiOTBkNzhiMjkyMWU2ZTI3ZTZiZWQ4ZDY2ZTNmMTZjZjZkMDE3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGlj
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9z
cGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwo
dGhpcywgY2xpZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudC5nZXQoKSkpOworCisgICAgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlh
bGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIpCisgICAg
ICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0ZVZvaWNlTGlzdCgpOworfQorCit2b2lk
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3sKKyAgICBpZiAoIW1fd2ViU3BlZWNo
U3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnNwZWFrKFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkpOworfQorCit2b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hTeW50aGVzaXpl
cikKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVj
aFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsK
K30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlm
IChtX3dlYlNwZWVjaFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVy
LT5jYW5jZWwoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2lj
ZXMpCit7CisgICAgbV92b2ljZUxpc3QgPSB2b2ljZXM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZjkyZjY4NGQ0
MGRmMjI1MjdmODEzNDlmMjAzMzhiOTJlNGM3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KKworI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoY29uc3QgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4mIHV0dGVyYW5jZSkKKyAgICA6IG1fcHJpdmF0ZSh1dHRlcmFuY2UpCit7Cit9CisKK1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVy
YXRvcj0oV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5j
ZSkKK3sKKyAgICBtX3ByaXZhdGUgPSB1dHRlcmFuY2U7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6YXNzaWduKGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9w
cml2YXRlOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmVzZXQoKQor
eworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworV2ViU3Ry
aW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+dGV4dCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpsYW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYW5nKCk7
Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvaWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52b2ljZSgpID8gV2ViU3RyaW5nKG1fcHJpdmF0
ZS0+dm9pY2UoKS0+bmFtZSgpKSA6IFdlYlN0cmluZygpOworfQorCitmbG9hdCBXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dm9sdW1lKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmF0ZSgpOworfQorCitmbG9hdCBX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnBpdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5waXRjaCgpOworfQorCitkb3VibGUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpzdGFydFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGlt
ZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTVkNTEyMTJjYjcyN2M4NDc5NGUwMjI5NzYyYTQyMTMzNmY0NzBhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2Uu
aD4KKworI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUuaCIKKyNpbmNsdWRl
ICJTcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjphc3Np
Z24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKQoreworICAgIG1fcHJpdmF0
ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6
cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCit2b2lkIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSShjb25zdCBXZWJTdHJpbmcmIHZvaWNlVVJJKQorewor
ICAgIG1fcHJpdmF0ZS0+c2V0Vm9pY2VVUkkodm9pY2VVUkkpOworfQorCit2b2lkIFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKK3sKKyAgICBt
X3ByaXZhdGUtPnNldE5hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OnNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAgbV9wcml2
YXRlLT5zZXRMYW5nKGxhbmd1YWdlKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZTo6c2V0SXNMb2NhbFNlcnZpY2UoYm9vbCBpc0xvY2FsU2VydmljZSkKK3sKKyAgICBtX3ByaXZh
dGUtPnNldExvY2FsU2VydmljZShpc0xvY2FsU2VydmljZSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdChib29sIGlzRGVmYXVsdCkKK3sKKyAgICBtX3By
aXZhdGUtPnNldElzRGVmYXVsdChpc0RlZmF1bHQpOworfQorCitXZWJTcGVlY2hTeW50aGVzaXNW
b2ljZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44N2RjZGI4ODRmYThlZmRkNTNmMDU3NGNjYjNlMDhjNDkyYTVhMjFlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9X
TkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50SW1wbC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKiBzeW50aGVzaXplciwgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50
KQorICAgIDogbV9zeW50aGVzaXplcihzeW50aGVzaXplcikKKyAgICAsIG1fY2xpZW50KGNsaWVu
dCkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp+V2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsKCkKK3sKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGw6OnNldFZvaWNlTGlzdChjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYgdm9pY2VzKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4g
PiBvdXRWb2ljZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2b2ljZXMuc2l6ZSgpOyBp
KyspCisgICAgICAgIG91dFZvaWNlcy5hcHBlbmQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlPih2b2ljZXNbaV0pKTsKKyAgICBtX3N5bnRoZXNpemVyLT5zZXRWb2ljZUxp
c3Qob3V0Vm9pY2VzKTsKKyAgICBtX2NsaWVudC0+dm9pY2VzRGlkQ2hhbmdlKCk7CisjZW5kaWYK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFN0YXJ0U3BlYWtp
bmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkK
K3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRT
cGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsOjpkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQorICAgIG1fY2xpZW50LT5kaWRGaW5pc2hTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRQYXVzZVNwZWFr
aW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2Up
Cit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFBhdXNl
U3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKKyAgICBtX2NsaWVudC0+ZGlkUmVzdW1lU3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c3BlYWtpbmdFcnJv
ck9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRl
cmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPnNw
ZWFraW5nRXJyb3JPY2N1cnJlZCh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0
IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UsIGludCBjaGFy
SW5kZXgpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmJv
dW5kYXJ5RXZlbnRPY2N1cnJlZCh1dHRlcmFuY2UsIFNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhcklu
ZGV4KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6
c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgaW50IGNoYXJJbmRleCkKK3sKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVkKHV0
dGVyYW5jZSwgU3BlZWNoU2VudGVuY2VCb3VuZGFyeSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDgyYzlhMzM4NWVhMjhjNTVmYmQ2ZGUxYzlk
YzcwNGE5NzY2M2IzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaApAQCAtMCww
ICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGxfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaAorCisjaW5jbHVk
ZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIqLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CisgICAg
dmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNw
ZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHdv
cmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmLCBpbnQgY2hhckluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VudGVuY2VCb3Vu
ZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmLCBpbnQgY2hhckluZGV4KTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKiBtX3N5bnRoZXNpemVyOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5k
ZXggNzA5NGZhMzUzODIyZTg3NDVlNDZlMzRkZGJmMzdjNzRiMGVhNTE1NS4uZWI5MmRkNDk4Njcz
MjZmM2ZiOWY0MDA4YTMzZDE2MDc4YTZmNGJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAg
LTE4OCw2ICsxODgsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQo
Y2xpZW50KQoreworICAgIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKK30KKworUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQoreworfQorCiB2b2lk
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewogICAg
IE5TU3RyaW5nICpkZWZhdWx0Vm9pY2VVUkkgPSBbTlNTcGVlY2hTeW50aGVzaXplciBkZWZhdWx0
Vm9pY2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCAxYzY3MTgyMjI3MjJjMWJh
ZWM3YzQ3MzMzNDYxMzljMDVlOWU4NWQ5Li5iMmJlOTMzNWZiYzM2N2M5ZmQ5YmZiY2Q0NzE3OGE4
NjczMzJkNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtMzksNyArMzksNiBA
QCBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jazo6Y3JlYXRlKAogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQqIGNsaWVudCkKICAgICA6IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KQog
ICAgICwgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIodGhpcywgJlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKQotICAgICwgbV91dHRlcmFuY2UoMCkKIHsKIH0K
ICAgICAKQEAgLTUwLDkgKzQ5LDkgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6On5Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpCiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s+KikKIHsKLSAgICBBU1NFUlQobV91dHRlcmFuY2UpOworICAgIEFTU0VSVChtX3V0
dGVyYW5jZS5nZXQoKSk7CiAgICAgY2xpZW50KCktPmRpZEZpbmlzaFNwZWFraW5nKG1fdXR0ZXJh
bmNlKTsKLSAgICBtX3V0dGVyYW5jZSA9IDA7CisgICAgbV91dHRlcmFuY2UuY2xlYXIoKTsKIH0K
ICAgICAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2lj
ZUxpc3QoKQpAQCAtNjMsMTAgKzYyLDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmxvZ2Fu
IiksIFN0cmluZygibG9nYW4iKSwgU3RyaW5nKCJmci1DQSIpLCB0cnVlLCB0cnVlKSk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7Ci0gICAg
bV91dHRlcmFuY2UgPSAmdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwog
ICAgIGNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKICAgICAKICAgICAv
LyBGaXJlIGEgZmFrZSB3b3JkIGFuZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5oCmluZGV4IGYxM2IwZTJjMDVlYjZmMGVlYWNhMWQzMzAwNWE4NGM1
OTRkZmM2Y2IuLmJiN2I0ZWY5ZmExZTI1NDFjMTM0MTQzOWQ1ODBkNWY1ODUzMGJjZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBjcmVhdGUoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIAogICAgIHZpcnR1YWwgflBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpOwpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Bl
YWtpbmdGaW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKTsKICAg
ICAKICAgICBUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gbV9zcGVha2luZ0Zp
bmlzaGVkVGltZXI7Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IG1fdXR0ZXJhbmNlOworICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gbV91dHRlcmFuY2U7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IGQzNzdmNjk4Mjc0NTFjMjZhZTc0ZWNhY2Ey
YTA1YTFkMGViYjE1MTcuLmE1NDFlYWVmYjAyZTMxYTk4NDc0Mzk0MjhmN2U4YjFjYWQ2MDQ4MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTExMyw3ICsxMTMsNyBAQAog
ICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9MScsCiAgICAgICAnRU5BQkxFX1NIQURPV19E
T009MScsCiAgICAgICAnRU5BQkxFX1NNT09USF9TQ1JPTExJTkc9MScsCi0gICAgICAnRU5BQkxF
X1NQRUVDSF9TWU5USEVTSVM9MCcsCisgICAgICAnRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM9MScs
CiAgICAgICAnRU5BQkxFX1NRTF9EQVRBQkFTRT08KGVuYWJsZV9zcWxfZGF0YWJhc2UpJywKICAg
ICAgICdFTkFCTEVfU1RZTEVfU0NPUEVEPTEnLAogICAgICAgJ0VOQUJMRV9TVUJQSVhFTF9MQVlP
VVQ9MScsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193424</attachid>
            <date>2013-03-16 00:04:51 -0700</date>
            <delta_ts>2013-03-16 01:25:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130316000045.patch</filename>
            <type>text/plain</type>
            <size>66684</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li40OTQ1YTBmYTc4MjUyZjY1NzM0ZWM3ZGE0NTll
NTFlMmJmYjM3YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0xNSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2VzIGEgcGxhdGZvcm0gQVBJIHRoYXQg
dGhlIGVtYmVkZGVyIGNhbiBpbXBsZW1lbnQgdG8KKyAgICAgICAgcHJvdmlkZSBzcGVlY2ggc3lu
dGhlc2lzIGZvciB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRl
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6aXNOdWxsKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNp
emVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xMSAgTWFyayBQaWxn
cmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3MgdG8gUGxhdGZvcm0vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4
NDczNjY1NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uYzljYzE3NjNmM2RhMDk5NTEyNzU4OTNk
NWJjNzFlMzdlNWJjMDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAxMy0wMy0x
NSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50
YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3Np
bmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKwor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAg
ICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmxhbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRMYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpw
aXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFBp
dGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0U3Rh
cnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGxh
dGZvcm1VdHRlcmFuY2UpOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAg
IChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNlTGlzdCk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCk6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hy
b21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6OnBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3Bl
cmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6YXNzaWdu
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNMb2NhbFNlcnZpY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4pOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6fldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OnNldFZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRGaW5pc2hT
cGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGw6OmRpZFBhdXNlU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OndvcmRCb3Vu
ZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oOgor
ICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2spOgorCiAyMDEzLTAzLTEyICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlc291cmNlU2NyaXB0RmlsZSBkaXZlcmdlZCBzdGF0ZSBzaG91bGQgYmUgY29ycmVj
dGx5IHJlc2V0IGFmdGVyIGRlYnVnZ2VyIHJlc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRleCAx
MjJlZWY5Yjk1NTZiMzhmOTk1ZTNiM2ZhYmQ0YTU5NmRjODFlMjdjLi40NTk5NDE0M2JlOTNjOGNl
ZGQ2NTE0ZWNkMzgwMTFiYmQwY2Q5YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vUGxh
dGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtMTI5LDYg
KzEyOSwxMCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1I
YW5kbGUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xv
ckxheWVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXplci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0b3Jh
Z2VBcmVhLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFtZXNw
YWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKaW5kZXggZjJhOTExMzM5ODY3
MGU2ZmZhM2FmZmNlNDdhYmIxZjk2NzE3MmZlNS4uODA2Y2M2MDgyNTMwMWMxNWU5NzEyNDQ3ODBl
NmRjOWI3NjBkMzcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZv
cm0uaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkdhbWVwYWRzLmgiCiAjaW5jbHVk
ZSAiV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXplci5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCkBAIC02OSw2ICs3MCw4IEBAIGNsYXNzIFdl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudDsKIGNsYXNzIFdlYlNhbmRib3hTdXBwb3J0OwogY2xhc3MgV2ViU29ja2V0U3Ry
ZWFtSGFuZGxlOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFzcyBXZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudDsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBXZWJV
bml0VGVzdFN1cHBvcnQ7CiBjbGFzcyBXZWJUaGVtZUVuZ2luZTsKQEAgLTExNSw2ICsxMTgsOCBA
QCBwdWJsaWM6CiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAgdmlydHVhbCBXZWJI
eXBoZW5hdG9yKiBoeXBoZW5hdG9yKCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTWF5IHJldHVy
biBudWxsLgorICAgIHZpcnR1YWwgV2ViU3BlZWNoU3ludGhlc2l6ZXIqIGNyZWF0ZVNwZWVjaFN5
bnRoZXNpemVyKFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQogCiAg
ICAgLy8gQXVkaW8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDY1MTZjZTNiYzc1YmZhZmQxNzM1N2I4MDI1NDQwMzI0MTk2ZTg2YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHsKK3B1YmxpYzoKKyAgICBXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoKSB7IH0KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uo
Y29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIp
OyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpIHsgcmVzZXQoKTsgfQorCisg
ICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvcGVyYXRvcj0oY29uc3QgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7
CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIGFzc2lnbihjb25zdCBX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgYm9v
bCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAgIFdl
YlN0cmluZyB0ZXh0KCkgY29uc3Q7CisgICAgV2ViU3RyaW5nIGxhbmcoKSBjb25zdDsKKyAgICBX
ZWJTdHJpbmcgdm9pY2UoKSBjb25zdDsKKworICAgIC8vIEFzIGRlZmluZWQgaW46IGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvc3BlZWNoLWFwaS9yYXctZmlsZS90aXAvc3BlZWNoYXBpLmh0bWwKKyAg
ICBmbG9hdCB2b2x1bWUoKSBjb25zdDsgLy8gMC4uLjEsIDEgaXMgZGVmYXVsdAorICAgIGZsb2F0
IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIGZsb2F0IHBpdGNo
KCkgY29uc3Q7IC8vIDAuLi4yLCAxIGlzIGRlZmF1bHQKKworICAgIGRvdWJsZSBzdGFydFRpbWUo
KSBjb25zdDsgLy8gSW4gc2Vjb25kcy4KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAg
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYpOworICAgIFdlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYgb3BlcmF0b3I9KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKik7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdDsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSooKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRl
OgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZDVhMTYxM2MwYWI3YzUyYTc3NmVjODJjYTY0MjQ2YWZhNmEyZjM1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXNWb2ljZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2VfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UgeworcHVibGljOgorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
KCkgeyB9CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBv
cGVyYXRvcj0oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2Um
KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKworICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRWb2ljZVVSSShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0TmFtZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldElz
TG9jYWxTZXJ2aWNlKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0RlZmF1bHQo
Ym9vbCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4oKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGMwZjk2NWM0MTVjYTQ5NTg3OTUyNmRiMDIzMzI2ZTFmMzY1NmQ2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3lu
dGhlc2l6ZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50
aGVzaXplcl9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQ7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7CisKK2NsYXNz
IFdlYlNwZWVjaFN5bnRoZXNpemVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hT
eW50aGVzaXplcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZvaWNlTGlzdCgpID0g
MDsKKworICAgIC8vIE9LIHRvIGNhbGwgd2l0aCBtb3JlIHRoYW4gb25lIHV0dGVyYW5jZSwgd2ls
bCBxdWV1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhl
c2l6ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NzA3MjdhNDliMWQw
NWZhY2E4ZmNiYzRmN2YzMGI0OGIyZTdiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRfaAor
I2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXNWb2lj
ZS5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9p
Y2VMaXN0KGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJiwgaW50IGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJv
dW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCBp
bnQgY2hhckluZGV4KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IGM0ZGZmNGU0OTcwZWY2ZDc4
NDliNzRjNmU5ZTY5OGZjOWIyOTk4ZjcuLjM0MmQ3NzM0ZDAyZTZjMWNhOGU3NjM4Y2U2MDFhMDE4
NTNlNjU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzRXZlbnQuaCIKICNpbmNs
dWRlICJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxlU3Bl
YWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAgIH0K
IH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSwgU3BlZWNoQm91
bmRhcnkgYm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKK3ZvaWQgU3BlZWNoU3ludGhlc2lz
Ojpib3VuZGFyeUV2ZW50T2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFyeSwgdW5zaWduZWQg
Y2hhckluZGV4KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB3b3Jk
Qm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIndvcmQiKSkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlMaXRl
cmFsKCJzZW50ZW5jZSIpKSk7CkBAIC0xNjksMzMgKzE2OSwzOCBAQCB2b2lkIFNwZWVjaFN5bnRo
ZXNpczo6Ym91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbgogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtp
bmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3Zv
aWQgU3BlZWNoU3ludGhlc2lzOjpkaWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBmaXJlRXZlbnQoZXZl
bnROYW1lcygpLnN0YXJ0RXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CisgICAgaWYgKHV0dGVyYW5j
ZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3RhcnRFdmVudCwg
c3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQo
KSksIDAsIFN0cmluZygpKTsKIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRQYXVz
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFu
Y2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgbV9pc1Bh
dXNlZCA9IHRydWU7Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBzdGF0
aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwg
MCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVudCgpKQorICAgICAgICBmaXJl
RXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CiB9CiAKLXZv
aWQgU3BlZWNoU3ludGhlc2lzOjpkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmRp
ZFJlc3VtZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gZmFsc2U7Ci0gICAgZmlyZUV2ZW50
KGV2ZW50TmFtZXMoKS5yZXN1bWVFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0
ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5yZXN1bWVF
dmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5j
bGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZEZp
bmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRl
cmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmcoUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhh
bmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xp
ZW50KCkpCisgICAgICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CiB9CiAg
ICAgCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5
bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBoYW5kbGVTcGVha2luZ0NvbXBs
ZXRlZChzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNs
aWVudCgpKSwgdHJ1ZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGhh
bmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVlKTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggM2RjOWZjMmNi
OTE4YTU0MWI1N2RkYjZjNGZlNzZlODBmZjNjNTMxNi4uNTM5M2RmZWZhMjU0YTBkYmVlYTJjYTJh
NWVhY2FhNWZlYjdlOGFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzLmgKQEAgLTY1LDEyICs2NSwxMiBAQCBwcml2YXRlOgogICAgIAogICAg
IC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgb3ZlcnJpZGUgbWV0aG9kcy4KICAg
ICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25z
dCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3BlZWNoQm91
bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVh
a2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgT1ZFUlJJ
REU7CiAKICAgICB2b2lkIHN0YXJ0U3BlYWtpbmdJbW1lZGlhdGVseShTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqKTsKICAgICB2b2lkIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSosIGJvb2wgZXJyb3JPY2N1cnJlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApp
bmRleCBkYzIwMmQzNDEyZTZhNWNhY2Q2OTA1YjdkZGYzOTUyNTIxZDhhZDgwLi5iYzU1MjNlNWQx
NTljZDNhN2I2ZGE0ZjgzMzQ1YTNkZTVmN2FlNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAg
LTM3LDkgKzM3LDkgQEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIoY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9w
bGF0Zm9ybVV0dGVyYW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2Ut
PnNldFRleHQodGV4dCk7CiB9CiAgICAgCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAtNjQs
NyArNjQsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UoU3BlZWNo
U3ludGhlc2lzVm9pY2UqIHZvaWNlKQogICAgIG1fdm9pY2UgPSB2b2ljZTsKICAgICAKICAgICBp
ZiAodm9pY2UpCi0gICAgICAgIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0Vm9pY2Uodm9pY2UtPnBs
YXRmb3JtVm9pY2UoKSk7CisgICAgICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFZvaWNlKHZv
aWNlLT5wbGF0Zm9ybVZvaWNlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCmluZGV4IDI5YmZkYzRhNDM0MzA1ZGRmMmU2YTk2OWY0MTBkMGMzNzFkNzdmMzku
LjgyZjg5NjdlOWYxNzIwMWE5MDZjYzAyMDZmOWJmOWZkNjk4NjgyMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oCkBAIC00MSwyNiArNDEsMjYgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIDog
cHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50LAogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICAgICAKLSAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnRleHQoKTsg
fQotICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dGV4dCgpOyB9CisgICAgdm9pZCBzZXRUZXh0KGNv
bnN0IFN0cmluZyYgdGV4dCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRUZXh0KHRleHQpOyB9
CiAKLSAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLmxhbmcoKTsgfQotICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsg
bV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRMYW5nKGxhbmcpOyB9CisgICAgY29uc3QgU3RyaW5nJiBs
YW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+bGFuZygpOyB9CisgICAg
dm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5z
ZXRMYW5nKGxhbmcpOyB9CiAKICAgICBTcGVlY2hTeW50aGVzaXNWb2ljZSogdm9pY2UoKSBjb25z
dDsKICAgICB2b2lkIHNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKik7CiAKLSAgICBmbG9h
dCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnZvbHVtZSgpOyB9
Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uu
c2V0Vm9sdW1lKHZvbHVtZSk7IH0KKyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBt
X3BsYXRmb3JtVXR0ZXJhbmNlLT52b2x1bWUoKTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0
IHZvbHVtZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2x1bWUodm9sdW1lKTsgfQogCi0g
ICAgZmxvYXQgcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucmF0ZSgp
OyB9Ci0gICAgdm9pZCBzZXRSYXRlKGZsb2F0IHJhdGUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRSYXRlKHJhdGUpOyB9CisgICAgZmxvYXQgcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1VdHRlcmFuY2UtPnJhdGUoKTsgfQorICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1f
cGxhdGZvcm1VdHRlcmFuY2UtPnNldFJhdGUocmF0ZSk7IH0KIAotICAgIGZsb2F0IHBpdGNoKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5waXRjaCgpOyB9Ci0gICAgdm9pZCBz
ZXRQaXRjaChmbG9hdCBwaXRjaCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFBpdGNoKHBpdGNo
KTsgfQorICAgIGZsb2F0IHBpdGNoKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS0+cGl0Y2goKTsgfQorICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0UGl0Y2gocGl0Y2gpOyB9CiAKLSAgICBkb3VibGUgc3RhcnRUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5zdGFydFRpbWUoKTsgfQotICAgIHZv
aWQgc2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRpbWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQorICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zdGFydFRpbWUoKTsgfQorICAgIHZvaWQgc2V0
U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRpbWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0U3Rh
cnRUaW1lKHN0YXJ0VGltZSk7IH0KICAgICAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHN0YXJ0KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVuZCk7
CkBAIC03NSwxMSArNzUsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICBjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgcGxhdGZvcm1VdHRlcmFuY2UoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlOyB9CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSBtX3BsYXRmb3JtVXR0ZXJhbmNlOwor
ICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0
dGVyYW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7CiAgICAg
CiAgICAgLy8gRXZlbnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IGYwZjI0M2QzMGI0NmYwZDYyZTE1ZTVj
MmRiZmM3MDE3YjIzYmI3MmMuLjc2Yzk1Y2JlOThhYmE5Y2I1YWZjYjNlNGNmNDUxNDg5NzdkMDNi
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVm9pY2UuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoU3ludGhl
c2lzVm9pY2U+IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNWb2ljZSgp
IHsgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUo
UGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPik7CiAgICAgCiAgICAgY29u
c3QgU3RyaW5nJiB2b2ljZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Wb2ljZS0+dm9p
Y2VVUkkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRkNWYyYmUzY2M3NzA4MzdmYjk0MWMyNGVh
ODcxZjAyYTZiYzI2ZjguLjI2YmVlOGYxN2NiZjE1ZDZhMDgwNGNiMDZiZmU5MmE3NTU5MmM1YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTk4Myw3ICs5ODMsNiBAQAogICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMv
c3BlZWNoL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0Nocm9taXVtLmNwcCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAnLApA
QCAtMzY4MSw2ICszNjgwLDEyIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1JbnN0
cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0
cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3RyYXRl
Z2llcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCcsCkBAIC0zODU2LDYg
KzM4NjEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2NyZWVu
Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVRo
ZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmgnLApAQCAtNzQyMyw2ICs3NDI5LDEwIEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU2Nyb2xsYmFySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU2Nyb2xsYmFySW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybUtleWZyYW1lLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmgKaW5kZXggMjFiOGJjOWFhNGM4MmMzOTQ4OTdmYTUxZDUxZjMxMjcxNmRkOWU0
MS4uOGM5NDRlOTZmNDE2OWFhYmE3MDQ3ZjFiZDY2NTRkMWNjNDFhZGEwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCkBAIC0yOCw3
ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAorI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTQ2LDcgKzQ4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVlY2hT
eW50aGVzaXMqKTsKIAotICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aHNpczsKKyAg
ICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhlc2lzOwogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAppbmRleCAyNTRlOTJmMGI4YTE5
ZmU4NmU5MzIzOTg3YzQxMDA0ZTk2NjE4MDZlLi41NjQyZDVmZDc2ZGYwZTVjZTMwMGNmYTljNDIx
NjI1ODM2ZTA0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC0yOSw2ICsyOSwxMSBA
QAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOworfQogICAgIAogUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCA0NGU2MTQyOGIyMzYxZWM1Y2U5
MWIyYzlhMmJiOGE4N2ExMGFjNzU2Li4xYTk5ZTNmNjdhMzA2ZmE2MjhjMTFjZTIzNjYxMGRlMzUy
OGY2ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQwLDkgKzQyLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAotY2xhc3Mg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOwogICAgIAog
ICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAgIHZv
aWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgfQpAQCAtNjks
OCArNzEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRp
bWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KICAgICAKICAgICBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGll
bnQ7IH0KKyAgICB2b2lkIHNldENsaWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CisKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZUNsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKICAgICBT
dHJpbmcgbV9sYW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAppbmRleCA4MmVlZjJlM2ZhNjQ4NzIzNGVhM2M3
YjQ0ZDAwYWYxMGM4N2M4N2MwLi4wNTI2MzI2ODM2MTEyOWJlODVmMzE3OTNhYThhMzk1NzYzNTU0
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMzQsNiArMzQsMTEgQEAgUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpj
cmVhdGUoY28KIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0KSk7
CiB9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSk7Cit9CiAgICAgCiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmlu
ZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29s
IGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNlVVJJ
KQpAQCAtNDQsNiArNDksMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVIKIHsKIH0KIAorUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgp
CisgICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKKyAgICAsIG1fZGVmYXVsdChmYWxzZSkKK3sK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggNzc0ZTJkNmEyMmQyZjNiZDBlZTY0ZTA0Nzc5ZjQz
YTY2OTU0MTAzOS4uZjdhYmE4YzUyZTQ0NDFiOTQ0YzVjNDU5NTk1OTFlNWE1ZDRmNDczZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UuaApAQCAtMzcsMTUgKzM3LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9pY2VV
UkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2Vy
dmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZSgpOworCiAgICAgY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VVUkk7IH0KKyAgICB2b2lkIHNldFZvaWNl
VVJJKGNvbnN0IFN0cmluZyYgdm9pY2VVUkkpIHsgbV92b2ljZVVSSSA9dm9pY2VVUkk7IH0KKwog
ICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIHZv
aWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQorCiAgICAg
Y29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgdm9pZCBz
ZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcgPSBsYW5nOyB9CisKICAgICBib29s
IGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTZXJ2aWNlOyB9CisgICAgdm9p
ZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2UpIHsgbV9sb2NhbFNlcnZpY2UgPSBs
b2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gbV9k
ZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQpIHsg
bV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0KTsK
KyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7CiAKICAgICBTdHJpbmcgbV92b2lj
ZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAppbmRleCA2NjEyM2Q1YWYxMWNhYmIw
ZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5jYmZhM2Y2ZDFhNWJmMTRjZTVhMWY2NWFhOTdhOTky
MzRkYjEyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIFBhc3NPd25QdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRl
KFBsYXRmb3JtCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKGNsaWVudCkpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkK
LSAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQordm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2ljZXMpCiB7Ci0gICAgaW5pdGlhbGl6ZVZvaWNlTGlzdCgp
OworICAgIG1fdm9pY2VMaXN0ID0gdm9pY2VzOwogfQotICAgIAorCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4
IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2YTQ2YzI5ZjI5N2RiYzAwZjYuLmYwZDY4OTNhMjFjNTY4
M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBACiBP
QkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVz
aXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworfQorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBTcGVlY2hCb3VuZGFyeSB7CkBAIC00OCwxMiArNTUs
MTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7CiAKIGNsYXNzIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1
c2VTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JP
Y2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCgpIHsgfQpAQCAtNjMsMjcg
KzcwLDMzIEBAIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyKCkgeyB9CisgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcigpOwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgCiAg
ICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1
cm4gbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsgfQotICAgIAorCisgICAgdm9pZCBzZXRWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7CisK
IHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAg
IGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudCopOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAgICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBSZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8V2ViS2l0
OjpXZWJTcGVlY2hTeW50aGVzaXplcj4gbV93ZWJTcGVlY2hTeW50aGVzaXplcjsKKyAgICBPd25Q
dHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudD4gbV93ZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudDsKKyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4NjUz
ZDg0YzE0N2MzMzA5OWI1MDk2MGQ1NTI2YjJjNDQ0MmU0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Q2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5j
bHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGlj
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9z
cGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwo
dGhpcywgY2xpZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudC5nZXQoKSkpOworCisgICAgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlh
bGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIpCisgICAg
ICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0ZVZvaWNlTGlzdCgpOworfQorCit2b2lk
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3sKKyAgICBpZiAoIW1fd2ViU3BlZWNo
U3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnNwZWFrKFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkpOworfQorCit2b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hTeW50aGVzaXpl
cikKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVj
aFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsK
K30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlm
IChtX3dlYlNwZWVjaFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVy
LT5jYW5jZWwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5
MmU0Yzc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEw
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
PgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDog
bV9wcml2YXRlKHV0dGVyYW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9
IHV0dGVyYW5jZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjphc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBv
dGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0
KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3Bl
cmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7
Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25z
dAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUtPnZvaWNlKCkgPyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDog
V2ViU3RyaW5nKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9s
dW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKworZmxv
YXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLT5yYXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6cGl0Y2goKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9
CisKK2RvdWJsZSBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3
Yzg0Nzk0ZTAyMjk3NjJhNDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNo
UmVjb2duaXRpb25BbHRlcm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50
aGVzaXNWb2ljZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwor
fQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2
YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNl
VVJJKGNvbnN0IFdlYlN0cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRWb2lj
ZVVSSSh2b2ljZVVSSSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5h
bWUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1l
KTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3Qg
V2ViU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2Up
OworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShi
b29sIGlzTG9jYWxTZXJ2aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlz
TG9jYWxTZXJ2aWNlKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNE
ZWZhdWx0KGJvb2wgaXNEZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlz
RGVmYXVsdCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZGNkYjg4NGZhOGVm
ZGQ1M2YwNTc0Y2NiM2UwOGM0OTJhNWEyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbC5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N5bnRoZXNpemVy
KHN5bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoKQor
eworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2V0Vm9pY2VMaXN0
KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+
JiB2b2ljZXMpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgVmVjdG9yPFJl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9pY2Vz
LmFwcGVuZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tp
XSkpOworICAgIG1fc3ludGhlc2l6ZXItPnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAgIG1f
Y2xpZW50LT52b2ljZXNEaWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7Cisj
ZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZEZpbmlz
aFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRl
cmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRp
ZEZpbmlzaFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudEltcGw6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkUGF1c2VTcGVha2luZyh1dHRlcmFuY2UpOwor
I2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1
bWVTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0
ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5k
aWRSZXN1bWVTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0
OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+c3BlYWtpbmdFcnJvck9jY3VycmVkKHV0
dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGw6OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgaW50IGNoYXJJbmRleCkKK3sKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVkKHV0
dGVyYW5jZSwgU3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJh
bmNlLCBpbnQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJhbmNlLCBTcGVlY2hTZW50ZW5j
ZUJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkODJjOWEzMzg1ZWEyOGM1NWZiZDZkZTFjOWRjNzA0YTk3NjYzYjMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIg
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGwoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciosIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2ljZUxpc3QoY29u
c3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZv
aWNlcyk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
U3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhj
b25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwg
dm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgd29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIGludCBjaGFySW5k
ZXgpOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIGludCBjaGFySW5kZXgpOwor
Citwcml2YXRlOgorICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXI7
CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRleCA3MDk0ZmEzNTM4MjJlODc0NWU0
NmUzNGRkYmYzN2M3NGIwZWE1MTU1Li5lYjkyZGQ0OTg2NzMyNmYzZmI5ZjQwMDhhMzNkMTYwNzhh
NmY0YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMTg4LDYgKzE4OCwxNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50
KQorICAgIDogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgaW5pdGlh
bGl6ZVZvaWNlTGlzdCgpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcigpCit7Cit9CisKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiB7CiAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2lj
ZVVSSSA9IFtOU1NwZWVjaFN5bnRoZXNpemVyIGRlZmF1bHRWb2ljZV07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suY3BwCmluZGV4IDFjNjcxODIyMjcyMmMxYmFlYzdjNDczMzM0NjEzOWMwNWU5ZTg1
ZDkuLmIyNDUxZDg2YjRiNDQ0NTYxNjVhN2NiYmRiNzQ3YzliMTJlZDlkNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suY3BwCkBAIC0zOSw3ICszOSw2IEBAIFBhc3NPd25QdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpjcmVh
dGUoCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQogICAgIDog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihjbGllbnQpCiAgICAgLCBtX3NwZWFraW5nRmluaXNo
ZWRUaW1lcih0aGlzLCAmUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmlu
aXNoZWQpCi0gICAgLCBtX3V0dGVyYW5jZSgwKQogewogfQogICAgIApAQCAtNTAsNyArNDksNyBA
QCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdG
aW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKQogewotICAgIEFT
U0VSVChtX3V0dGVyYW5jZSk7CisgICAgQVNTRVJUKG1fdXR0ZXJhbmNlLmdldCgpKTsKICAgICBj
bGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcobV91dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJhbmNl
ID0gMDsKIH0KQEAgLTYzLDEwICs2MiwxMCBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dh
biIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwogfQog
Ci12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwotICAg
IG1fdXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsK
ICAgICBjbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7CiAgICAgCiAgICAg
Ly8gRmlyZSBhIGZha2Ugd29yZCBhbmQgdGhlbiBzZW50ZW5jZSBib3VuZGFyeSBldmVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2suaAppbmRleCBmMTNiMGUyYzA1ZWI2ZjBlZWFjYTFkMzMwMDVhODRj
NTk0ZGZjNmNiLi5iYjdiNGVmOWZhMWUyNTQxYzEzNDE0MzlkNTgwZDVmNTg1MzBiY2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gY3JlYXRlKFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jaygpOwotICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBzcGVh
ayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CiAgICAgdmly
dHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWwoKTsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNw
ZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+Kik7CiAg
ICAgCiAgICAgVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+IG1fc3BlYWtpbmdG
aW5pc2hlZFRpbWVyOwotICAgIGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiBtX3V0dGVyYW5jZTsKKyAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IG1fdXR0ZXJhbmNlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193427</attachid>
            <date>2013-03-16 01:25:43 -0700</date>
            <delta_ts>2013-03-16 20:10:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130316012138.patch</filename>
            <type>text/plain</type>
            <size>66706</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZjVmYzAwZDUyMzA3
ZGZlYTYzOTc5ZTY3MWE3YzY4YTRhZThmOGFiLi5mNGIxNTZhZWI3MmU3ZmJkZjU2OGE0YmU2NWYy
OWYxMmFlNzZhZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0xNiAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2VzIGEgcGxhdGZvcm0gQVBJIHRoYXQg
dGhlIGVtYmVkZGVyIGNhbiBpbXBsZW1lbnQgdG8KKyAgICAgICAgcHJvdmlkZSBzcGVlY2ggc3lu
dGhlc2lzIGZvciB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRl
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6aXNOdWxsKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNp
emVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xNCAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ugem9v
bSBmaWx0ZXIgaW5kZXBlbmRlbnQgb2YgdGhlIGxheWVyIHNpemUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZk
NGM4ZDM3N2Q0MGU1MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uMDMyMzY4MjZiNTg5Y2YyOTdm
MjQ1OTA4MTc0OGQyMTMzMTVhM2EwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAx
My0wMy0xNiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1w
bGVtZW50YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkg
ZXhwb3NpbmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVu
dC4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
aDoKKyAgICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpzZXRMYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpwaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldFBpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0U3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6cGxhdGZvcm1VdHRlcmFuY2UpOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2lj
ZSk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6Cisg
ICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNE
ZWZhdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNl
TGlzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCk6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6b3BlcmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2ljZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6
YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJ
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNMb2NhbFNlcnZp
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZh
dWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNldFZvaWNlTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFN0YXJ0U3BlYWtpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRG
aW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGw6OmRpZFBhdXNlU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6Ondv
cmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVh
ayk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2spOgorCiAyMDEzLTAz
LTE1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ1ODAyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQppbmRl
eCA2MGFjMWI4NzVjNGM2OWVlYTdhNjIyNmI3OGE3OTYyMzU3ZDY3ZTI4Li43Y2VmZWZjZTJlMjAw
YThkNDExYjkzM2VkMDg1NTQyZDEwNmM5NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
UGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAtMTI4
LDYgKzEyOCwxMCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJl
YW1IYW5kbGUuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29saWRD
b2xvckxheWVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50
aGVzaXplci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0
b3JhZ2VBcmVhLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlTmFt
ZXNwYWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKaW5kZXggZjJhOTExMzM5
ODY3MGU2ZmZhM2FmZmNlNDdhYmIxZjk2NzE3MmZlNS4uODA2Y2M2MDgyNTMwMWMxNWU5NzEyNDQ3
ODBlNmRjOWI3NjBkMzcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxh
dGZvcm0uaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkdhbWVwYWRzLmgiCiAjaW5j
bHVkZSAiV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJXZWJMb2NhbGl6ZWRTdHJp
bmcuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXplci5oIgogI2luY2x1ZGUgIldlYlN0
cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCkBAIC02OSw2ICs3MCw4IEBAIGNsYXNz
IFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudDsKIGNsYXNzIFdlYlNhbmRib3hTdXBwb3J0OwogY2xhc3MgV2ViU29ja2V0
U3RyZWFtSGFuZGxlOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFzcyBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudDsKIGNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2U7CiBjbGFzcyBX
ZWJVbml0VGVzdFN1cHBvcnQ7CiBjbGFzcyBXZWJUaGVtZUVuZ2luZTsKQEAgLTExNSw2ICsxMTgs
OCBAQCBwdWJsaWM6CiAgICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCiAgICAgdmlydHVhbCBX
ZWJIeXBoZW5hdG9yKiBoeXBoZW5hdG9yKCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gTWF5IHJl
dHVybiBudWxsLgorICAgIHZpcnR1YWwgV2ViU3BlZWNoU3ludGhlc2l6ZXIqIGNyZWF0ZVNwZWVj
aFN5bnRoZXNpemVyKFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KikgeyByZXR1cm4gMDsgfQog
CiAgICAgLy8gQXVkaW8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDY1MTZjZTNiYzc1YmZhZmQxNzM1N2I4MDI1NDQwMzI0MTk2ZTg2YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHsKK3B1YmxpYzoKKyAgICBXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoKSB7IH0KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikgeyBhc3NpZ24ob3Ro
ZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpIHsgcmVzZXQoKTsgfQor
CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvcGVyYXRvcj0oY29uc3QgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhl
cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIGFzc2lnbihjb25z
dCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAg
Ym9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KKworICAg
IFdlYlN0cmluZyB0ZXh0KCkgY29uc3Q7CisgICAgV2ViU3RyaW5nIGxhbmcoKSBjb25zdDsKKyAg
ICBXZWJTdHJpbmcgdm9pY2UoKSBjb25zdDsKKworICAgIC8vIEFzIGRlZmluZWQgaW46IGh0dHBz
Oi8vZHZjcy53My5vcmcvaGcvc3BlZWNoLWFwaS9yYXctZmlsZS90aXAvc3BlZWNoYXBpLmh0bWwK
KyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdDsgLy8gMC4uLjEsIDEgaXMgZGVmYXVsdAorICAgIGZs
b2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIGZsb2F0IHBp
dGNoKCkgY29uc3Q7IC8vIDAuLi4yLCAxIGlzIGRlZmF1bHQKKworICAgIGRvdWJsZSBzdGFydFRp
bWUoKSBjb25zdDsgLy8gSW4gc2Vjb25kcy4KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYpOworICAgIFdlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYgb3BlcmF0b3I9KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKik7CisgICAgb3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdDsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSooKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZDVhMTYxM2MwYWI3YzUyYTc3NmVjODJjYTY0MjQ2YWZhNmEyZjM1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50
aGVzaXNWb2ljZS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2VfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorI2luY2x1
ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2UgeworcHVibGljOgorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlKCkgeyB9CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KKyAgICB+V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
JiBvcGVyYXRvcj0oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKQorICAgIHsK
KyAgICAgICAgYXNzaWduKG90aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0TmFtZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dElzTG9jYWxTZXJ2aWNlKGJvb2wpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0RlZmF1
bHQoYm9vbCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBvcGVyYXRvciBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4oKSBjb25z
dDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGMwZjk2NWM0MTVjYTQ5NTg3OTUyNmRiMDIzMzI2ZTFmMzY1NmQ2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2l6ZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hT
eW50aGVzaXplcl9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKKworI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQ7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7CisKK2Ns
YXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVl
Y2hTeW50aGVzaXplcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZvaWNlTGlzdCgp
ID0gMDsKKworICAgIC8vIE9LIHRvIGNhbGwgd2l0aCBtb3JlIHRoYW4gb25lIHV0dGVyYW5jZSwg
d2lsbCBxdWV1ZS4KKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3lu
dGhlc2l6ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0NzA3MjdhNDli
MWQwNWZhY2E4ZmNiYzRmN2YzMGI0OGIyZTdiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRf
aAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXNW
b2ljZS5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwg
fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9pY2VMaXN0KGNvbnN0IFdlYlZlY3RvcjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNv
bnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1
cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJiwgaW50IGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5j
ZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
LCBpbnQgY2hhckluZGV4KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCmluZGV4IGM0ZGZmNGU0OTcwZWY2
ZDc4NDliNzRjNmU5ZTY5OGZjOWIyOTk4ZjcuLjM0MmQ3NzM0ZDAyZTZjMWNhOGU3NjM4Y2U2MDFh
MDE4NTNlNjU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzRXZlbnQuaCIKICNp
bmNsdWRlICJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpczo6aGFuZGxl
U3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuYwogICAg
IH0KIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQo
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSwgU3BlZWNo
Qm91bmRhcnkgYm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKK3ZvaWQgU3BlZWNoU3ludGhl
c2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB3
b3JkQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoIndvcmQiKSkpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzZW50ZW5jZUJvdW5kYXJ5U3RyaW5nLCAoQVNDSUlM
aXRlcmFsKCJzZW50ZW5jZSIpKSk7CkBAIC0xNjksMzMgKzE2OSwzOCBAQCB2b2lkIFNwZWVjaFN5
bnRoZXNpczo6Ym91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbgogICAgIH0KIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3Bl
YWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkK
K3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBmaXJlRXZlbnQo
ZXZlbnROYW1lcygpLnN0YXJ0RXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CisgICAgaWYgKHV0dGVy
YW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3RhcnRFdmVu
dCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGll
bnQoKSksIDAsIFN0cmluZygpKTsKIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRQ
YXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRl
cmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgbV9p
c1BhdXNlZCA9IHRydWU7Ci0gICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5wYXVzZUV2ZW50LCBz
dGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgp
KSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVudCgpKQorICAgICAgICBm
aXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CiB9CiAK
LXZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50aGVzaXM6
OmRpZFJlc3VtZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gZmFsc2U7Ci0gICAgZmlyZUV2
ZW50KGV2ZW50TmFtZXMoKS5yZXN1bWVFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAo
dXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5yZXN1
bWVFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRp
ZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1
dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmcoUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAg
IGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+
Y2xpZW50KCkpCisgICAgICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCBmYWxzZSk7CiB9
CiAgICAgCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVj
aFN5bnRoZXNpczo6c3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKLSAgICBoYW5kbGVTcGVha2luZ0Nv
bXBsZXRlZChzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2Ut
PmNsaWVudCgpKSwgdHJ1ZSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAg
IGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVlKTsKIH0KLSAgICAKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOUFVUX1NQRUVDSCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggM2RjOWZj
MmNiOTE4YTU0MWI1N2RkYjZjNGZlNzZlODBmZjNjNTMxNi4uNTM5M2RmZWZhMjU0YTBkYmVlYTJj
YTJhNWVhY2FhNWZlYjdlOGFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmgKQEAgLTY1LDEyICs2NSwxMiBAQCBwcml2YXRlOgogICAgIAog
ICAgIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgb3ZlcnJpZGUgbWV0aG9kcy4K
ICAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25z
dCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhj
b25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVu
dE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3BlZWNo
Qm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hT
cGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgT1ZF
UlJJREU7CiAKICAgICB2b2lkIHN0YXJ0U3BlYWtpbmdJbW1lZGlhdGVseShTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqKTsKICAgICB2b2lkIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKFNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSosIGJvb2wgZXJyb3JPY2N1cnJlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cAppbmRleCBkYzIwMmQzNDEyZTZhNWNhY2Q2OTA1YjdkZGYzOTUyNTIxZDhhZDgwLi5iYzU1MjNl
NWQxNTljZDNhN2I2ZGE0ZjgzMzQ1YTNkZTVmN2FlNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAK
QEAgLTM3LDkgKzM3LDkgQEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIoY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNl
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAg
bV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFu
Y2UtPnNldFRleHQodGV4dCk7CiB9CiAgICAgCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdApAQCAt
NjQsNyArNjQsNyBAQCB2b2lkIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UoU3Bl
ZWNoU3ludGhlc2lzVm9pY2UqIHZvaWNlKQogICAgIG1fdm9pY2UgPSB2b2ljZTsKICAgICAKICAg
ICBpZiAodm9pY2UpCi0gICAgICAgIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0Vm9pY2Uodm9pY2Ut
PnBsYXRmb3JtVm9pY2UoKSk7CisgICAgICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFZvaWNl
KHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oCmluZGV4IDI5YmZkYzRhNDM0MzA1ZGRmMmU2YTk2OWY0MTBkMGMzNzFkNzdm
MzkuLjgyZjg5NjdlOWYxNzIwMWE5MDZjYzAyMDZmOWJmOWZkNjk4NjgyMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oCkBAIC00MSwyNiArNDEsMjYgQEAgY2xhc3MgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
IDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50LAogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsKICAgICAKLSAgICBjb25z
dCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnRleHQo
KTsgfQotICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV9wbGF0Zm9ybVV0
dGVyYW5jZS5zZXRUZXh0KHRleHQpOyB9CisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dGV4dCgpOyB9CisgICAgdm9pZCBzZXRUZXh0
KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRUZXh0KHRleHQp
OyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
VXR0ZXJhbmNlLmxhbmcoKTsgfQotICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcp
IHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRMYW5nKGxhbmcpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+bGFuZygpOyB9Cisg
ICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNl
LT5zZXRMYW5nKGxhbmcpOyB9CiAKICAgICBTcGVlY2hTeW50aGVzaXNWb2ljZSogdm9pY2UoKSBj
b25zdDsKICAgICB2b2lkIHNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKik7CiAKLSAgICBm
bG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnZvbHVtZSgp
OyB9Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFu
Y2Uuc2V0Vm9sdW1lKHZvbHVtZSk7IH0KKyAgICBmbG9hdCB2b2x1bWUoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtVXR0ZXJhbmNlLT52b2x1bWUoKTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGZs
b2F0IHZvbHVtZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2x1bWUodm9sdW1lKTsgfQog
Ci0gICAgZmxvYXQgcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucmF0
ZSgpOyB9Ci0gICAgdm9pZCBzZXRSYXRlKGZsb2F0IHJhdGUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5j
ZS5zZXRSYXRlKHJhdGUpOyB9CisgICAgZmxvYXQgcmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnJhdGUoKTsgfQorICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7
IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFJhdGUocmF0ZSk7IH0KIAotICAgIGZsb2F0IHBpdGNo
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5waXRjaCgpOyB9Ci0gICAgdm9p
ZCBzZXRQaXRjaChmbG9hdCBwaXRjaCkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFBpdGNoKHBp
dGNoKTsgfQorICAgIGZsb2F0IHBpdGNoKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVy
YW5jZS0+cGl0Y2goKTsgfQorICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0
Zm9ybVV0dGVyYW5jZS0+c2V0UGl0Y2gocGl0Y2gpOyB9CiAKLSAgICBkb3VibGUgc3RhcnRUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5zdGFydFRpbWUoKTsgfQotICAg
IHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRpbWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5j
ZS5zZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQorICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zdGFydFRpbWUoKTsgfQorICAgIHZvaWQg
c2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFydFRpbWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0
U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KICAgICAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHN0YXJ0KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVu
ZCk7CkBAIC03NSwxMSArNzUsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKLSAgICBjb25z
dCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgcGxhdGZvcm1VdHRlcmFuY2UoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlOyB9CisgICAgUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZvcm1VdHRlcmFuY2UoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlOyB9CiAKIHByaXZhdGU6CiAgICAgU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmKTsK
LSAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSBtX3BsYXRmb3JtVXR0ZXJhbmNl
OworICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9y
bVV0dGVyYW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7CiAg
ICAgCiAgICAgLy8gRXZlbnRUYXJnZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCmluZGV4IGYwZjI0M2QzMGI0NmYwZDYyZTE1
ZTVjMmRiZmM3MDE3YjIzYmI3MmMuLjc2Yzk1Y2JlOThhYmE5Y2I1YWZjYjNlNGNmNDUxNDg5Nzdk
MDNiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1ZvaWNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoU3lu
dGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TcGVlY2hTeW50aGVzaXNWb2lj
ZSgpIHsgfQogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVh
dGUoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPik7CiAgICAgCiAgICAg
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Wb2ljZS0+
dm9pY2VVUkkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDllMDhhOTNiOTVjOTc1MmM0M2JjNDk1
NzNiOTU3MTExYzEzOTgxYmUuLjcyOGIwNzIyNzIwYWU5N2I0ZmM1NDdhOWFkYWMzNjcwM2IyYjJm
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk5Miw3ICs5OTIsNiBAQAogICAgICAgICAgICAgJ01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL2Nocm9taXVtL1NwZWVjaFN5bnRoZXNpc0Nocm9taXVtLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAn
LApAQCAtMzY5NCw2ICszNjkzLDEyIEBACiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1J
bnN0cnVtZW50YXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJ
bnN0cnVtZW50YXRpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCcsCkBAIC0zODY2
LDYgKzM4NzEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU2Ny
ZWVuQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVdpZGdldC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmgnLApAQCAtNzQzMiw2ICs3NDM4LDEwIEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU2Nyb2xsYmFySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViU2Nyb2xsYmFySW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybUtleWZyYW1lLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzLmgKaW5kZXggMjFiOGJjOWFhNGM4MmMzOTQ4OTdmYTUxZDUxZjMxMjcxNmRk
OWU0MS4uOGM5NDRlOTZmNDE2OWFhYmE3MDQ3ZjFiZDY2NTRkMWNjNDFhZGEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCkBAIC0y
OCw3ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTQ2LDcgKzQ4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyhTcGVl
Y2hTeW50aGVzaXMqKTsKIAotICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aHNpczsK
KyAgICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhlc2lzOwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAppbmRleCAyNTRlOTJmMGI4
YTE5ZmU4NmU5MzIzOTg3YzQxMDA0ZTk2NjE4MDZlLi41NjQyZDVmZDc2ZGYwZTVjZTMwMGNmYTlj
NDIxNjI1ODM2ZTA0ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC0yOSw2ICsyOSwx
MSBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNsaWVudCkpOworfQogICAgIAogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBt
X2NsaWVudChjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCA0NGU2MTQyOGIyMzYxZWM1
Y2U5MWIyYzlhMmJiOGE4N2ExMGFjNzU2Li4xYTk5ZTNmNjdhMzA2ZmE2MjhjMTFjZTIzNjYxMGRl
MzUyOGY2ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQwLDkgKzQyLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KCkgeyB9CiB9OwogICAgIAotY2xh
c3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOwogICAg
IAogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogICAg
IHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsgfQpAQCAt
NjksOCArNzEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhcnRUaW1lKGRvdWJsZSBzdGFy
dFRpbWUpIHsgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7IH0KICAgICAKICAgICBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGllbnQ7IH0KKyAgICB2b2lkIHNldENsaWVudChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgCiBwcml2YXRl
OgorICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CisKICAgICBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1fdGV4dDsKICAg
ICBTdHJpbmcgbV9sYW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAppbmRleCA4MmVlZjJlM2ZhNjQ4NzIzNGVh
M2M3YjQ0ZDAwYWYxMGM4N2M4N2MwLi4wNTI2MzI2ODM2MTEyOWJlODVmMzE3OTNhYThhMzk1NzYz
NTU0OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMzQsNiArMzQsMTEgQEAgUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpjcmVhdGUoY28KIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2Uodm9pY2VVUkksIG5hbWUsIGxhbmcsIGxvY2FsU2VydmljZSwgaXNEZWZhdWx0
KSk7CiB9CisKK1Bhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKSk7Cit9CiAgICAgCiBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0
cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBi
b29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgOiBtX3ZvaWNlVVJJKHZvaWNl
VVJJKQpAQCAtNDQsNiArNDksMTIgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVIKIHsKIH0KIAor
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZSgpCisgICAgOiBtX2xvY2FsU2VydmljZShmYWxzZSkKKyAgICAsIG1fZGVmYXVsdChmYWxzZSkK
K3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggNzc0ZTJkNmEyMmQyZjNiZDBlZTY0ZTA0Nzc5
ZjQzYTY2OTU0MTAzOS4uZjdhYmE4YzUyZTQ0NDFiOTQ0YzVjNDU5NTk1OTFlNWE1ZDRmNDczZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UuaApAQCAtMzcsMTUgKzM3LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdm9p
Y2VVUkksIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2Fs
U2VydmljZSwgYm9vbCBpc0RlZmF1bHQpOwotICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZSgpOworCiAgICAgY29uc3QgU3RyaW5n
JiB2b2ljZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VVUkk7IH0KKyAgICB2b2lkIHNldFZv
aWNlVVJJKGNvbnN0IFN0cmluZyYgdm9pY2VVUkkpIHsgbV92b2ljZVVSSSA9dm9pY2VVUkk7IH0K
KwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAg
IHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQorCiAg
ICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcgPSBsYW5nOyB9CisKICAgICBi
b29sIGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTZXJ2aWNlOyB9CisgICAg
dm9pZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2UpIHsgbV9sb2NhbFNlcnZpY2Ug
PSBsb2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4g
bV9kZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQp
IHsgbV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZhdWx0
KTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7CiAKICAgICBTdHJpbmcgbV92
b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAppbmRleCA2NjEyM2Q1YWYxMWNh
YmIwZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5jYmZhM2Y2ZDFhNWJmMTRjZTVhMWY2NWFhOTdh
OTkyMzRkYjEyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIFBhc3NPd25QdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3Jl
YXRlKFBsYXRmb3JtCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKGNsaWVudCkpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQordm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2ljZXMpCiB7Ci0gICAgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOworICAgIG1fdm9pY2VMaXN0ID0gdm9pY2VzOwogfQotICAgIAorCisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmlu
ZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2YTQ2YzI5ZjI5N2RiYzAwZjYuLmYwZDY4OTNhMjFj
NTY4M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBA
CiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworfQorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBTcGVlY2hCb3VuZGFyeSB7CkBAIC00OCwxMiAr
NTUsMTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7CiAKIGNsYXNz
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2VTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJy
b3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRl
eCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCgpIHsgfQpAQCAtNjMs
MjcgKzcwLDMzIEBAIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKCkgeyB9CisgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcigpOwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAg
IHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAg
CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsgfQotICAgIAorCisgICAgdm9pZCBzZXRW
b2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7
CisKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwog
ICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckNsaWVudCopOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAgICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplckNsaWVudCogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVj
aFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8V2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcj4gbV93ZWJTcGVlY2hTeW50aGVzaXplcjsKKyAgICBP
d25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudD4gbV93ZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudDsKKyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4
NjUzZDg0YzE0N2MzMzA5OWI1MDk2MGQ1NTI2YjJjNDQ0MmU0YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisj
aW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVi
bGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDog
bV9zcGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGwodGhpcywgY2xpZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRy
KFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5nZXQoKSkpOworCisgICAgaW5pdGlhbGl6ZVZvaWNl
TGlzdCgpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5p
dGlhbGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIpCisg
ICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0ZVZvaWNlTGlzdCgpOworfQorCit2
b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3sKKyAgICBpZiAoIW1fd2ViU3Bl
ZWNoU3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnNwZWFrKFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkpOworfQorCit2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hTeW50aGVz
aXplcikKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9p
ZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNw
ZWVjaFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUo
KTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAg
IGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNp
emVyLT5jYW5jZWwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMz
OGI5MmU0Yzc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsx
LDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQorCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oPgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAg
IDogbV9wcml2YXRlKHV0dGVyYW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJiBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0
ZSA9IHV0dGVyYW5jZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjphc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQg
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJl
c2V0KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
b3BlcmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0
KCk7Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPnZvaWNlKCkgPyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkp
IDogV2ViU3RyaW5nKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
dm9sdW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKwor
ZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5yYXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6cGl0Y2goKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7
Cit9CisKK2RvdWJsZSBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNi
NzI3Yzg0Nzk0ZTAyMjk3NjJhNDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3Bl
ZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hT
eW50aGVzaXNWb2ljZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRl
OworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9w
cml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZv
aWNlVVJJKGNvbnN0IFdlYlN0cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRW
b2ljZVVSSSh2b2ljZVVSSSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNl
dE5hbWUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShu
YW1lKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29u
c3QgV2ViU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3Vh
Z2UpOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2Vydmlj
ZShib29sIGlzTG9jYWxTZXJ2aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNl
KGlzTG9jYWxTZXJ2aWNlKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0
SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0
KGlzRGVmYXVsdCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZGNkYjg4NGZh
OGVmZGQ1M2YwNTc0Y2NiM2UwOGM0OTJhNWEyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50SW1wbC5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N5bnRoZXNp
emVyKHN5bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwo
KQoreworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2V0Vm9pY2VM
aXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2U+JiB2b2ljZXMpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgVmVjdG9y
PFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9p
Y2VzLmFwcGVuZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNl
c1tpXSkpOworICAgIG1fc3ludGhlc2l6ZXItPnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAg
IG1fY2xpZW50LT52b2ljZXNEaWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7
CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZEZp
bmlzaFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1
dHRlcmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQt
PmRpZEZpbmlzaFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkUGF1c2VTcGVha2luZyh1dHRlcmFuY2Up
OworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRS
ZXN1bWVTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
dXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50
LT5kaWRSZXN1bWVTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+c3BlYWtpbmdFcnJvck9jY3VycmVk
KHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgaW50IGNoYXJJbmRleCkKK3sKKyNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVk
KHV0dGVyYW5jZSwgU3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisK
K3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0
ZXJhbmNlLCBpbnQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQor
ICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJhbmNlLCBTcGVlY2hTZW50
ZW5jZUJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIzNTJhNGVhNDliMGRlMjUwZGFiOTBiYmFmMGFmMjliZWIzN2Q2Y2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFzcyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50OworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIqLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CisgICAg
dmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNw
ZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHdv
cmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmLCBpbnQgY2hhckluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VudGVuY2VCb3Vu
ZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmLCBpbnQgY2hhckluZGV4KTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKiBtX3N5bnRoZXNpemVyOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5k
ZXggNzA5NGZhMzUzODIyZTg3NDVlNDZlMzRkZGJmMzdjNzRiMGVhNTE1NS4uZWI5MmRkNDk4Njcz
MjZmM2ZiOWY0MDA4YTMzZDE2MDc4YTZmNGJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAg
LTE4OCw2ICsxODgsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQo
Y2xpZW50KQoreworICAgIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKK30KKworUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQoreworfQorCiB2b2lk
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewogICAg
IE5TU3RyaW5nICpkZWZhdWx0Vm9pY2VVUkkgPSBbTlNTcGVlY2hTeW50aGVzaXplciBkZWZhdWx0
Vm9pY2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCAxYzY3MTgyMjI3MjJjMWJh
ZWM3YzQ3MzMzNDYxMzljMDVlOWU4NWQ5Li5iMjQ1MWQ4NmI0YjQ0NDU2MTY1YTdjYmJkYjc0N2M5
YjEyZWQ5ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtMzksNyArMzksNiBA
QCBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jazo6Y3JlYXRlKAogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQqIGNsaWVudCkKICAgICA6IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KQog
ICAgICwgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIodGhpcywgJlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKQotICAgICwgbV91dHRlcmFuY2UoMCkKIHsKIH0K
ICAgICAKQEAgLTUwLDcgKzQ5LDcgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6On5Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpCiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s+KikKIHsKLSAgICBBU1NFUlQobV91dHRlcmFuY2UpOworICAgIEFTU0VSVChtX3V0
dGVyYW5jZS5nZXQoKSk7CiAgICAgY2xpZW50KCktPmRpZEZpbmlzaFNwZWFraW5nKG1fdXR0ZXJh
bmNlKTsKICAgICBtX3V0dGVyYW5jZSA9IDA7CiB9CkBAIC02MywxMCArNjIsMTAgQEAgdm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiAgICAg
bV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShT
dHJpbmcoIm1vY2sudm9pY2UubG9nYW4iKSwgU3RyaW5nKCJsb2dhbiIpLCBTdHJpbmcoImZyLUNB
IiksIHRydWUsIHRydWUpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5j
ZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBBU1NF
UlQoIW1fdXR0ZXJhbmNlKTsKLSAgICBtX3V0dGVyYW5jZSA9ICZ1dHRlcmFuY2U7CisgICAgbV91
dHRlcmFuY2UgPSB1dHRlcmFuY2U7CiAgICAgY2xpZW50KCktPmRpZFN0YXJ0U3BlYWtpbmcobV91
dHRlcmFuY2UpOwogICAgIAogICAgIC8vIEZpcmUgYSBmYWtlIHdvcmQgYW5kIHRoZW4gc2VudGVu
Y2UgYm91bmRhcnkgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKaW5kZXggZjEzYjBlMmMw
NWViNmYwZWVhY2ExZDMzMDA1YTg0YzU5NGRmYzZjYi4uYmI3YjRlZjlmYTFlMjU0MWMxMzQxNDM5
ZDU4MGQ1ZjU4NTMwYmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaApAQCAtMzksNyArMzks
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAgICAg
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CkBAIC01MCw3ICs1MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzcGVha2luZ0ZpbmlzaGVkKFRpbWVyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrPiopOwogICAgIAogICAgIFRpbWVyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrPiBtX3NwZWFraW5nRmluaXNoZWRUaW1lcjsKLSAgICBjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3V0dGVyYW5jZTsKIH07CiAgICAgCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193454</attachid>
            <date>2013-03-16 20:10:23 -0700</date>
            <delta_ts>2013-03-19 09:17:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130316200617.patch</filename>
            <type>text/plain</type>
            <size>68735</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZjVmYzAwZDUyMzA3
ZGZlYTYzOTc5ZTY3MWE3YzY4YTRhZThmOGFiLi5mNGIxNTZhZWI3MmU3ZmJkZjU2OGE0YmU2NWYy
OWYxMmFlNzZhZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0xNiAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2VzIGEgcGxhdGZvcm0gQVBJIHRoYXQg
dGhlIGVtYmVkZGVyIGNhbiBpbXBsZW1lbnQgdG8KKyAgICAgICAgcHJvdmlkZSBzcGVlY2ggc3lu
dGhlc2lzIGZvciB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6Y3JlYXRl
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6aXNOdWxsKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNp
emVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xNCAgRGFuYSBKYW5z
ZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ugem9v
bSBmaWx0ZXIgaW5kZXBlbmRlbnQgb2YgdGhlIGxheWVyIHNpemUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhl
MzZlMDNjYmVmNTVkODM4OWY4ODU5MGZjMzUzYmNmNWIwZmUxMy4uYjkxMTA1MDcyMGYyY2VmYmM4
OWI3ZjRiZDNlNDY1OTU5NTZkNGU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMSBAQAorMjAx
My0wMy0xNiAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1w
bGVtZW50YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkg
ZXhwb3NpbmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVu
dC4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMu
aDoKKyAgICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpzZXRMYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6c2V0Vm9sdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldFJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpwaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldFBpdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0U3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6cGxhdGZvcm1VdHRlcmFuY2UpOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2lj
ZSk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6Cisg
ICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNE
ZWZhdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNl
TGlzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCk6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpjYW5jZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjphc3NpZ24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6b3BlcmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2ljZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6
YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJ
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNMb2NhbFNlcnZp
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZh
dWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNldFZvaWNlTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFN0YXJ0U3BlYWtpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRG
aW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGw6OmRpZFBhdXNlU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6Ondv
cmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsOjpzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVh
ayk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2spOgorCiAyMDEzLTAz
LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZmxlY3RlZCB2aWRlbyBlbGVtZW50cyBoaXQgYXNzZXJ0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCmlu
ZGV4IDYwYWMxYjg3NWM0YzY5ZWVhN2E2MjI2Yjc4YTc5NjIzNTdkNjdlMjguLjdjZWZlZmNlMmUy
MDBhOGQ0MTFiOTMzZWQwODU1NDJkMTA2Yzk0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCkBAIC0x
MjgsNiArMTI4LDEwIEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0
cmVhbUhhbmRsZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2xp
ZENvbG9yTGF5ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpemVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
U3RvcmFnZUFyZWEuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VO
YW1lc3BhY2UuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAppbmRleCBmMmE5MTEz
Mzk4NjcwZTZmZmEzYWZmY2U0N2FiYjFmOTY3MTcyZmU1Li44MDZjYzYwODI1MzAxYzE1ZTk3MTI0
NDc4MGU2ZGM5Yjc2MGQzNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViR2FtZXBhZHMuaCIKICNp
bmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXplZFN0
cmluZy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyLmgiCiAjaW5jbHVkZSAiV2Vi
U3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKQEAgLTY5LDYgKzcwLDggQEAgY2xh
c3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50OwogY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQ7CiBjbGFzcyBXZWJTb2Nr
ZXRTdHJlYW1IYW5kbGU7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50OwogY2xhc3MgV2ViU3RvcmFnZU5hbWVzcGFjZTsKIGNsYXNz
IFdlYlVuaXRUZXN0U3VwcG9ydDsKIGNsYXNzIFdlYlRoZW1lRW5naW5lOwpAQCAtMTE1LDYgKzEx
OCw4IEBAIHB1YmxpYzoKICAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KICAgICB2aXJ0dWFs
IFdlYkh5cGhlbmF0b3IqIGh5cGhlbmF0b3IoKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBNYXkg
cmV0dXJuIG51bGwuCisgICAgdmlydHVhbCBXZWJTcGVlY2hTeW50aGVzaXplciogY3JlYXRlU3Bl
ZWNoU3ludGhlc2l6ZXIoV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9
CiAKICAgICAvLyBBdWRpbyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNjUxNmNlM2JjNzViZmFmZDE3MzU3YjgwMjU0NDAzMjQxOTZlODZhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2VfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5o
IgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgeworcHVibGljOgorICAgIFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKSB7IGFzc2lnbihv
dGhlcik7IH0KKyAgICB+V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShjb25zdCBXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKQorICAgIHsKKyAgICAgICAgYXNzaWduKG90
aGVyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHZvaWQgYXNzaWduKGNv
bnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZvaWQgcmVzZXQoKTsKKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisg
ICAgV2ViU3RyaW5nIHRleHQoKSBjb25zdDsKKyAgICBXZWJTdHJpbmcgbGFuZygpIGNvbnN0Owor
ICAgIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gtYXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRt
bAorICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0OyAvLyAwLi4uMSwgMSBpcyBkZWZhdWx0CisgICAg
ZmxvYXQgcmF0ZSgpIGNvbnN0OyAvLyAwLjEuLi4xMCwgMSBpcyBkZWZhdWx0CisgICAgZmxvYXQg
cGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisgICAgZG91YmxlIHN0YXJ0
VGltZSgpIGNvbnN0OyAvLyBJbiBzZWNvbmRzLgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+Jik7CisgICAgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlJiBvcGVyYXRvcj0oV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqKTsKKyAgICBvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPigpIGNvbnN0OworICAgIG9wZXJhdG9yIFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKigpIGNvbnN0OworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZkNWExNjEzYzBhYjdjNTJhNzc2ZWM4MmNhNjQyNDZhZmE2YTJmMzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisK
KyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5j
bHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZSB7CitwdWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lz
Vm9pY2UoKSB7IH0KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBXZWJTcGVlY2hT
eW50aGVzaXNWb2ljZSYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hT
eW50aGVzaXNWb2ljZSgpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UmIG9wZXJhdG9yPShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3RoZXIpCisgICAg
eworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNW
b2ljZSYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOworCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFZvaWNlVVJJKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRMYW5ndWFnZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0SXNMb2NhbFNlcnZpY2UoYm9vbCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldElzRGVm
YXVsdChib29sKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIG9wZXJhdG9yIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPigpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YzBmOTY1YzQxNWNhNDk1ODc5NTI2ZGIwMjMzMjZlMWYzNjU2ZDY4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXplci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVj
aFN5bnRoZXNpemVyX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorCisjaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudDsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsKKwor
Y2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlNw
ZWVjaFN5bnRoZXNpemVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVm9pY2VMaXN0
KCkgPSAwOworCisgICAgLy8gT0sgdG8gY2FsbCB3aXRoIG1vcmUgdGhhbiBvbmUgdXR0ZXJhbmNl
LCB3aWxsIHF1ZXVlLgorICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hT
eW50aGVzaXplcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ3MDcyN2E0
OWIxZDA1ZmFjYThmY2JjNGY3ZjMwYjQ4YjJlN2I1MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dF9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB+V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWb2ljZUxpc3QoY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmco
Y29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXN1bWVTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgd29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmLCBpbnQgY2hhckluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbnRl
bmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSYsIGludCBjaGFySW5kZXgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBl
ZjZkNzg0OWI3NGM2ZTllNjk4ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYw
MWEwMTg1M2U2NThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXMuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNI
X1NZTlRIRVNJUykKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuaCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgog
I2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5k
bGVTcGVha2luZ0NvbXBsZXRlZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAg
ICAgfQogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVl
Y2hCb3VuZGFyeSBib3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNp
Z25lZCBjaGFySW5kZXgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHdvcmRCb3VuZGFyeVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJ
SUxpdGVyYWwoInNlbnRlbmNlIikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNo
U3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuCiAgICAgfQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNl
KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVu
dChldmVudE5hbWVzKCkuc3RhcnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0
ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2
ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNs
aWVudCgpKSwgMCwgU3RyaW5nKCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRp
ZFBhdXNlU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0
dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBt
X2lzUGF1c2VkID0gdHJ1ZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQs
IHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50
KCkpLCAwLCBTdHJpbmcoKSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAg
IGZpcmVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0K
IAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNp
czo6ZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJl
RXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlm
ICh1dHRlcmFuY2UtPmNsaWVudCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJl
c3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFu
Y2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6
ZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0g
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNl
LT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsK
IH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5n
Q29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5j
ZS0+Y2xpZW50KCkpLCB0cnVlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5
ZmMyY2I5MThhNTQxYjU3ZGRiNmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVh
MmNhMmE1ZWFjYWE1ZmViN2U4YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAg
CiAgICAgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2Rz
LgogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNv
bnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5n
KGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2
ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVl
Y2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFz
c1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBP
VkVSUklERTsKIAogICAgIHZvaWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSopOwogICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwCmluZGV4IGRjMjAyZDM0MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLmJjNTUy
M2U1ZDE1OWNkM2E3YjZkYTRmODMzNDVhM2RlNWY3YWU0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNw
cApAQCAtMzcsOSArMzcsOSBAQCBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4g
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlYwogCiBTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgOiBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlcihjb250ZXh0KQotICAgICwgbV9wbGF0Zm9ybVV0dGVyYW5jZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSh0aGlzKSkKKyAgICAsIG1fcGxhdGZvcm1VdHRlcmFu
Y2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZSh0aGlzKSkKIHsKLSAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFRleHQodGV4dCk7CisgICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS0+c2V0VGV4dCh0ZXh0KTsKIH0KICAgICAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkBA
IC02NCw3ICs2NCw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzZXRWb2ljZShT
cGVlY2hTeW50aGVzaXNWb2ljZSogdm9pY2UpCiAgICAgbV92b2ljZSA9IHZvaWNlOwogICAgIAog
ICAgIGlmICh2b2ljZSkKLSAgICAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRWb2ljZSh2b2lj
ZS0+cGxhdGZvcm1Wb2ljZSgpKTsKKyAgICAgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9p
Y2Uodm9pY2UtPnBsYXRmb3JtVm9pY2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmgKaW5kZXggMjliZmRjNGE0MzQzMDVkZGYyZTZhOTY5ZjQxMGQwYzM3MWQ3
N2YzOS4uODJmODk2N2U5ZjE3MjAxYTkwNmNjMDIwNmY5YmY5ZmQ2OTg2ODIwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmgKQEAgLTQxLDI2ICs0MSwyNiBAQCBjbGFzcyBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQsCiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwogICAgIAotICAgIGNv
bnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UudGV4
dCgpOyB9Ci0gICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3BsYXRmb3Jt
VXR0ZXJhbmNlLnNldFRleHQodGV4dCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7IH0KIAotICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFu
ZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExhbmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5sYW5nKCk7IH0K
KyAgICB2b2lkIHNldExhbmcoY29uc3QgU3RyaW5nJiBsYW5nKSB7IG1fcGxhdGZvcm1VdHRlcmFu
Y2UtPnNldExhbmcobGFuZyk7IH0KIAogICAgIFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0Vm9pY2UoU3BlZWNoU3ludGhlc2lzVm9pY2UqKTsKIAotICAg
IGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uudm9sdW1l
KCk7IH0KLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRWb2x1bWUodm9sdW1lKTsgfQorICAgIGZsb2F0IHZvbHVtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnZvbHVtZSgpOyB9CisgICAgdm9pZCBzZXRWb2x1bWUo
ZmxvYXQgdm9sdW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFZvbHVtZSh2b2x1bWUpOyB9
CiAKLSAgICBmbG9hdCByYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS5y
YXRlKCk7IH0KLSAgICB2b2lkIHNldFJhdGUoZmxvYXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJh
bmNlLnNldFJhdGUocmF0ZSk7IH0KKyAgICBmbG9hdCByYXRlKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVV0dGVyYW5jZS0+cmF0ZSgpOyB9CisgICAgdm9pZCBzZXRSYXRlKGZsb2F0IHJhdGUp
IHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0UmF0ZShyYXRlKTsgfQogCi0gICAgZmxvYXQgcGl0
Y2goKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnBpdGNoKCk7IH0KLSAgICB2
b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNoKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0UGl0Y2go
cGl0Y2gpOyB9CisgICAgZmxvYXQgcGl0Y2goKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLT5waXRjaCgpOyB9CisgICAgdm9pZCBzZXRQaXRjaChmbG9hdCBwaXRjaCkgeyBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT5zZXRQaXRjaChwaXRjaCk7IH0KIAotICAgIGRvdWJsZSBzdGFydFRp
bWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnN0YXJ0VGltZSgpOyB9Ci0g
ICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3BsYXRmb3JtVXR0ZXJh
bmNlLnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnN0YXJ0VGltZSgpOyB9CisgICAgdm9p
ZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5z
ZXRTdGFydFRpbWUoc3RhcnRUaW1lKTsgfQogICAgIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoc3RhcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZW5kKTsKQEAgLTc1LDExICs3NSwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAotICAgIGNv
bnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBwbGF0Zm9ybVV0dGVyYW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2U7IH0KKyAgICBQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2U7IH0KIAogcHJpdmF0ZToKICAgICBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYp
OwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRlcmFu
Y2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRm
b3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsK
ICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBkNjJl
MTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0ODk3
N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hT
eW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNpc1Zv
aWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IGNy
ZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAKICAg
ICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZvaWNl
LT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWUwOGE5M2I5NWM5NzUyYzQzYmM0
OTU3M2I5NTcxMTFjMTM5ODFiZS4uNzI4YjA3MjI3MjBhZTk3YjRmYzU0N2E5YWRhYzM2NzAzYjJi
MmY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTkyLDcgKzk5Miw2IEBACiAgICAgICAgICAgICAn
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCi0gICAgICAgICAgICAnTW9k
dWxlcy9zcGVlY2gvY2hyb21pdW0vU3BlZWNoU3ludGhlc2lzQ2hyb21pdW0uY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNw
cCcsCkBAIC0zNjk0LDYgKzM2OTMsMTIgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9y
bUluc3RydW1lbnRhdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybU1lbW9y
eUluc3RydW1lbnRhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oJywKQEAgLTM4
NjYsNiArMzg3MSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
Y3JlZW5DaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRm
b3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybVRoZW1lQ2hyb21pdW1EZWZhdWx0LmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtV2lkZ2V0LmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIuaCcsCkBAIC03NDMyLDYgKzc0MzgsMTAg
QEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlOYXRpdmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJTY3JvbGxiYXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5j
cHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUaHJlYWRTYWZlRGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtS2V5ZnJhbWUuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0
aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5N2ZhNTFkNTFmMzEyNzE2
ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0MWFkYTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKQEAg
LTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNDYsNyAr
NDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNw
ZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVjaFN5bnRoc2lz
OworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IDI1NGU5MmYw
YjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZkNzZkZjBlNWNlMzAwY2Zh
OWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAgLTI5LDYgKzI5
LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9CiAgICAgCiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkKICAgICA6
IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDQ0ZTYxNDI4YjIzNjFl
YzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZmYTYyOGMxMWNlMjM2NjEw
ZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjksNiArMjksOCBAQAogI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7IH0KIH07CiAgICAgCi1j
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7CitjbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CiAg
ICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAg
ICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0OyB9CkBA
IC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0
YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAgIAogICAgIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAgIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgyZWVmMmUzZmE2NDg3MjM0
ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4NWYzMTc5M2FhOGEzOTU3
NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwxMSBAQCBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1
bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30KICAgICAKIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3Qg
U3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcs
IGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6IG1fdm9pY2VVUkkodm9p
Y2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUgogewogfQog
CitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwgbV9kZWZhdWx0KGZhbHNl
KQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIyZDJmM2JkMGVlNjRlMDQ3
NzlmNDNhNjY5NTQxMDM5Li5mN2FiYThjNTJlNDQ0MWI5NDRjNWM0NTk1OTU5MWU1YTVkNGY0NzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9j
YWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisKICAgICBjb25zdCBTdHJp
bmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsgfQorICAgIHZvaWQgc2V0
Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID12b2ljZVVSSTsg
fQorCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Cisg
ICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CisK
ICAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBtX2xhbmc7IH0KKyAgICB2
b2lkIHNldExhbmcoY29uc3QgU3RyaW5nJiBsYW5nKSB7IG1fbGFuZyA9IGxhbmc7IH0KKwogICAg
IGJvb2wgbG9jYWxTZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbFNlcnZpY2U7IH0KKyAg
ICB2b2lkIHNldExvY2FsU2VydmljZShib29sIGxvY2FsU2VydmljZSkgeyBtX2xvY2FsU2Vydmlj
ZSA9IGxvY2FsU2VydmljZTsgfQorCiAgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCB7IHJldHVy
biBtX2RlZmF1bHQ7IH0KLSAgICAKKyAgICB2b2lkIHNldElzRGVmYXVsdChib29sIGlzRGVmYXVs
dCkgeyBtX2RlZmF1bHQgPSBpc0RlZmF1bHQ7IH0KKwogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkksIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2VydmljZSwgYm9vbCBpc0RlZmF1
bHQpOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKTsKIAogICAgIFN0cmluZyBt
X3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCmluZGV4IDY2MTIzZDVhZjEx
Y2FiYjBlY2UzZWFhNGM2MjA3MTc1YWE2MWU2ZjcuLmNiZmEzZjZkMWE1YmYxNGNlNWExZjY1YWE5
N2E5OTIzNGRiMTI4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAgUGFzc093blB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpj
cmVhdGUoUGxhdGZvcm0KICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIoY2xpZW50KSk7CiB9CiAKLVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xp
ZW50KQotICAgIDogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit2b2lkIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZvaWNlcykKIHsKLSAgICBpbml0aWFsaXplVm9pY2VM
aXN0KCk7CisgICAgbV92b2ljZUxpc3QgPSB2b2ljZXM7CiB9Ci0gICAgCisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgK
aW5kZXggY2ZkYzdlMTlkMDAzYjg5Y2U4MTZjNDZhNDZjMjlmMjk3ZGJjMDBmNi4uNjVkYmNhMjli
ZTY1NGRjNGQzNmE5M2EwMWY2MmQ4MDA2YWFkMmEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaApAQCAtMzcsNiArMzcsMTMg
QEAKIE9CSkNfQ0xBU1MgV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcjsKICNlbmRpZgogCisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7Cit9CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIFNwZWVjaEJvdW5kYXJ5IHsKQEAgLTQ4LDEy
ICs1NSwxMiBAQCBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsKIAogY2xh
c3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdF
cnJvck9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhcklu
ZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFz
c1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHZvaWNlc0RpZENoYW5nZSgpID0gMDsKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KCkgeyB9CkBAIC02
NiwyNCArNzMsMzAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIoKSB7IH0KICAgICAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+ID4mIHZvaWNlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VMaXN0
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogICAg
IAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KLSAgICAKKworICAgIHZvaWQgc2V0
Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYp
OworCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsK
ICAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqKTsKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+ID4gbV92b2ljZUxpc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQqIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7Ci0gICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKICAgICAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+IG1fcGxhdGZvcm1TcGVl
Y2hXcmFwcGVyOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3duUHRyPFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXI+IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXI7CisgICAg
T3duUHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ+IG1fd2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQ7CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OWExZGY0ZjY5NDE3N2RiYWZmYmQ0ZDVkMTdiNjQwN2ZjODEwMzFkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNocm9taXVtLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgor
I2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgPHB1
YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6
IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQoreworICAgIG1fd2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsKHRoaXMsIGNsaWVudCkpOworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIgPSBhZG9wdFB0
cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVNwZWVjaFN5bnRoZXNpemVyKG1f
d2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuZ2V0KCkpKTsKKworICAgIGluaXRpYWxpemVWb2lj
ZUxpc3QoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXpl
Vm9pY2VMaXN0KCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hTeW50aGVzaXplcikKKyAgICAgICAg
bV93ZWJTcGVlY2hTeW50aGVzaXplci0+dXBkYXRlVm9pY2VMaXN0KCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQoreworICAgIGlmICghbV93ZWJTcGVlY2hTeW50
aGVzaXplciB8fCAhbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+c3BlYWsoV2ViS2l0OjpXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UodXR0ZXJhbmNlKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6cGF1c2UoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyKQor
ICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5wYXVzZSgpOworfQorCit2b2lkIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3lu
dGhlc2l6ZXIpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnJlc3VtZSgpOworfQor
Cit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1f
d2ViU3BlZWNoU3ludGhlc2l6ZXIpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPmNh
bmNlbCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMGY5MmY2ODRkNDBkZjIyNTI3ZjgxMzQ5ZjIwMzM4YjkyZTRj
NzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC0wLDAgKzEsMTA4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CisK
KyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiB1dHRlcmFuY2UpCisgICAgOiBtX3By
aXZhdGUodXR0ZXJhbmNlKQoreworfQorCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3I9KFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit7CisgICAgbV9wcml2YXRlID0gdXR0
ZXJhbmNlOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVy
KQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsK
K30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS5nZXQoKTsKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVyYXRv
ciBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSooKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnRleHQoKTsKK30K
KworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGFuZygpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjp2b2ljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dm9pY2UoKSA/IFdlYlN0cmluZyhtX3ByaXZhdGUtPnZvaWNlKCktPm5hbWUoKSkgOiBXZWJT
dHJpbmcoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2x1bWUo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvbHVtZSgpOworfQorCitmbG9hdCBX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUtPnJhdGUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
OjpwaXRjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGl0Y2goKTsKK30KKwor
ZG91YmxlIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5zdGFydFRpbWUoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk1ZDUxMjEyY2I3MjdjODQ3
OTRlMDIyOTc2MmE0MjEzMzZmNDcwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBA
IC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg+CisKKyNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvbkFsdGVybmF0aXZlLmgiCisjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9p
ZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6YXNzaWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisK
K3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUu
cmVzZXQoKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0Vm9pY2VVUkko
Y29uc3QgV2ViU3RyaW5nJiB2b2ljZVVSSSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFZvaWNlVVJJ
KHZvaWNlVVJJKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TmFtZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUpCit7CisgICAgbV9wcml2YXRlLT5zZXROYW1lKG5hbWUpOwor
fQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMYW5ndWFnZShjb25zdCBXZWJT
dHJpbmcmIGxhbmd1YWdlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TGFuZyhsYW5ndWFnZSk7Cit9
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKGJvb2wg
aXNMb2NhbFNlcnZpY2UpCit7CisgICAgbV9wcml2YXRlLT5zZXRMb2NhbFNlcnZpY2UoaXNMb2Nh
bFNlcnZpY2UpOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0RlZmF1
bHQoYm9vbCBpc0RlZmF1bHQpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0RlZmF1bHQoaXNEZWZh
dWx0KTsKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdkY2RiODg0ZmE4ZWZkZDUz
ZjA1NzRjY2IzZTA4YzQ5MmE1YTIxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
LmNwcApAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudEltcGwoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciogc3ludGhlc2l6ZXIsIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3ludGhlc2l6ZXIoc3lu
dGhlc2l6ZXIpCisgICAgLCBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK1dlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCgpCit7Cit9
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QoY29u
c3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZv
aWNlcykKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBWZWN0b3I8UmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4gb3V0Vm9pY2VzOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdm9pY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBvdXRWb2ljZXMuYXBw
ZW5kKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4odm9pY2VzW2ldKSk7
CisgICAgbV9zeW50aGVzaXplci0+c2V0Vm9pY2VMaXN0KG91dFZvaWNlcyk7CisgICAgbV9jbGll
bnQtPnZvaWNlc0RpZENoYW5nZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFN0YXJ0U3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3Bl
YWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5j
ZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoU3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6ZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRQYXVzZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFJlc3VtZVNw
ZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFu
Y2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFJl
c3VtZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5zcGVha2luZ0Vycm9yT2NjdXJyZWQodXR0ZXJh
bmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6
d29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYgdXR0ZXJhbmNlLCBpbnQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJh
bmNlLCBTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3Vy
cmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2Us
IGludCBjaGFySW5kZXgpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9j
bGllbnQtPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCh1dHRlcmFuY2UsIFNwZWVjaFNlbnRlbmNlQm91
bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjM1MmE0ZWE0OWIwZGUyNTBkYWI5MGJiYWYwYWYyOWJlYjM3ZDZjZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKKyNkZWZpbmUgV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQ7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCA6IHB1
YmxpYyBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplciosIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWb2ljZUxpc3QoY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNWb2ljZT4mIHZvaWNlcyk7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmco
Y29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYp
OworICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgd29yZEJvdW5k
YXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSYsIGludCBjaGFySW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIGlu
dCBjaGFySW5kZXgpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIq
IG1fc3ludGhlc2l6ZXI7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9j
bGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRleCA3MDk0
ZmEzNTM4MjJlODc0NWU0NmUzNGRkYmYzN2M3NGIwZWE1MTU1Li5mZDQ4NDc0YzI1NWZkMmYwZDg3
NDIzN2QwZmYxYjAyM2E2NWU4MmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgogI2luY2x1ZGUgPEFwcEtp
dC9OU1NwZWVjaFN5bnRoZXNpemVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
QEAgLTM3LDE0ICszOCwxNCBAQAogewogICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIqIG1fc3ludGhlc2l6ZXJPYmplY3Q7CiAgICAgLy8gSG9sZCBhIFJlZiB0byB0aGUgdXR0
ZXJhbmNlIHNvIHRoYXQgaXQgd29uJ3QgZGlzYXBwZWFyIHVudGlsIHRoZSBzeW50aCBpcyBkb25l
IHdpdGggaXQuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqIG1fdXR0ZXJhbmNlOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKICAgICAKICAgICBSZXRhaW5QdHI8TlNTcGVlY2hTeW50
aGVzaXplcj4gbV9zeW50aGVzaXplcjsKICAgICBmbG9hdCBtX2Jhc2VQaXRjaDsKIH0KIAogLSAo
V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciAqKWluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6KFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgKilzeW50aGVzaXplcjsKLS0gKHZvaWQp
c3BlYWtVdHRlcmFuY2U6KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlICopdXR0ZXJhbmNlOworLSAodm9pZClzcGVha1V0dGVyYW5jZTooV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2U7CiAKIEBlbmQKIApAQCAt
ODEsNyArODIsNyBAQAogICAgIG1fYmFzZVBpdGNoID0gW1ttX3N5bnRoZXNpemVyIG9iamVjdEZv
clByb3BlcnR5Ok5TU3BlZWNoUGl0Y2hCYXNlUHJvcGVydHkgZXJyb3I6bmlsXSBmbG9hdFZhbHVl
XTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2UKKy0gKHZvaWQpc3BlYWtVdHRlcmFu
Y2U6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICopdXR0ZXJhbmNl
CiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4
aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVy
YW5jZSk7CkBAIC0xNjUsNyArMTY2LDcgQEAKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKICAg
ICAKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFyaWFibGUgaW4gY2FzZSBmaW5pc2gg
c3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpvYiBpbW1lZGlhdGVseS4KLSAgICBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNl
ID0gbV91dHRlcmFuY2U7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNlID0gMDsKICAg
ICAKICAgICBpZiAoZmluaXNoZWRTcGVha2luZykKQEAgLTE4OCw2ICsxODksMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkK
KyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQoreworICAgIGluaXRpYWxp
emVWb2ljZUxpc3QoKTsKK30KKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0
aWFsaXplVm9pY2VMaXN0KCkKIHsKICAgICBOU1N0cmluZyAqZGVmYXVsdFZvaWNlVVJJID0gW05T
U3BlZWNoU3ludGhlc2l6ZXIgZGVmYXVsdFZvaWNlXTsKQEAgLTIyMCwxMiArMjI3LDEyIEBAIHZv
aWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKICAgICBbbV9wbGF0Zm9ybVNw
ZWVjaFdyYXBwZXIuZ2V0KCkgcmVzdW1lXTsKIH0KICAgICAKLXZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6c3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
IHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAg
IGlmICghbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIpCiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hX
cmFwcGVyLmFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGFsbG9jXSBpbml0V2l0
aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKICAgICAKLSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6JnV0dGVyYW5jZV07CisgICAgW21fcGxhdGZvcm1T
cGVlY2hXcmFwcGVyLmdldCgpIHNwZWFrVXR0ZXJhbmNlOnV0dGVyYW5jZS5nZXQoKV07CiB9CiAK
IHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jay5jcHAKaW5kZXggMWM2NzE4MjIyNzIyYzFiYWVjN2M0NzMzMzQ2MTM5YzA1ZTllODVk
OS4uYjI0NTFkODZiNGI0NDQ1NjE2NWE3Y2JiZGI3NDdjOWIxMmVkOWQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jay5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgUGFzc093blB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jaz4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmNyZWF0
ZSgKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkKICAgICAsIG1fc3BlYWtpbmdGaW5pc2hl
ZFRpbWVyKHRoaXMsICZQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5p
c2hlZCkKLSAgICAsIG1fdXR0ZXJhbmNlKDApCiB7CiB9CiAgICAgCkBAIC01MCw3ICs0OSw3IEBA
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2soKQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0Zp
bmlzaGVkKFRpbWVyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiopCiB7Ci0gICAgQVNT
RVJUKG1fdXR0ZXJhbmNlKTsKKyAgICBBU1NFUlQobV91dHRlcmFuY2UuZ2V0KCkpOwogICAgIGNs
aWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyhtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2Ug
PSAwOwogfQpAQCAtNjMsMTAgKzYyLDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmxvZ2Fu
IiksIFN0cmluZygibG9nYW4iKSwgU3RyaW5nKCJmci1DQSIpLCB0cnVlLCB0cnVlKSk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7Ci0gICAg
bV91dHRlcmFuY2UgPSAmdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwog
ICAgIGNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKICAgICAKICAgICAv
LyBGaXJlIGEgZmFrZSB3b3JkIGFuZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5oCmluZGV4IGYxM2IwZTJjMDVlYjZmMGVlYWNhMWQzMzAwNWE4NGM1
OTRkZmM2Y2IuLmJiN2I0ZWY5ZmExZTI1NDFjMTM0MTQzOWQ1ODBkNWY1ODUzMGJjZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBjcmVhdGUoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIAogICAgIHZpcnR1YWwgflBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpOwpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Bl
YWtpbmdGaW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKTsKICAg
ICAKICAgICBUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gbV9zcGVha2luZ0Zp
bmlzaGVkVGltZXI7Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IG1fdXR0ZXJhbmNlOworICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gbV91dHRlcmFuY2U7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193842</attachid>
            <date>2013-03-19 09:17:31 -0700</date>
            <delta_ts>2013-03-19 15:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130319091322.patch</filename>
            <type>text/plain</type>
            <size>70389</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZjVmYzAwZDUyMzA3
ZGZlYTYzOTc5ZTY3MWE3YzY4YTRhZThmOGFiLi40MmJmNjAzZGM3NjkzMjI4NTQ0Y2I2ODYzMTY0
ZGVjZTBhZjI2Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0xOSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2VzIGEgcGxhdGZvcm0gQVBJIHRoYXQg
dGhlIGVtYmVkZGVyIGNhbiBpbXBsZW1lbnQgdG8KKyAgICAgICAgcHJvdmlkZSBzcGVlY2ggc3lu
dGhlc2lzIGZvciB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6c3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
aXNOdWxsKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNpemVyKToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDo6fldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xNCAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ugem9vbSBmaWx0
ZXIgaW5kZXBlbmRlbnQgb2YgdGhlIGxheWVyIHNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3
N2Q0MGU1MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uMGZlMjkyMGNiMzBkMTE0ZTgxYjFjMTI1
YWIzM2FmOGYyMjEzNzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAxMy0wMy0x
OSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50
YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3Np
bmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKwor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAg
ICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6Cisg
ICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNE
ZWZhdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxp
c3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFz
c2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVs
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6
On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmlu
aXNoU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3Jk
Qm91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVy
IHNwZWFrVXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVz
aXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrKToKKwogMjAxMy0wMy0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgw
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggNjBhYzFiODc1YzRjNjllZWE3YTYyMjZiNzhhNzk2
MjM1N2Q2N2UyOC4uN2NlZmVmY2UyZTIwMGE4ZDQxMWI5MzNlZDA4NTU0MmQxMDZjOTRiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkKQEAgLTEyOCw2ICsxMjgsMTAgQEAKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUu
LjA1N2ZiNTRhNzAzZTE3ZTk3NzU2OGQ2MGY4YTU2NDdkOWI1NzJhNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJXZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhl
c2l6ZXIuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIK
IApAQCAtNjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBj
bGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94
U3VwcG9ydDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJT
dG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhl
bWVFbmdpbmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJu
IG5vbi1udWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0
dXJuIDA7IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVj
aFN5bnRoZXNpemVyKiBzcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0
ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citw
dWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
b3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0
OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gt
YXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
dm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisg
ICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3
NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5l
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0
OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxs
IHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFj
YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJ
bmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4
ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRl
ZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNl
IikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3Rh
cnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5n
KCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7
CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4o
dXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRl
cmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVu
dCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmco
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQg
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19j
YXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVl
KTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRi
NmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9p
ZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFr
aW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZv
aWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwog
ICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0
MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgw
OTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQg
QEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAg
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkK
ICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0
YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVh
Mjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBA
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQor
ICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExh
bmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxh
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2Uq
IHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSop
OwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZv
bHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxv
YXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBm
bG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsg
fQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNo
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91Ymxl
IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1l
KCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0K
KyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0
ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRl
cmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2lj
ZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBk
NjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0
ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZv
aWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUyN2QzOTVlNmVlZGI4
N2U4NzljNGJlYTYyOTg3Y2JjM2FhMDM1ZmMuLjYxNTkwYTQyOTRmM2FiNjU2ZGFiZjIyNjQ1ZDhh
YzExYzNiZTQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY1LDYgKzE1NjUsNyBAQCBf
X1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRW
TjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA5ZTA4YTkzYjk1Yzk3NTJjNDNiYzQ5NTczYjk1NzExMWMxMzk4MWJlLi43
MjhiMDcyMjcyMGFlOTdiNGZjNTQ3YTlhZGFjMzY3MDNiMmIyZjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05OTIsNyArOTkyLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9T
cGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTQsNiArMzY5Mywx
MiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg2Niw2ICszODcxLDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVs
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cENvbnRhaW5lci5oJywKQEAgLTc0MzIsNiArNzQzOCwxMCBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJh
ckltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCmluZGV4
IDIxYjhiYzlhYTRjODJjMzk0ODk3ZmE1MWQ1MWYzMTI3MTZkZDllNDEuLjhjOTQ0ZTk2ZjQxNjlh
YWJhNzA0N2YxYmQ2NjU0ZDFjYzQxYWRhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaApAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Niw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKik7CiAKLSAg
ICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhzaXM7CisgICAgU3BlZWNoU3ludGhlc2lz
KiBtX3NwZWVjaFN5bnRoZXNpczsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5jcHAKaW5kZXggMjU0ZTkyZjBiOGExOWZlODZlOTMyMzk4N2M0MTAw
NGU5NjYxODA2ZS4uNTY0MmQ1ZmQ3NmRmMGU1Y2UzMDBjZmE5YzQyMTYyNTgzNmUwNGQ3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMjksNiArMjksMTEgQEAKICNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGll
bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZShjbGllbnQpKTsKK30KICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmgKaW5kZXggNDRlNjE0MjhiMjM2MWVjNWNlOTFiMmM5YTJiYjhhODdhMTBh
Yzc1Ni4uMWE5OWUzZjY3YTMwNmZhNjI4YzExY2UyMzY2MTBkZTM1MjhmNmQ2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVT
SVMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00MCw5
ICs0Miw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCgpIHsgfQogfTsKICAgICAKLWNsYXNzIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlIHsKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKICAgICAKICAgICBjb25zdCBTdHJpbmcm
IHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRleHQ7IH0KQEAgLTY5LDggKzcxLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fc3RhcnRUaW1l
ID0gc3RhcnRUaW1lOyB9CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBz
ZXRDbGllbnQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkg
eyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZUNsaWVudCopOworCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3RleHQ7CiAgICAgU3RyaW5nIG1fbGFuZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5jcHAKaW5kZXggODJlZWYyZTNmYTY0ODcyMzRlYTNjN2I0NGQwMGFmMTBjODdjODdj
MC4uMDUyNjMyNjgzNjExMjliZTg1ZjMxNzkzYWE4YTM5NTc2MzU1NDljYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHAKQEAgLTM0LDYgKzM0LDExIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNvCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZvaWNlVVJJ
LCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOwogfQorCitQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlKCkpOworfQogICAgIAogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJv
b2wgaXNEZWZhdWx0KQogICAgIDogbV92b2ljZVVSSSh2b2ljZVVSSSkKQEAgLTQ0LDYgKzQ5LDEy
IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSCiB7CiB9CiAKK1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKQorICAgIDogbV9sb2NhbFNl
cnZpY2UoZmFsc2UpCisgICAgLCBtX2RlZmF1bHQoZmFsc2UpCit7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oCmluZGV4IDc3NGUyZDZhMjJkMmYzYmQwZWU2NGUwNDc3OWY0M2E2Njk1NDEwMzkuLmY3YWJh
OGM1MmU0NDQxYjk0NGM1YzQ1OTU5NTkxZTVhNWQ0ZjQ3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKQEAgLTM3
LDE1ICszNywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZh
dWx0KTsKLSAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlPiBjcmVhdGUoKTsKKwogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VVUkkoKSBjb25zdCB7
IHJldHVybiBtX3ZvaWNlVVJJOyB9CisgICAgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBTdHJpbmcm
IHZvaWNlVVJJKSB7IG1fdm9pY2VVUkkgPXZvaWNlVVJJOyB9CisKICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB2b2lkIHNldE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJp
bmcmIGxhbmcpIHsgbV9sYW5nID0gbGFuZzsgfQorCiAgICAgYm9vbCBsb2NhbFNlcnZpY2UoKSBj
b25zdCB7IHJldHVybiBtX2xvY2FsU2VydmljZTsgfQorICAgIHZvaWQgc2V0TG9jYWxTZXJ2aWNl
KGJvb2wgbG9jYWxTZXJ2aWNlKSB7IG1fbG9jYWxTZXJ2aWNlID0gbG9jYWxTZXJ2aWNlOyB9CisK
ICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdDsgfQotICAgIAor
ICAgIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KSB7IG1fZGVmYXVsdCA9IGlzRGVm
YXVsdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29u
c3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxh
bmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7CisgICAgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZSgpOwogCiAgICAgU3RyaW5nIG1fdm9pY2VVUkk7CiAgICAgU3RyaW5n
IG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplci5jcHAKaW5kZXggNjYxMjNkNWFmMTFjYWJiMGVjZTNlYWE0YzYyMDcxNzVh
YTYxZTZmNy4uNmJiYTU5Mzk0M2IzYWVkY2I2ZTMyYjY3YWI2YzM3MDRjYzI5ZmQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ci5jcHAKQEAgLTMyLDE1ICszMiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBQYXNz
T3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXI6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkp
OworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyID0gbmV3IFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KTsKKyAgICBzeW50aGVzaXplci0+aW5pdGlhbGl6
ZVZvaWNlTGlzdCgpOworICAgIHJldHVybiBhZG9wdFB0cihzeW50aGVzaXplcik7CiB9CiAKLVBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQotICAgIDogbV9zcGVlY2hTeW50aGVz
aXplckNsaWVudChjbGllbnQpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZv
aWNlTGlzdChWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZv
aWNlcykKIHsKLSAgICBpbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAgbV92b2ljZUxpc3QgPSB2
b2ljZXM7CiB9Ci0gICAgCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKaW5kZXggY2ZkYzdlMTlkMDAzYjg5Y2U4MTZj
NDZhNDZjMjlmMjk3ZGJjMDBmNi4uMTAxM2U1YjAyY2IyNTJmNDg4NGNlYTI0NTE1Yjc3NjBiNGUy
OTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIuaApAQCAtMzcsNiArMzcsMTMgQEAKIE9CSkNfQ0xBU1MgV2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnQ7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBl
bnVtIFNwZWVjaEJvdW5kYXJ5IHsKQEAgLTQ4LDEyICs1NSwxMiBAQCBjbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBT
cGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3Vy
cmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hC
b3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZvaWNl
c0RpZENoYW5nZSgpID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50KCkgeyB9CkBAIC02MywyNyArNzAsMzMgQEAgY2xhc3MgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcj4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQqKTsKIAotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0K
KyAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCk7CiAgICAgCiAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2ljZUxp
c3QoKSBjb25zdCB7IHJldHVybiBtX3ZvaWNlTGlzdDsgfQotICAgIHZpcnR1YWwgdm9pZCBzcGVh
ayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwg
dm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7
CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVy
Q2xpZW50OyB9Ci0gICAgCisKKyAgICB2b2lkIHNldFZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mKTsKKwogcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAgICAgVmVj
dG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG1fdm9pY2VMaXN0Owog
ICAgIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBtX3Nw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50OwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVm9pY2VM
aXN0KCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyPiBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcjsKICNlbmRpZgorI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXIqIG1fd2Vi
U3BlZWNoU3ludGhlc2l6ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQ+IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CisjZW5kaWYKIH07CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNo
cm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWRlNzliYzUwMDg3ZGM1MDNhYmNjYmEyZjY3YTQwM2Y5
YWVkZWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcApAQCAtMCwwICsxLDkyIEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIldlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNp
ZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQoY2xpZW50KQoreworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgPSBh
ZG9wdFB0cihuZXcgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKHRoaXMsIGNsaWVudCkp
OworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50
KCktPnNwZWVjaFN5bnRoZXNpemVyKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuZ2V0KCkp
OworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6
ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIpCisgICAgICAg
IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0ZVZvaWNlTGlzdCgpOworfQorCit2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3sKKyAgICBpZiAoIW1fd2ViU3BlZWNoU3lu
dGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnNwZWFrKFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hTeW50aGVzaXplcikK
KyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5
bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsKK30K
Kwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlmICht
X3dlYlNwZWVjaFN5bnRoZXNpemVyKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5j
YW5jZWwoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5MmU0
Yzc1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQorCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDogbV9w
cml2YXRlKHV0dGVyYW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9IHV0
dGVyYW5jZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjphc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhl
cikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7
Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJldHVybiBt
X3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjp0ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7Cit9
CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25zdAor
eworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPnZvaWNlKCkgPyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDogV2Vi
U3RyaW5nKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKworZmxvYXQg
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5yYXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6cGl0Y2goKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9CisK
K2RvdWJsZSBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3Yzg0
Nzk0ZTAyMjk3NjJhNDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25BbHRlcm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
KyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Zv
aWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNWb2ljZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQor
Cit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRl
LnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJ
KGNvbnN0IFdlYlN0cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRWb2ljZVVS
SSh2b2ljZVVSSSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1lKTsK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3QgV2Vi
U3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2UpOwor
fQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShib29s
IGlzTG9jYWxTZXJ2aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlzTG9j
YWxTZXJ2aWNlKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZh
dWx0KGJvb2wgaXNEZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlzRGVm
YXVsdCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRy
PFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YjQyZmQyNzkyZDI1ZTU2
NGRiNzEwNmNiZjRiNmUyNmM2MjhhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bC5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N5bnRoZXNpemVyKHN5
bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoKQorewor
fQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2V0Vm9pY2VMaXN0KGNv
bnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2
b2ljZXMpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgVmVjdG9yPFJlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9pY2VzLmFw
cGVuZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tpXSkp
OworICAgIG1fc3ludGhlc2l6ZXItPnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAgIG1fY2xp
ZW50LT52b2ljZXNEaWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZEZpbmlzaFNw
ZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFu
Y2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZEZp
bmlzaFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGw6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkUGF1c2VTcGVha2luZyh1dHRlcmFuY2UpOworI2Vu
ZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVT
cGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJh
bmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRS
ZXN1bWVTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+c3BlYWtpbmdFcnJvck9jY3VycmVkKHV0dGVy
YW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6
OndvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgdW5zaWduZWQgY2hhckluZGV4KQoreworI2lmIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQo
dXR0ZXJhbmNlLCBTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKwor
dm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNlbnRlbmNlQm91bmRhcnlFdmVu
dE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRl
cmFuY2UsIHVuc2lnbmVkIGNoYXJJbmRleCkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKyAgICBtX2NsaWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVkKHV0dGVyYW5jZSwgU3BlZWNo
U2VudGVuY2VCb3VuZGFyeSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iY2M4MzNiYjIzODZkNjUyNTMwYTgxMGExZGEyMWJmYzAyZWM1NzI4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
IE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaAorI2RlZmluZSBX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudDsKKworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsIDogcHVibGljIFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbChQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKiwgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwor
ICAgIHZpcnR1YWwgfldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCgpOworCisgICAgdmly
dHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYgdm9pY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rh
cnRTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5n
KGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9p
ZCB3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJiwgdW5zaWduZWQgY2hhckluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vu
dGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgpOworCitwcml2YXRlOgorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXI7CisgICAgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1hYy5tbQppbmRleCA3MDk0ZmEzNTM4MjJlODc0NWU0NmUzNGRkYmYzN2M3NGIwZWE1MTU1
Li4zNTlhNDA2YzI3NzdlZDU2MjJmZDFjZjI3YWI1MDNlY2M1ODdkNTFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1hYy5tbQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oIgogI2luY2x1ZGUgPEFwcEtpdC9OU1NwZWVjaFN5bnRoZXNpemVyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKQEAgLTM3LDE0ICszOCwxNCBAQAogewogICAgIFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXJPYmplY3Q7CiAgICAgLy8g
SG9sZCBhIFJlZiB0byB0aGUgdXR0ZXJhbmNlIHNvIHRoYXQgaXQgd29uJ3QgZGlzYXBwZWFyIHVu
dGlsIHRoZSBzeW50aCBpcyBkb25lIHdpdGggaXQuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNlOworICAgIFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKICAgICAKICAgICBS
ZXRhaW5QdHI8TlNTcGVlY2hTeW50aGVzaXplcj4gbV9zeW50aGVzaXplcjsKICAgICBmbG9hdCBt
X2Jhc2VQaXRjaDsKIH0KIAogLSAoV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciAqKWluaXRXaXRo
U3BlZWNoU3ludGhlc2l6ZXI6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgKilz
eW50aGVzaXplcjsKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICopdXR0ZXJhbmNlOworLSAodm9pZClzcGVha1V0
dGVyYW5jZTooV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRl
cmFuY2U7CiAKIEBlbmQKIApAQCAtODEsNyArODIsNyBAQAogICAgIG1fYmFzZVBpdGNoID0gW1tt
X3N5bnRoZXNpemVyIG9iamVjdEZvclByb3BlcnR5Ok5TU3BlZWNoUGl0Y2hCYXNlUHJvcGVydHkg
ZXJyb3I6bmlsXSBmbG9hdFZhbHVlXTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2UK
Ky0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlICopdXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ug
c2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcu
CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CkBAIC0xNjUsNyArMTY2LDcgQEAKICAgICBVTlVT
RURfUEFSQU0oc2VuZGVyKTsKICAgICAKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFy
aWFibGUgaW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpv
YiBpbW1lZGlhdGVseS4KLSAgICBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSogdXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CisgICAgV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAg
IG1fdXR0ZXJhbmNlID0gMDsKICAgICAKICAgICBpZiAoZmluaXNoZWRTcGVha2luZykKQEAgLTE4
OCw2ICsxODksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xp
ZW50KQoreworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcigpCit7Cit9CisKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5p
dGlhbGl6ZVZvaWNlTGlzdCgpCiB7CiAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IFtO
U1NwZWVjaFN5bnRoZXNpemVyIGRlZmF1bHRWb2ljZV07CkBAIC0yMjAsMTIgKzIzMCwxMiBAQCB2
b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiAgICAgW21fcGxhdGZvcm1T
cGVlY2hXcmFwcGVyLmdldCgpIHJlc3VtZV07CiB9CiAgICAgCi12b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAg
ICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAgICBtX3BsYXRmb3JtU3BlZWNo
V3JhcHBlci5hZG9wdE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7CiAgICAgCi0gICAgW21fcGxhdGZvcm1TcGVlY2hX
cmFwcGVyLmdldCgpIHNwZWFrVXR0ZXJhbmNlOiZ1dHRlcmFuY2VdOworICAgIFttX3BsYXRmb3Jt
U3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2UuZ2V0KCldOwogfQog
CiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suY3BwCmluZGV4IDFjNjcxODIyMjcyMmMxYmFlYzdjNDczMzM0NjEzOWMwNWU5ZTg1
ZDkuLmIyNDUxZDg2YjRiNDQ0NTYxNjVhN2NiYmRiNzQ3YzliMTJlZDlkNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suY3BwCkBAIC0zOSw3ICszOSw2IEBAIFBhc3NPd25QdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpjcmVh
dGUoCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQogICAgIDog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihjbGllbnQpCiAgICAgLCBtX3NwZWFraW5nRmluaXNo
ZWRUaW1lcih0aGlzLCAmUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmlu
aXNoZWQpCi0gICAgLCBtX3V0dGVyYW5jZSgwKQogewogfQogICAgIApAQCAtNTAsNyArNDksNyBA
QCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdG
aW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKQogewotICAgIEFT
U0VSVChtX3V0dGVyYW5jZSk7CisgICAgQVNTRVJUKG1fdXR0ZXJhbmNlLmdldCgpKTsKICAgICBj
bGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcobV91dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJhbmNl
ID0gMDsKIH0KQEAgLTYzLDEwICs2MiwxMCBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dh
biIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwogfQog
Ci12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwotICAg
IG1fdXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsK
ICAgICBjbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7CiAgICAgCiAgICAg
Ly8gRmlyZSBhIGZha2Ugd29yZCBhbmQgdGhlbiBzZW50ZW5jZSBib3VuZGFyeSBldmVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2suaAppbmRleCBmMTNiMGUyYzA1ZWI2ZjBlZWFjYTFkMzMwMDVhODRj
NTk0ZGZjNmNiLi5iYjdiNGVmOWZhMWUyNTQxYzEzNDE0MzlkNTgwZDVmNTg1MzBiY2VkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gY3JlYXRlKFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKICAgICAKICAgICB2aXJ0dWFsIH5QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jaygpOwotICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBzcGVh
ayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CiAgICAgdmly
dHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWwoKTsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNw
ZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+Kik7CiAg
ICAgCiAgICAgVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+IG1fc3BlYWtpbmdG
aW5pc2hlZFRpbWVyOwotICAgIGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiBtX3V0dGVyYW5jZTsKKyAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IG1fdXR0ZXJhbmNlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193935</attachid>
            <date>2013-03-19 15:20:59 -0700</date>
            <delta_ts>2013-03-21 09:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130319151649.patch</filename>
            <type>text/plain</type>
            <size>71371</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZjVmYzAwZDUyMzA3
ZGZlYTYzOTc5ZTY3MWE3YzY4YTRhZThmOGFiLi40MmJmNjAzZGM3NjkzMjI4NTQ0Y2I2ODYzMTY0
ZGVjZTBhZjI2Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0xOSAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2VzIGEgcGxhdGZvcm0gQVBJIHRoYXQg
dGhlIGVtYmVkZGVyIGNhbiBpbXBsZW1lbnQgdG8KKyAgICAgICAgcHJvdmlkZSBzcGVlY2ggc3lu
dGhlc2lzIGZvciB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtLmd5cGk6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUGxhdGZvcm0pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybTo6c3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6On5XZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
aXNOdWxsKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjp+V2ViU3BlZWNoU3ludGhlc2lzVm9pY2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0b3I9KToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcjo6fldlYlNwZWVjaFN5bnRoZXNpemVyKToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDo6fldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KToKKwogMjAxMy0wMy0xNCAgRGFuYSBKYW5zZW5zICA8
ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ugem9vbSBmaWx0
ZXIgaW5kZXBlbmRlbnQgb2YgdGhlIGxheWVyIHNpemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNGM4ZDM3
N2Q0MGU1MzVmNzQ2MWYwYmQwZWM5YjZjYjFjMGM5MS4uMGZlMjkyMGNiMzBkMTE0ZTgxYjFjMTI1
YWIzM2FmOGYyMjEzNzEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOCBAQAorMjAxMy0wMy0x
OSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50
YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3Np
bmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKwor
ICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAg
ICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAu
aW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6Cisg
ICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNE
ZWZhdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxp
c3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFz
c2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVs
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6
On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmlu
aXNoU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3Jk
Qm91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVy
IHNwZWFrVXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVz
aXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrKToKKwogMjAxMy0wMy0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3
LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgw
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1Bs
YXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5kZXggNjBhYzFiODc1YzRjNjllZWE3YTYyMjZiNzhhNzk2
MjM1N2Q2N2UyOC4uN2NlZmVmY2UyZTIwMGE4ZDQxMWI5MzNlZDA4NTU0MmQxMDZjOTRiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkKQEAgLTEyOCw2ICsxMjgsMTAgQEAKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9Q
bGF0Zm9ybS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUu
LjgwNmNjNjA4MjUzMDFjMTVlOTcxMjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJXZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhl
c2l6ZXIuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIK
IApAQCAtNjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBj
bGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94
U3VwcG9ydDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJT
dG9yYWdlTmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhl
bWVFbmdpbmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJu
IG5vbi1udWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0
dXJuIDA7IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVj
aFN5bnRoZXNpemVyKiBjcmVhdGVTcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZl
ZTQzMzM0ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSB7CitwdWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAg
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisg
ICAgeworICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VC
S0lUX0VYUE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgp
IGNvbnN0OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9z
cGVlY2gtYXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQg
ZmxvYXQgdm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRf
RVhQT1JUIGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAg
IFdFQktJVF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVs
dAorCisgICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNl
Y29uZHMuCisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJh
dG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9w
ZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRl
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFi
N2M1MmE3NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCww
ICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisj
ZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
IHsKK3B1YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikg
eyBhc3NpZ24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNl
dCgpOyB9CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhl
cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkko
Y29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdl
YlN0cmluZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29s
KTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0
ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVj
NDE1Y2E0OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmlu
ZSBXZWJTcGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xh
c3MgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVz
aXplciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0
byBjYWxsIHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmly
dHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYz
Y2VmYTFjYWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJX
ZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJW
ZWN0b3I8V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNv
bnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlF
dmVudE9jY3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVk
IGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFy
SW5kZXgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2
ZTllNjk4ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
IAotI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIuaCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0Nv
bXBsZXRlZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAg
IAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBi
b3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5k
YXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiB1dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5k
ZXgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFy
eVN0cmluZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNl
bnRlbmNlIikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpi
b3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
CiAgICAgfQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25z
dCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVl
Y2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVz
KCkuc3RhcnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0
ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGll
bnQoKSkKKyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtp
bmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3Zv
aWQgU3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0g
dHJ1ZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0
PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJp
bmcoKSk7CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChl
dmVudE5hbWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVl
Y2hTeW50aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1l
U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0
ZXJhbmNlKQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnRO
YW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
Pih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2Ut
PmNsaWVudCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBz
dGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgp
KSwgMCwgU3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3Bl
YWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkK
K3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3Bl
YWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0
ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZv
aWQgU3BlZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lz
OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0
YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkp
LCB0cnVlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3Bl
YWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0
ZXJhbmNlLT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQx
YjU3ZGRiNmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1
ZmViN2U4YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1
YWwgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RhcnRTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQo
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwg
dW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBh
c3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91
bmRhcnlFdmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAog
ICAgIHZvaWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSopOwogICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRj
MjAyZDM0MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1
YjVhMzgwOTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSAr
MzcsMTQgQEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoY29udGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9y
bVV0dGVyYW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRl
eHQodGV4dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwog
fQogICAgIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2
b2ljZSkKICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOwor
ICAgICAgICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2lj
ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAy
OWJmZGM0YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIw
M2YxNDVhMjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQx
LDI4IEBAIGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0
KTsgfQorICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmlu
ZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0g
ICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNl
LnNldExhbmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3Qg
U3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKwor
ICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFu
Y2UtPmxhbmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9w
bGF0Zm9ybVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lz
Vm9pY2UqIHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNW
b2ljZSopOwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0
dGVyYW5jZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBt
X3BsYXRmb3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1l
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2
b2lkIHNldFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9s
dW1lKHZvbHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1f
cGxhdGZvcm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25z
dCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJh
dGUoZmxvYXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAK
LSAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0
Y2goKTsgfQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0
IHBpdGNoKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAg
ZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3Rh
cnRUaW1lKCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1f
cGxhdGZvcm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUg
c3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1l
KCk7IH0KKyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0OwogCi0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRm
b3JtVXR0ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAg
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAg
ICBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZv
cm1VdHRlcmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PiBtX3BsYXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4g
bV92b2ljZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMw
YjQ2ZjBkNjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0
Y2Y0NTE0ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVlY2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5
bnRoZXNpc1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lz
Vm9pY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsK
ICAgICAKICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybVZvaWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUyN2QzOTVl
NmVlZGI4N2U4NzljNGJlYTYyOTg3Y2JjM2FhMDM1ZmMuLjYxNTkwYTQyOTRmM2FiNjU2ZGFiZjIy
NjQ1ZDhhYzExYzNiZTQ4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY1LDYgKzE1NjUs
NyBAQCBfX1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1
SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
IF9fWlRWTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3Jl
MjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NT
UGFyc2VyQ29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA5ZTA4YTkzYjk1Yzk3NTJjNDNiYzQ5NTczYjk1NzExMWMxMzk4
MWJlLi43MjhiMDcyMjcyMGFlOTdiNGZjNTQ3YTlhZGFjMzY3MDNiMmIyZjZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC05OTIsNyArOTkyLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJv
bWl1bS9TcGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTQsNiAr
MzY5MywxMiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRp
b24uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg2Niw2ICszODcxLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVt
RGVmYXVsdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhl
bWVDaHJvbWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cENvbnRhaW5lci5oJywKQEAgLTc0MzIsNiArNzQzOCwxMCBAQAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2
ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJh
ckltcGwuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNj
cm9sbGJhckltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudElt
cGwuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5o
CmluZGV4IDIxYjhiYzlhYTRjODJjMzk0ODk3ZmE1MWQ1MWYzMTI3MTZkZDllNDEuLjhjOTQ0ZTk2
ZjQxNjlhYWJhNzA0N2YxYmQ2NjU0ZDFjYzQxYWRhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaApAQCAtMjgsNyArMjgsOSBAQAog
CiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC00Niw3ICs0OCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMoU3BlZWNoU3ludGhlc2lzKik7
CiAKLSAgICBTcGVlY2hTeW50aGVzaXMqIG1fc3BlZWNoU3ludGhzaXM7CisgICAgU3BlZWNoU3lu
dGhlc2lzKiBtX3NwZWVjaFN5bnRoZXNpczsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKaW5kZXggMjU0ZTkyZjBiOGExOWZlODZlOTMyMzk4
N2M0MTAwNGU5NjYxODA2ZS4uNTY0MmQ1ZmQ3NmRmMGU1Y2UzMDBjZmE5YzQyMTYyNTgzNmUwNGQ3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMjksNiArMjksMTEgQEAKICNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZTo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50
KiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZShjbGllbnQpKTsKK30KICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggNDRlNjE0MjhiMjM2MWVjNWNlOTFiMmM5YTJiYjhh
ODdhMTBhYzc1Ni4uMWE5OWUzZjY3YTMwNmZhNjI4YzExY2UyMzY2MTBkZTM1MjhmNmQ2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00MCw5ICs0Miw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCgpIHsgfQogfTsKICAgICAKLWNsYXNzIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlIHsKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBjcmVhdGUoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKICAgICAKICAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQo
Y29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRleHQ7IH0KQEAgLTY5LDggKzcxLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fc3Rh
cnRUaW1lID0gc3RhcnRUaW1lOyB9CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2VDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAg
dm9pZCBzZXRDbGllbnQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNs
aWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCopOworCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3RleHQ7CiAgICAgU3RyaW5nIG1fbGFu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5jcHAKaW5kZXggODJlZWYyZTNmYTY0ODcyMzRlYTNjN2I0NGQwMGFmMTBj
ODdjODdjMC4uMDUyNjMyNjgzNjExMjliZTg1ZjMxNzkzYWE4YTM5NTc2MzU1NDljYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5jcHAKQEAgLTM0LDYgKzM0LDExIEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKGNvCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKHZv
aWNlVVJJLCBuYW1lLCBsYW5nLCBsb2NhbFNlcnZpY2UsIGlzRGVmYXVsdCkpOwogfQorCitQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkpOworfQogICAgIAogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KQogICAgIDogbV92b2ljZVVSSSh2b2ljZVVSSSkKQEAgLTQ0LDYg
KzQ5LDEyIEBAIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSCiB7CiB9CiAKK1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKQorICAgIDogbV9s
b2NhbFNlcnZpY2UoZmFsc2UpCisgICAgLCBtX2RlZmF1bHQoZmFsc2UpCit7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oCmluZGV4IDc3NGUyZDZhMjJkMmYzYmQwZWU2NGUwNDc3OWY0M2E2Njk1NDEwMzku
LmY3YWJhOGM1MmU0NDQxYjk0NGM1YzQ1OTU5NTkxZTVhNWQ0ZjQ3M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgK
QEAgLTM3LDE1ICszNywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlIDogcHVibGljIFJlZkNvdW50ZWQ8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wg
aXNEZWZhdWx0KTsKLSAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlPiBjcmVhdGUoKTsKKwogICAgIGNvbnN0IFN0cmluZyYgdm9pY2VVUkkoKSBj
b25zdCB7IHJldHVybiBtX3ZvaWNlVVJJOyB9CisgICAgdm9pZCBzZXRWb2ljZVVSSShjb25zdCBT
dHJpbmcmIHZvaWNlVVJJKSB7IG1fdm9pY2VVUkkgPXZvaWNlVVJJOyB9CisKICAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB2b2lkIHNldE5hbWUo
Y29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KKwogICAgIGNvbnN0IFN0cmlu
ZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fbGFuZzsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25z
dCBTdHJpbmcmIGxhbmcpIHsgbV9sYW5nID0gbGFuZzsgfQorCiAgICAgYm9vbCBsb2NhbFNlcnZp
Y2UoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsU2VydmljZTsgfQorICAgIHZvaWQgc2V0TG9jYWxT
ZXJ2aWNlKGJvb2wgbG9jYWxTZXJ2aWNlKSB7IG1fbG9jYWxTZXJ2aWNlID0gbG9jYWxTZXJ2aWNl
OyB9CisKICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVmYXVsdDsgfQot
ICAgIAorICAgIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KSB7IG1fZGVmYXVsdCA9
IGlzRGVmYXVsdDsgfQorCiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7CisgICAgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpOwogCiAgICAgU3RyaW5nIG1fdm9pY2VVUkk7CiAgICAg
U3RyaW5nIG1fbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplci5jcHAKaW5kZXggNjYxMjNkNWFmMTFjYWJiMGVjZTNlYWE0YzYy
MDcxNzVhYTYxZTZmNy4uZjk4ZTE0MmNkYTM0MzQ3MTc2NTc0ZTE3ZWIyNzJiMTRkYjc0MjNkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5jcHAKQEAgLTMyLDE1ICszMiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI+IFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNs
aWVudCkpOworICAgIE93blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBzeW50aGVzaXpl
ciA9IGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkpOworICAg
IHN5bnRoZXNpemVyLT5pbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAgcmV0dXJuIHN5bnRoZXNp
emVyLnJlbGVhc2UoKTsKIH0KIAotUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQp
Ci0gICAgOiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50KGNsaWVudCkKK3ZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6c2V0Vm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VzKQogewotICAgIGluaXRpYWxpemVWb2ljZUxpc3Qo
KTsKKyAgICBtX3ZvaWNlTGlzdCA9IHZvaWNlczsKIH0KLSAgICAKKworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAppbmRl
eCBjZmRjN2UxOWQwMDNiODljZTgxNmM0NmE0NmMyOWYyOTdkYmMwMGY2Li5mMGQ2ODkzYTIxYzU2
ODNmODFlNWE4MmRhNWFiNjhmNTIxM2QxYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCkBAIC0zNyw2ICszNywxMyBAQAog
T0JKQ19DTEFTUyBXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViU3BlZWNoU3ludGhl
c2l6ZXI7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsKK30KKyNlbmRpZgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gU3BlZWNoQm91bmRhcnkgewpAQCAtNDgsMTIgKzU1
LDEyIEBAIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOwogCiBjbGFzcyBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBh
dXNlU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9y
T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSosIFNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlc3VtZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4sIFNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgPSAwOwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoKSB7IH0KQEAgLTYzLDI3
ICs3MCwzMyBAQCBjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBjcmVhdGUoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogCi0gICAgdmlydHVhbCB+UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcigpIHsgfQorICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIoKTsKICAgICAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+ID4mIHZvaWNlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdm9pY2VMaXN0OyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogICAgIAog
ICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KLSAgICAKKworICAgIHZvaWQgc2V0Vm9p
Y2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYpOwor
CiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKICAg
ICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQqKTsKICAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+ID4gbV92b2ljZUxpc3Q7CiAgICAgCiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnQqIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7Ci0gICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+IG1fcGxhdGZvcm1TcGVlY2hX
cmFwcGVyOwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgT3duUHRyPFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2l6ZXI+IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXI7CisgICAgT3du
UHRyPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ+IG1fd2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQ7CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzc5
ZDcyMGViOGM2ZmQ5ZWVjYjM4M2QyYTUwMTI2MjdmYzg4NzBmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNocm9taXVtLmNwcApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6
ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNs
aWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQoreworICAgIG1f
d2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsKHRoaXMsIGNsaWVudCkpOworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6
ZXIgPSBhZG9wdFB0cihXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNyZWF0ZVNwZWVjaFN5
bnRoZXNpemVyKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuZ2V0KCkpKTsKK30KKworUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQorewor
fQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3Qo
KQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAgICBtX3dl
YlNwZWVjaFN5bnRoZXNpemVyLT51cGRhdGVWb2ljZUxpc3QoKTsKK30KKwordm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit7CisgICAgaWYgKCFtX3dlYlNwZWVjaFN5bnRoZXNp
emVyIHx8ICFtX3dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5zcGVhayhXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSh1dHRlcmFuY2UpKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpwYXVzZSgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIuZ2V0KCkp
CisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnBhdXNlKCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hT
eW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cmVzdW1l
KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkKK3sKKyAg
ICBpZiAobV93ZWJTcGVlY2hTeW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hT
eW50aGVzaXplci0+Y2FuY2VsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwZjkyZjY4NGQ0MGRmMjI1MjdmODEz
NDlmMjAzMzhiOTJlNGM3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaD4KKworI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY29u
c3QgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mIHV0dGVyYW5j
ZSkKKyAgICA6IG1fcHJpdmF0ZSh1dHRlcmFuY2UpCit7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVyYXRvcj0oV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3sKKyAgICBt
X3ByaXZhdGUgPSB1dHRlcmFuY2U7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6YXNzaWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQor
Cit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmVzZXQoKQoreworICAgIG1fcHJp
dmF0ZS5yZXNldCgpOworfQorCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9y
IFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dGV4dCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjps
YW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYW5nKCk7Cit9CisKK1dlYlN0
cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvaWNlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT52b2ljZSgpID8gV2ViU3RyaW5nKG1fcHJpdmF0ZS0+dm9pY2UoKS0+
bmFtZSgpKSA6IFdlYlN0cmluZygpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dm9sdW1lKCk7
Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmF0ZSgpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnBpdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5w
aXRjaCgpOworfQorCitkb3VibGUgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzdGFydFRp
bWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnN0YXJ0VGltZSgpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTVk
NTEyMTJjYjcyN2M4NDc5NGUwMjI5NzYyYTQyMTMzNmY0NzBhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXNWb2ljZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaD4KKworI2luY2x1
ZGUgIlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUuaCIKKyNpbmNsdWRlICJTcGVlY2hTeW50
aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjphc3NpZ24oY29uc3QgV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1f
cHJpdmF0ZTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6cmVzZXQoKQorewor
ICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
OjpzZXRWb2ljZVVSSShjb25zdCBXZWJTdHJpbmcmIHZvaWNlVVJJKQoreworICAgIG1fcHJpdmF0
ZS0+c2V0Vm9pY2VVUkkodm9pY2VVUkkpOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpzZXROYW1lKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNl
dE5hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1
YWdlKGNvbnN0IFdlYlN0cmluZyYgbGFuZ3VhZ2UpCit7CisgICAgbV9wcml2YXRlLT5zZXRMYW5n
KGxhbmd1YWdlKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNMb2Nh
bFNlcnZpY2UoYm9vbCBpc0xvY2FsU2VydmljZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExvY2Fs
U2VydmljZShpc0xvY2FsU2VydmljZSk7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OnNldElzRGVmYXVsdChib29sIGlzRGVmYXVsdCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldElz
RGVmYXVsdChpc0RlZmF1bHQpOworfQorCitXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6b3BlcmF0
b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWI0
MmZkMjc5MmQyNWU1NjRkYjcxMDZjYmY0YjZlMjZjNjI4YTM4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIgor
CisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBzeW50aGVz
aXplciwgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9z
eW50aGVzaXplcihzeW50aGVzaXplcikKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKK3sKK30KKwor
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsKCkKK3sKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNl
dFZvaWNlTGlzdChjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiYgdm9pY2VzKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBvdXRWb2ljZXM7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2b2ljZXMuc2l6ZSgpOyBpKyspCisgICAgICAg
IG91dFZvaWNlcy5hcHBlbmQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNl
Pih2b2ljZXNbaV0pKTsKKyAgICBtX3N5bnRoZXNpemVyLT5zZXRWb2ljZUxpc3Qob3V0Vm9pY2Vz
KTsKKyAgICBtX2NsaWVudC0+dm9pY2VzRGlkQ2hhbmdlKCk7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkU3RhcnRTcGVha2luZyh1dHRl
cmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1f
Y2xpZW50LT5kaWRGaW5pc2hTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFdl
YktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFBhdXNlU3BlYWtpbmcodXR0
ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bDo6ZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBt
X2NsaWVudC0+ZGlkUmVzdW1lU3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c3BlYWtpbmdFcnJvck9jY3VycmVkKGNv
bnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7Cisj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPnNwZWFraW5nRXJyb3JP
Y2N1cnJlZCh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UsIHVuc2lnbmVkIGNoYXJJbmRleCkK
K3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+Ym91bmRhcnlF
dmVudE9jY3VycmVkKHV0dGVyYW5jZSwgU3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpOwor
I2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZW50ZW5j
ZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgdXR0ZXJhbmNlLCB1bnNpZ25lZCBjaGFySW5kZXgpCit7CisjaWYgRU5BQkxFKFNQ
RUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCh1dHRl
cmFuY2UsIFNwZWVjaFNlbnRlbmNlQm91bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNjODMzYmIyMzg2ZDY1MjUzMGE4MTBhMWRhMjFi
ZmMwMmVjNTcyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgKQEAgLTAsMCAr
MSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Lmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjsKK2Ns
YXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CisKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGwoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciosIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWb2ljZUxpc3QoY29uc3QgV2ViS2l0OjpXZWJWZWN0
b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZvaWNlcyk7CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgV2Vi
S2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2VTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9y
T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJbmRleCk7CisgICAgdmly
dHVhbCB2b2lkIHNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgdW5zaWduZWQgY2hhckluZGV4KTsKKworcHJpdmF0
ZToKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNpemVyOworICAgIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5kZXggNzA5NGZhMzUzODIyZTg3NDVlNDZlMzRkZGJm
MzdjNzRiMGVhNTE1NS4uMzU5YTQwNmMyNzc3ZWQ1NjIyZmQxY2YyN2FiNTAzZWNjNTg3ZDUxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2UuaCIKICNpbmNsdWRlIDxBcHBLaXQvTlNTcGVlY2hTeW50aGVzaXplci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0zNywxNCArMzgsMTQgQEAKIHsK
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNpemVyT2Jq
ZWN0OwogICAgIC8vIEhvbGQgYSBSZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0aGF0IGl0IHdvbid0
IGRpc2FwcGVhciB1bnRpbCB0aGUgc3ludGggaXMgZG9uZSB3aXRoIGl0LgotICAgIGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKKyAg
ICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7
CiAgICAgCiAgICAgUmV0YWluUHRyPE5TU3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7
CiAgICAgZmxvYXQgbV9iYXNlUGl0Y2g7CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBw
ZXIgKilpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyICopc3ludGhlc2l6ZXI7Ci0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZTsKKy0g
KHZvaWQpc3BlYWtVdHRlcmFuY2U6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlICopdXR0ZXJhbmNlOwogCiBAZW5kCiAKQEAgLTgxLDcgKzgyLDcgQEAKICAgICBtX2Jh
c2VQaXRjaCA9IFtbbV9zeW50aGVzaXplciBvYmplY3RGb3JQcm9wZXJ0eTpOU1NwZWVjaFBpdGNo
QmFzZVByb3BlcnR5IGVycm9yOm5pbF0gZmxvYXRWYWx1ZV07CiB9CiAKLS0gKHZvaWQpc3BlYWtV
dHRlcmFuY2U6KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
ICopdXR0ZXJhbmNlCistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZQogewogICAgIC8vIFdoZW4gc3BlYWsg
aXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlzdGluZyBzcGVlY2ggdXR0ZXJhbmNl
IG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwpAQCAtMTY1LDcgKzE2Niw3
IEBACiAgICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CiAgICAgCiAgICAgLy8gQ2xlYXIgdGhlIG1f
dXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNhc2UgZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5l
dyBzcGVha2luZyBqb2IgaW1tZWRpYXRlbHkuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOworICAgIFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UgPSBtX3V0
dGVyYW5jZTsKICAgICBtX3V0dGVyYW5jZSA9IDA7CiAgICAgCiAgICAgaWYgKGZpbmlzaGVkU3Bl
YWtpbmcpCkBAIC0xODgsNiArMTg5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3NwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KGNsaWVudCkKK3sKK30KKworUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKQoreworfQorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewogICAgIE5TU3RyaW5nICpkZWZhdWx0
Vm9pY2VVUkkgPSBbTlNTcGVlY2hTeW50aGVzaXplciBkZWZhdWx0Vm9pY2VdOwpAQCAtMjIwLDEy
ICsyMzAsMTIgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogICAg
IFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQogICAgIAotdm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
OjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRl
cmFuY2UpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIuYWRvcHROUyhbW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIg
YWxsb2NdIGluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6dGhpc10pOwogICAgIAotICAgIFttX3Bs
YXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTomdXR0ZXJhbmNlXTsKKyAg
ICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNl
LmdldCgpXTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCAxYzY3MTgyMjI3MjJjMWJhZWM3YzQ3MzMz
NDYxMzljMDVlOWU4NWQ5Li5lOTQxOTVhZWE0YWFkNmRjMDhjZDJkOTFjNTJlYTJkN2M1MGZiZmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtMzMsMTMgKzMzLDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
az4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhjbGllbnQpKTsKKyAgICBPd25QdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrKGNsaWVudCkpOworICAgIHN5bnRoZXNpemVyLT5pbml0aWFs
aXplVm9pY2VMaXN0KCk7CisgICAgcmV0dXJuIHN5bnRoZXNpemVyLnJlbGVhc2UoKTsKIH0KICAg
ICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkKICAgICAsIG1fc3BlYWtpbmdGaW5pc2hl
ZFRpbWVyKHRoaXMsICZQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5p
c2hlZCkKLSAgICAsIG1fdXR0ZXJhbmNlKDApCiB7CiB9CiAgICAgCkBAIC01MCw3ICs1MSw3IEBA
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2soKQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0Zp
bmlzaGVkKFRpbWVyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiopCiB7Ci0gICAgQVNT
RVJUKG1fdXR0ZXJhbmNlKTsKKyAgICBBU1NFUlQobV91dHRlcmFuY2UuZ2V0KCkpOwogICAgIGNs
aWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyhtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2Ug
PSAwOwogfQpAQCAtNjMsMTAgKzY0LDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmxvZ2Fu
IiksIFN0cmluZygibG9nYW4iKSwgU3RyaW5nKCJmci1DQSIpLCB0cnVlLCB0cnVlKSk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7Ci0gICAg
bV91dHRlcmFuY2UgPSAmdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwog
ICAgIGNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKICAgICAKICAgICAv
LyBGaXJlIGEgZmFrZSB3b3JkIGFuZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jay5oCmluZGV4IGYxM2IwZTJjMDVlYjZmMGVlYWNhMWQzMzAwNWE4NGM1
OTRkZmM2Y2IuLmJiN2I0ZWY5ZmExZTI1NDFjMTM0MTQzOWQ1ODBkNWY1ODUzMGJjZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBjcmVhdGUoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIAogICAgIHZpcnR1YWwgflBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpOwpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Bl
YWtpbmdGaW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKTsKICAg
ICAKICAgICBUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gbV9zcGVha2luZ0Zp
bmlzaGVkVGltZXI7Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IG1fdXR0ZXJhbmNlOworICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gbV91dHRlcmFuY2U7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCmluZGV4IDlhMmFjYzI5OGIwZTRmNzgwY2JjNmJjNjFj
YTMzYWY1MWU0ODBkZjMuLjc0ZmRlZTE5MWM4OWFjNmMwMDhhNWE4NWMxZTdkMWQ5MmVmZGIwZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKQEAgLTExMyw3ICsxMTMsNyBAQAog
ICAgICAgJ0VOQUJMRV9TQ1JJUFRFRF9TUEVFQ0g9MScsCiAgICAgICAnRU5BQkxFX1NIQURPV19E
T009MScsCiAgICAgICAnRU5BQkxFX1NNT09USF9TQ1JPTExJTkc9MScsCi0gICAgICAnRU5BQkxF
X1NQRUVDSF9TWU5USEVTSVM9MCcsCisgICAgICAnRU5BQkxFX1NQRUVDSF9TWU5USEVTSVM9MScs
CiAgICAgICAnRU5BQkxFX1NRTF9EQVRBQkFTRT08KGVuYWJsZV9zcWxfZGF0YWJhc2UpJywKICAg
ICAgICdFTkFCTEVfU1RZTEVfU0NPUEVEPTEnLAogICAgICAgJ0VOQUJMRV9TVUJQSVhFTF9MQVlP
VVQ9MScsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194282</attachid>
            <date>2013-03-21 09:49:09 -0700</date>
            <delta_ts>2013-03-21 09:54:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111695-20130321094457.patch</filename>
            <type>text/plain</type>
            <size>71217</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDY3MGNjOWFiMmYx
YmI4ZmE2MzM5NGQ2NWZhMjdmOGFhODM1Y2MxLi5lZDgxZmVmMWNiYmVmOTMzOTMzMTdjZmQwNzYz
OWM2ZTE3NjU1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0yMCAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEV4cG9zZXMgYSBwbGF0Zm9ybSBBUEkgdGhhdCB0aGUg
ZW1iZWRkZXIgY2FuIGltcGxlbWVudCB0bworICAgICAgICBwcm92aWRlIHNwZWVjaCBzeW50aGVz
aXMgZm9yIHRoZSBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6fldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjppc051
bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Ojp+V2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorCiAyMDEzLTAzLTIwICBIYXJhbGQgQWx2ZXN0cmFuZCAg
PGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2NhbC9SZW1vdGUgYW5kIFJUQ1N0
YXRzRWxlbWVudCBmcm9tIFdlYlJUQ1N0YXRzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMWNiN2VkNjBk
MThmMGRlNzBkYTExMzhjMzJmNTY3YTZlN2RlYzAuLjQyZjE1Y2ZmOWNhMjg2NjQ1MjNlMTk0MTVi
NTJhYTFjMmQ0ZTM0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTMtMDMtMjAg
IERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24g
b2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3NpbmcgaW50
ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAgICAgICAg
KFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9p
Y2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAg
IChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9t
aXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJh
dG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFr
VXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKToKKwogMjAxMy0wMy0yMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKaW5kZXggOGY3MDgwZTBiMGNkYjVjM2M1ZWQ5YmU2ZmQ4ZWI2MGM2NGQw
MTQ5MS4uNGU4MzkzZGQxYWVhYThiNzU5M2EzNzMwMmYyZTI2NTk2MjVmOTY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKQEAgLTEyOSw2ICsxMjksMTAgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUuLjgwNmNj
NjA4MjUzMDFjMTVlOTcxMjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJX
ZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAt
NjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9y
dDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNp
emVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhlbWVFbmdp
bmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1u
dWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaFN5bnRo
ZXNpemVyKiBjcmVhdGVTcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0
ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citw
dWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
b3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0
OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gt
YXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
dm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisg
ICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3
NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5l
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0
OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxs
IHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFj
YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJ
bmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4
ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRl
ZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNl
IikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3Rh
cnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5n
KCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7
CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4o
dXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRl
cmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVu
dCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmco
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQg
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19j
YXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVl
KTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRi
NmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9p
ZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFr
aW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZv
aWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwog
ICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0
MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgw
OTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQg
QEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAg
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkK
ICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0
YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVh
Mjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBA
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQor
ICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExh
bmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxh
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2Uq
IHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSop
OwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZv
bHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxv
YXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBm
bG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsg
fQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNo
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91Ymxl
IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1l
KCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0K
KyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0
ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRl
cmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2lj
ZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBk
NjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0
ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZv
aWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUzMDNhMWFmYTVjN2M3
ODVkNGY0YzE3OTk0ZDIzNWMwZGVhNGMxNTcuLjc0MDNjZGQ0ZjdiZDY0YTNkMDA0ZmEzZWE4MGQ1
NDRiODI2ZjdiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY2LDYgKzE1NjYsNyBAQCBf
X1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRW
TjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0ZWY1ZGE3MDllYWQ5MmE2Y2RmZjVjOTViN2Y5ODg3MGE2MjlmNWFmLi5i
YmQwZjg4ZTc0ZDhhMDc4OTdmMTdlMTAyNThjMjdhYzdjOGI3ZTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05OTMsNyArOTkzLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9T
cGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTgsNiArMzY5Nywx
MiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg3MCw2ICszODc1LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVs
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cENvbnRhaW5lci5oJywKQEAgLTUyOTAsOCArNTI5Niw2IEBACiAgICAgICAgICd3ZWJjb3JlX3Rl
c3Rfc3VwcG9ydF9maWxlcyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJD
b3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwJywKQEAgLTc0NDEsNiArNzQ0NSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhcklt
cGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5
N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0
MWFkYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIApAQCAtNDYsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBt
X3NwZWVjaFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IDI1NGU5MmYwYjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZk
NzZkZjBlNWNlMzAwY2ZhOWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAKQEAgLTI5LDYgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9
CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQq
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4
IDQ0ZTYxNDI4YjIzNjFlYzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZm
YTYyOGMxMWNlMjM2NjEwZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjks
NiArMjksOCBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7
IH0KIH07CiAgICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citj
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50Kik7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3Rl
eHQgPSB0ZXh0OyB9CkBAIC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFy
dFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAg
IAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAg
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgy
ZWVmMmUzZmE2NDg3MjM0ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4
NWYzMTc5M2FhOGEzOTU3NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwx
MSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxT
ZXJ2aWNlLCBpc0RlZmF1bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30K
ICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6
IG1fdm9pY2VVUkkodm9pY2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYg
dm9pY2VVUgogewogfQogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwg
bV9kZWZhdWx0KGZhbHNlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIy
ZDJmM2JkMGVlNjRlMDQ3NzlmNDNhNjY5NTQxMDM5Li5mN2FiYThjNTJlNDQ0MWI5NDRjNWM0NTk1
OTU5MWU1YTVkNGY0NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsg
fQorICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNl
VVJJID12b2ljZVVSSTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25h
bWUgPSBuYW1lOyB9CisKICAgICBjb25zdCBTdHJpbmcmIGxhbmcoKSBjb25zdCB7IHJldHVybiBt
X2xhbmc7IH0KKyAgICB2b2lkIHNldExhbmcoY29uc3QgU3RyaW5nJiBsYW5nKSB7IG1fbGFuZyA9
IGxhbmc7IH0KKwogICAgIGJvb2wgbG9jYWxTZXJ2aWNlKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bFNlcnZpY2U7IH0KKyAgICB2b2lkIHNldExvY2FsU2VydmljZShib29sIGxvY2FsU2VydmljZSkg
eyBtX2xvY2FsU2VydmljZSA9IGxvY2FsU2VydmljZTsgfQorCiAgICAgYm9vbCBpc0RlZmF1bHQo
KSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHQ7IH0KLSAgICAKKyAgICB2b2lkIHNldElzRGVmYXVs
dChib29sIGlzRGVmYXVsdCkgeyBtX2RlZmF1bHQgPSBpc0RlZmF1bHQ7IH0KKwogcHJpdmF0ZToK
ICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUkks
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBsYW5nLCBib29sIGxvY2FsU2Vydmlj
ZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoKTsK
IAogICAgIFN0cmluZyBtX3ZvaWNlVVJJOwogICAgIFN0cmluZyBtX25hbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCmlu
ZGV4IDY2MTIzZDVhZjExY2FiYjBlY2UzZWFhNGM2MjA3MTc1YWE2MWU2ZjcuLmY5OGUxNDJjZGEz
NDM0NzE3NjU3NGUxN2ViMjcyYjE0ZGI3NDIzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCkBAIC0zMiwxNSArMzIs
MTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogUGFzc093blB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjcmVhdGUoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihjbGllbnQpKTsKKyAgICBPd25QdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcj4gc3ludGhlc2l6ZXIgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcihjbGllbnQpKTsKKyAgICBzeW50aGVzaXplci0+aW5pdGlhbGl6ZVZv
aWNlTGlzdCgpOworICAgIHJldHVybiBzeW50aGVzaXplci5yZWxlYXNlKCk7CiB9CiAKLVBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQotICAgIDogbV9zcGVlY2hTeW50aGVzaXpl
ckNsaWVudChjbGllbnQpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNldFZvaWNl
TGlzdChWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZvaWNl
cykKIHsKLSAgICBpbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAgbV92b2ljZUxpc3QgPSB2b2lj
ZXM7CiB9Ci0gICAgCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKaW5kZXggY2ZkYzdlMTlkMDAzYjg5Y2U4MTZjNDZh
NDZjMjlmMjk3ZGJjMDBmNi4uZjBkNjg5M2EyMWM1NjgzZjgxZTVhODJkYTVhYjY4ZjUyMTNkMWM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaApAQCAtMzcsNiArMzcsMTMgQEAKIE9CSkNfQ0xBU1MgV2ViU3BlZWNoU3ludGhl
c2lzV3JhcHBlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ0hST01JVU0pCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQ7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVt
IFNwZWVjaEJvdW5kYXJ5IHsKQEAgLTQ4LDEyICs1NSwxMiBAQCBjbGFzcyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTsKIAogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1
bWVTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2
ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVl
Y2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVk
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hCb3Vu
ZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHZvaWNlc0Rp
ZENoYW5nZSgpID0gMDsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50KCkgeyB9CkBAIC02MywyNyArNzAsMzMgQEAgY2xhc3MgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcj4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnQqKTsKIAotICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKyAg
ICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCk7CiAgICAgCiAgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2ljZUxpc3Qo
KSBjb25zdCB7IHJldHVybiBtX3ZvaWNlTGlzdDsgfQotICAgIHZpcnR1YWwgdm9pZCBzcGVhayhj
b25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CiAg
ICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICAKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50OyB9Ci0gICAgCisKKyAgICB2b2lkIHNldFZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mKTsKKwogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CiAgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAgICAgVmVjdG9y
PFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG1fdm9pY2VMaXN0OwogICAg
IAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBtX3NwZWVj
aFN5bnRoZXNpemVyQ2xpZW50OwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0
KCk7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxXZWJTcGVlY2hTeW50
aGVzaXNXcmFwcGVyPiBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcjsKICNlbmRpZgorI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyPiBt
X3dlYlNwZWVjaFN5bnRoZXNpemVyOworICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50PiBtX3dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworI2VuZGlmCiB9Owog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3OWQ3MjBlYjhjNmZkOWVlY2IzODNkMmE1MDEy
NjI3ZmM4ODcwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw5
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CisjaW5j
bHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3NwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50KGNsaWVudCkKK3sKKyAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
ID0gYWRvcHRQdHIobmV3IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCh0aGlzLCBjbGll
bnQpKTsKKyAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyID0gYWRvcHRQdHIoV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jcmVhdGVTcGVlY2hTeW50aGVzaXplcihtX3dlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50LmdldCgpKSk7Cit9CisKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKK3sKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hT
eW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+dXBkYXRl
Vm9pY2VMaXN0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWso
UGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQor
eworICAgIGlmICghbV93ZWJTcGVlY2hTeW50aGVzaXplciB8fCAhbV93ZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXpl
ci0+c3BlYWsoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UodXR0ZXJhbmNlKSk7
Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cGF1c2UoKQoreworICAgIGlm
IChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRo
ZXNpemVyLT5wYXVzZSgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJl
c3VtZSgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIuZ2V0KCkpCisgICAgICAg
IG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnJlc3VtZSgpOworfQorCit2b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6
ZXIuZ2V0KCkpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPmNhbmNlbCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMGY5MmY2ODRkNDBkZjIyNTI3ZjgxMzQ5ZjIwMzM4YjkyZTRjNzVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+JiB1dHRlcmFuY2UpCisgICAgOiBtX3ByaXZhdGUodXR0ZXJh
bmNlKQoreworfQorCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIFdlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3I9KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKiB1dHRlcmFuY2UpCit7CisgICAgbV9wcml2YXRlID0gdXR0ZXJhbmNlOworICAg
IHJldHVybiAqdGhpczsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmFz
c2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKQoreworICAgIG1f
cHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30KKworV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQo
KTsKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpvcGVyYXRvciBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSooKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnRleHQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnRleHQoKTsKK30KKworV2ViU3RyaW5n
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+bGFuZygpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjp2b2ljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dm9pY2UoKSA/
IFdlYlN0cmluZyhtX3ByaXZhdGUtPnZvaWNlKCktPm5hbWUoKSkgOiBXZWJTdHJpbmcoKTsKK30K
KworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp2b2x1bWUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPnZvbHVtZSgpOworfQorCitmbG9hdCBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnJh
dGUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpwaXRjaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cGl0Y2goKTsKK30KKworZG91YmxlIFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9wcml2YXRlLT5zdGFydFRpbWUoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50
aGVzaXNWb2ljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk1ZDUxMjEyY2I3MjdjODQ3OTRlMDIyOTc2MmE0
MjEzMzZmNDcwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0wLDAgKzEsODAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmg+CisKKyNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvbkFsdGVy
bmF0aXZlLmgiCisjaW5jbHVkZSAiU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJTcGVlY2hT
eW50aGVzaXNWb2ljZTo6YXNzaWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhl
cikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OnJlc2V0KCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoKTsKK30K
Kwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0Vm9pY2VVUkkoY29uc3QgV2ViU3Ry
aW5nJiB2b2ljZVVSSSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFZvaWNlVVJJKHZvaWNlVVJJKTsK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TmFtZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCit7CisgICAgbV9wcml2YXRlLT5zZXROYW1lKG5hbWUpOworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMYW5ndWFnZShjb25zdCBXZWJTdHJpbmcmIGxhbmd1
YWdlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TGFuZyhsYW5ndWFnZSk7Cit9CisKK3ZvaWQgV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKGJvb2wgaXNMb2NhbFNlcnZp
Y2UpCit7CisgICAgbV9wcml2YXRlLT5zZXRMb2NhbFNlcnZpY2UoaXNMb2NhbFNlcnZpY2UpOwor
fQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0RlZmF1bHQoYm9vbCBpc0Rl
ZmF1bHQpCit7CisgICAgbV9wcml2YXRlLT5zZXRJc0RlZmF1bHQoaXNEZWZhdWx0KTsKK30KKwor
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjViNDJmZDI3OTJkMjVlNTY0ZGI3MTA2Y2JmNGI2
ZTI2YzYyOGEzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmNwcApAQCAtMCww
ICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplciogc3ludGhlc2l6ZXIsIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fc3ludGhlc2l6ZXIoc3ludGhlc2l6ZXIpCisg
ICAgLCBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCgpCit7Cit9CisKK3ZvaWQgV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QoY29uc3QgV2ViS2l0OjpX
ZWJWZWN0b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZvaWNlcykKK3sKKyNp
ZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U+ID4gb3V0Vm9pY2VzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdm9pY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBvdXRWb2ljZXMuYXBwZW5kKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4odm9pY2VzW2ldKSk7CisgICAgbV9zeW50
aGVzaXplci0+c2V0Vm9pY2VMaXN0KG91dFZvaWNlcyk7CisgICAgbV9jbGllbnQtPnZvaWNlc0Rp
ZENoYW5nZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsOjpkaWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAg
bV9jbGllbnQtPmRpZFN0YXJ0U3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lk
IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3BlYWtpbmcoY29uc3Qg
V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNoU3BlYWtpbmco
dXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbDo6ZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IG1fY2xpZW50LT5kaWRQYXVzZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0
IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFJlc3VtZVNwZWFraW5n
KHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KQorICAgIG1fY2xpZW50LT5zcGVha2luZ0Vycm9yT2NjdXJyZWQodXR0ZXJhbmNlKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6d29yZEJvdW5kYXJ5
RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
dXR0ZXJhbmNlLCB1bnNpZ25lZCBjaGFySW5kZXgpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCisgICAgbV9jbGllbnQtPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCh1dHRlcmFuY2UsIFNw
ZWVjaFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29u
c3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgdW5zaWdu
ZWQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xp
ZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJhbmNlLCBTcGVlY2hTZW50ZW5jZUJvdW5k
YXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJjYzgzM2JiMjM4NmQ2NTI1MzBhODEwYTFkYTIxYmZjMDJlYzU3MjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oPgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50OworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwgOiBwdWJs
aWMgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIqLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2U+JiB2b2ljZXMpOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNv
bnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0
OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHdvcmRCb3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
LCB1bnNpZ25lZCBjaGFySW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5
RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYs
IHVuc2lnbmVkIGNoYXJJbmRleCk7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplciogbV9zeW50aGVzaXplcjsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmlu
ZGV4IDcwOTRmYTM1MzgyMmU4NzQ1ZTQ2ZTM0ZGRiZjM3Yzc0YjBlYTUxNTUuLjM1OWE0MDZjMjc3
N2VkNTYyMmZkMWNmMjdhYjUwM2VjYzU4N2Q1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVk
ZSA8QXBwS2l0L05TU3BlZWNoU3ludGhlc2l6ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQpAQCAtMzcsMTQgKzM4LDE0IEBACiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplciogbV9zeW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEgUmVmIHRv
IHRoZSB1dHRlcmFuY2Ugc28gdGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhlIHN5bnRo
IGlzIGRvbmUgd2l0aCBpdC4KLSAgICBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNlOwogICAgIAogICAgIFJldGFpblB0cjxOU1Nw
ZWVjaFN5bnRoZXNpemVyPiBtX3N5bnRoZXNpemVyOwogICAgIGZsb2F0IG1fYmFzZVBpdGNoOwog
fQogCiAtIChXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyICopaW5pdFdpdGhTcGVlY2hTeW50aGVz
aXplcjooV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciAqKXN5bnRoZXNpemVyOwot
LSAodm9pZClzcGVha1V0dGVyYW5jZTooY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2U7CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZTsKIAogQGVu
ZAogCkBAIC04MSw3ICs4Miw3IEBACiAgICAgbV9iYXNlUGl0Y2ggPSBbW21fc3ludGhlc2l6ZXIg
b2JqZWN0Rm9yUHJvcGVydHk6TlNTcGVlY2hQaXRjaEJhc2VQcm9wZXJ0eSBlcnJvcjpuaWxdIGZs
b2F0VmFsdWVdOwogfQogCi0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZQorLSAodm9pZClzcGVh
a1V0dGVyYW5jZTooV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1
dHRlcmFuY2UKIHsKICAgICAvLyBXaGVuIHNwZWFrIGlzIGNhbGxlZCB3ZSBzaG91bGQgbm90IGhh
dmUgYW4gZXhpc3Rpbmcgc3BlZWNoIHV0dGVyYW5jZSBvdXRzdGFuZGluZy4KICAgICBBU1NFUlQo
IW1fdXR0ZXJhbmNlKTsKQEAgLTE2NSw3ICsxNjYsNyBAQAogICAgIFVOVVNFRF9QQVJBTShzZW5k
ZXIpOwogICAgIAogICAgIC8vIENsZWFyIHRoZSBtX3V0dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNl
IGZpbmlzaCBzcGVha2luZyBraWNrcyBvZmYgYSBuZXcgc3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5
LgotICAgIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1
dHRlcmFuY2UgPSBtX3V0dGVyYW5jZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFuY2Ug
PSAwOwogICAgIAogICAgIGlmIChmaW5pc2hlZFNwZWFraW5nKQpAQCAtMTg4LDYgKzE4OSwxNSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCog
Y2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7Cit9CisK
K1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkK
K3sKK30KKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VM
aXN0KCkKIHsKICAgICBOU1N0cmluZyAqZGVmYXVsdFZvaWNlVVJJID0gW05TU3BlZWNoU3ludGhl
c2l6ZXIgZGVmYXVsdFZvaWNlXTsKQEAgLTIyMCwxMiArMjMwLDEyIEBAIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIu
Z2V0KCkgcmVzdW1lXTsKIH0KICAgICAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
c3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkK
K3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIGlmICghbV9wbGF0
Zm9ybVNwZWVjaFdyYXBwZXIpCiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmFkb3B0
TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFNwZWVjaFN5bnRo
ZXNpemVyOnRoaXNdKTsKICAgICAKLSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkg
c3BlYWtVdHRlcmFuY2U6JnV0dGVyYW5jZV07CisgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
LmdldCgpIHNwZWFrVXR0ZXJhbmNlOnV0dGVyYW5jZS5nZXQoKV07CiB9CiAKIHZvaWQgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAK
aW5kZXggMWM2NzE4MjIyNzIyYzFiYWVjN2M0NzMzMzQ2MTM5YzA1ZTllODVkOS4uZTk0MTk1YWVh
NGFhZDZkYzA4Y2QyZDkxYzUyZWEyZDdjNTBmYmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5jcHAKQEAgLTMzLDEzICszMywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25Q
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjpjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQog
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2so
Y2xpZW50KSk7CisgICAgT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBzeW50
aGVzaXplciA9IGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhjbGll
bnQpKTsKKyAgICBzeW50aGVzaXplci0+aW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIHJldHVy
biBzeW50aGVzaXplci5yZWxlYXNlKCk7CiB9CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckNsaWVudCogY2xpZW50KQogICAgIDogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihj
bGllbnQpCiAgICAgLCBtX3NwZWFraW5nRmluaXNoZWRUaW1lcih0aGlzLCAmUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQpCi0gICAgLCBtX3V0dGVyYW5jZSgw
KQogewogfQogICAgIApAQCAtNTAsNyArNTEsNyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jazo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKCkKIAogdm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jaz4qKQogewotICAgIEFTU0VSVChtX3V0dGVyYW5jZSk7CisgICAgQVNT
RVJUKG1fdXR0ZXJhbmNlLmdldCgpKTsKICAgICBjbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmco
bV91dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJhbmNlID0gMDsKIH0KQEAgLTYzLDEwICs2NCwxMCBA
QCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjppbml0aWFsaXplVm9pY2VMaXN0
KCkKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dhbiIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmlu
ZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwogfQogCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjpzcGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
dXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUGFz
c1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewog
ICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwotICAgIG1fdXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsK
KyAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKICAgICBjbGllbnQoKS0+ZGlkU3RhcnRTcGVh
a2luZyhtX3V0dGVyYW5jZSk7CiAgICAgCiAgICAgLy8gRmlyZSBhIGZha2Ugd29yZCBhbmQgdGhl
biBzZW50ZW5jZSBib3VuZGFyeSBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaAppbmRleCBm
MTNiMGUyYzA1ZWI2ZjBlZWFjYTFkMzMwMDVhODRjNTk0ZGZjNmNiLi5iYjdiNGVmOWZhMWUyNTQx
YzEzNDE0MzlkNTgwZDVmNTg1MzBiY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTW9jaz4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQq
KTsKICAgICAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpOwot
ICAgIHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmly
dHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKQEAgLTUwLDcg
KzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNwZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2s+Kik7CiAgICAgCiAgICAgVGltZXI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2s+IG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyOwotICAgIGNvbnN0IFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKKyAgICBSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNlOwogfTsKICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194283</attachid>
            <date>2013-03-21 09:54:54 -0700</date>
            <delta_ts>2013-03-21 11:41:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111695-20130321095042.patch</filename>
            <type>text/plain</type>
            <size>71218</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDY3MGNjOWFiMmYx
YmI4ZmE2MzM5NGQ2NWZhMjdmOGFhODM1Y2MxLi5lZDgxZmVmMWNiYmVmOTMzOTMzMTdjZmQwNzYz
OWM2ZTE3NjU1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0yMCAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEV4cG9zZXMgYSBwbGF0Zm9ybSBBUEkgdGhhdCB0aGUg
ZW1iZWRkZXIgY2FuIGltcGxlbWVudCB0bworICAgICAgICBwcm92aWRlIHNwZWVjaCBzeW50aGVz
aXMgZm9yIHRoZSBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6fldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjppc051
bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Ojp+V2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorCiAyMDEzLTAzLTIwICBIYXJhbGQgQWx2ZXN0cmFuZCAg
PGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2NhbC9SZW1vdGUgYW5kIFJUQ1N0
YXRzRWxlbWVudCBmcm9tIFdlYlJUQ1N0YXRzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMWNiN2VkNjBk
MThmMGRlNzBkYTExMzhjMzJmNTY3YTZlN2RlYzAuLjQyZjE1Y2ZmOWNhMjg2NjQ1MjNlMTk0MTVi
NTJhYTFjMmQ0ZTM0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTMtMDMtMjAg
IERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24g
b2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3NpbmcgaW50
ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAgICAgICAg
KFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9p
Y2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAg
IChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9t
aXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJh
dG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFr
VXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKToKKwogMjAxMy0wMy0yMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKaW5kZXggOGY3MDgwZTBiMGNkYjVjM2M1ZWQ5YmU2ZmQ4ZWI2MGM2NGQw
MTQ5MS4uNGU4MzkzZGQxYWVhYThiNzU5M2EzNzMwMmYyZTI2NTk2MjVmOTY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKQEAgLTEyOSw2ICsxMjksMTAgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUuLjgwNmNj
NjA4MjUzMDFjMTVlOTcxMjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJX
ZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAt
NjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9y
dDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNp
emVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhlbWVFbmdp
bmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1u
dWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaFN5bnRo
ZXNpemVyKiBjcmVhdGVTcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0
ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citw
dWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
b3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0
OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gt
YXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
dm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisg
ICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3
NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5l
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0
OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxs
IHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFj
YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJ
bmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4
ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRl
ZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNl
IikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3Rh
cnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5n
KCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7
CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4o
dXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRl
cmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVu
dCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmco
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQg
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19j
YXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVl
KTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRi
NmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9p
ZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFr
aW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZv
aWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwog
ICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0
MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgw
OTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQg
QEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAg
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkK
ICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0
YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVh
Mjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBA
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQor
ICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExh
bmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxh
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2Uq
IHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSop
OwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZv
bHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxv
YXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBm
bG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsg
fQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNo
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91Ymxl
IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1l
KCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0K
KyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0
ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRl
cmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2lj
ZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBk
NjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0
ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZv
aWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUzMDNhMWFmYTVjN2M3
ODVkNGY0YzE3OTk0ZDIzNWMwZGVhNGMxNTcuLjc0MDNjZGQ0ZjdiZDY0YTNkMDA0ZmEzZWE4MGQ1
NDRiODI2ZjdiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY2LDYgKzE1NjYsNyBAQCBf
X1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRW
TjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0ZWY1ZGE3MDllYWQ5MmE2Y2RmZjVjOTViN2Y5ODg3MGE2MjlmNWFmLi5i
YmQwZjg4ZTc0ZDhhMDc4OTdmMTdlMTAyNThjMjdhYzdjOGI3ZTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05OTMsNyArOTkzLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9T
cGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTgsNiArMzY5Nywx
MiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg3MCw2ICszODc1LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVs
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cENvbnRhaW5lci5oJywKQEAgLTUyOTAsOCArNTI5Niw2IEBACiAgICAgICAgICd3ZWJjb3JlX3Rl
c3Rfc3VwcG9ydF9maWxlcyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJD
b3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwJywKQEAgLTc0NDEsNiArNzQ0NSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhcklt
cGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5
N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0
MWFkYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIApAQCAtNDYsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBt
X3NwZWVjaFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IDI1NGU5MmYwYjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZk
NzZkZjBlNWNlMzAwY2ZhOWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAKQEAgLTI5LDYgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9
CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQq
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4
IDQ0ZTYxNDI4YjIzNjFlYzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZm
YTYyOGMxMWNlMjM2NjEwZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjks
NiArMjksOCBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7
IH0KIH07CiAgICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citj
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50Kik7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3Rl
eHQgPSB0ZXh0OyB9CkBAIC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFy
dFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAg
IAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAg
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgy
ZWVmMmUzZmE2NDg3MjM0ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4
NWYzMTc5M2FhOGEzOTU3NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwx
MSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxT
ZXJ2aWNlLCBpc0RlZmF1bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30K
ICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6
IG1fdm9pY2VVUkkodm9pY2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYg
dm9pY2VVUgogewogfQogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwg
bV9kZWZhdWx0KGZhbHNlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIy
ZDJmM2JkMGVlNjRlMDQ3NzlmNDNhNjY5NTQxMDM5Li5mNjE3N2VhMmE0MTBkYTE4NDA4Yzg3Njk4
MjhhNzcyNmE3ZGM1NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsg
fQorICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNl
VVJJID0gdm9pY2VVUkk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9u
YW1lID0gbmFtZTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYW5nOyB9CisgICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcg
PSBsYW5nOyB9CisKICAgICBib29sIGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YWxTZXJ2aWNlOyB9CisgICAgdm9pZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2Up
IHsgbV9sb2NhbFNlcnZpY2UgPSBsb2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0
KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1
bHQoYm9vbCBpc0RlZmF1bHQpIHsgbV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6
CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7
CiAKICAgICBTdHJpbmcgbV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApp
bmRleCA2NjEyM2Q1YWYxMWNhYmIwZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5mOThlMTQyY2Rh
MzQzNDcxNzY1NzRlMTdlYjI3MmIxNGRiNzQyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzIsMTUgKzMy
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgc3ludGhlc2l6ZXItPmluaXRpYWxpemVW
b2ljZUxpc3QoKTsKKyAgICByZXR1cm4gc3ludGhlc2l6ZXIucmVsZWFzZSgpOwogfQogCi1QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQoY2xpZW50KQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2lj
ZXMpCiB7Ci0gICAgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIG1fdm9pY2VMaXN0ID0gdm9p
Y2VzOwogfQotICAgIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2
YTQ2YzI5ZjI5N2RiYzAwZjYuLmYwZDY4OTNhMjFjNTY4M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFj
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBACiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBTcGVlY2hCb3VuZGFyeSB7CkBAIC00OCwxMiArNTUsMTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dW1lU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3Bl
ZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91
bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNE
aWRDaGFuZ2UoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCgpIHsgfQpAQCAtNjMsMjcgKzcwLDMzIEBAIGNsYXNzIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkgeyB9Cisg
ICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwogICAgIAogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0
KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWso
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNs
aWVudDsgfQotICAgIAorCisgICAgdm9pZCBzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7CisKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAg
ICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9zcGVl
Y2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcj4g
bV93ZWJTcGVlY2hTeW50aGVzaXplcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudD4gbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsKKyNlbmRpZgogfTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzlkNzIwZWI4YzZmZDllZWNiMzgzZDJhNTAx
MjYyN2ZjODg3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50
aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwodGhpcywgY2xp
ZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudC5nZXQoKSkpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNo
U3ludGhlc2l6ZXIuZ2V0KCkpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0
ZVZvaWNlTGlzdCgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkK
K3sKKyAgICBpZiAoIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6
ZXItPnNwZWFrKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkp
OworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBp
ZiAobV93ZWJTcGVlY2hTeW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50
aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpy
ZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAg
ICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNp
emVyLmdldCgpKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5jYW5jZWwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5MmU0Yzc1YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisjaW5j
bHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDogbV9wcml2YXRlKHV0dGVy
YW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9IHV0dGVyYW5jZTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjph
c3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKK3sKKyAgICBt
X3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7Cit9CisKK1dlYlN0cmlu
ZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvaWNlKCkg
PyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDogV2ViU3RyaW5nKCk7Cit9
CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5y
YXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2goKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9CisKK2RvdWJsZSBXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3Yzg0Nzk0ZTAyMjk3NjJh
NDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3Ro
ZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKGNvbnN0IFdlYlN0
cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRWb2ljZVVSSSh2b2ljZVVSSSk7
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1lKTsKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJiBsYW5n
dWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2UpOworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShib29sIGlzTG9jYWxTZXJ2
aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlzTG9jYWxTZXJ2aWNlKTsK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KGJvb2wgaXNE
ZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlzRGVmYXVsdCk7Cit9CisK
K1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YjQyZmQyNzkyZDI1ZTU2NGRiNzEwNmNiZjRi
NmUyNmM2MjhhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAKQEAgLTAs
MCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N5bnRoZXNpemVyKHN5bnRoZXNpemVyKQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoKQoreworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6
V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpCit7Cisj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9pY2VzLmFwcGVuZChQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tpXSkpOworICAgIG1fc3lu
dGhlc2l6ZXItPnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAgIG1fY2xpZW50LT52b2ljZXNE
aWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbDo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IG1fY2xpZW50LT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZEZpbmlzaFNwZWFraW5nKGNvbnN0
IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZEZpbmlzaFNwZWFraW5n
KHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAg
ICBtX2NsaWVudC0+ZGlkUGF1c2VTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVTcGVha2luZyhjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRSZXN1bWVTcGVha2lu
Zyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKyAgICBtX2NsaWVudC0+c3BlYWtpbmdFcnJvck9jY3VycmVkKHV0dGVyYW5jZSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OndvcmRCb3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
IHV0dGVyYW5jZSwgdW5zaWduZWQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJhbmNlLCBT
cGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OnNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGNv
bnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UsIHVuc2ln
bmVkIGNoYXJJbmRleCkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2Ns
aWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVkKHV0dGVyYW5jZSwgU3BlZWNoU2VudGVuY2VCb3Vu
ZGFyeSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iY2M4MzNiYjIzODZkNjUyNTMwYTgxMGExZGEyMWJmYzAyZWM1NzI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudEltcGwuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudDsKKworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsIDogcHVi
bGljIFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbChQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKiwgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOworICAgIHZpcnR1YWwg
fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIHNl
dFZvaWNlTGlzdChjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiYgdm9pY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhj
b25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
c3VtZVNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7
CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiwgdW5zaWduZWQgY2hhckluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VudGVuY2VCb3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
LCB1bnNpZ25lZCBjaGFySW5kZXgpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXI7CisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNs
aWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpp
bmRleCA3MDk0ZmEzNTM4MjJlODc0NWU0NmUzNGRkYmYzN2M3NGIwZWE1MTU1Li4zNTlhNDA2YzI3
NzdlZDU2MjJmZDFjZjI3YWI1MDNlY2M1ODdkNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgogI2luY2x1
ZGUgPEFwcEtpdC9OU1NwZWVjaFN5bnRoZXNpemVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKQEAgLTM3LDE0ICszOCwxNCBAQAogewogICAgIFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXJPYmplY3Q7CiAgICAgLy8gSG9sZCBhIFJlZiB0
byB0aGUgdXR0ZXJhbmNlIHNvIHRoYXQgaXQgd29uJ3QgZGlzYXBwZWFyIHVudGlsIHRoZSBzeW50
aCBpcyBkb25lIHdpdGggaXQuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNlOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKICAgICAKICAgICBSZXRhaW5QdHI8TlNT
cGVlY2hTeW50aGVzaXplcj4gbV9zeW50aGVzaXplcjsKICAgICBmbG9hdCBtX2Jhc2VQaXRjaDsK
IH0KIAogLSAoV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciAqKWluaXRXaXRoU3BlZWNoU3ludGhl
c2l6ZXI6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgKilzeW50aGVzaXplcjsK
LS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlICopdXR0ZXJhbmNlOworLSAodm9pZClzcGVha1V0dGVyYW5jZTooV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2U7CiAKIEBl
bmQKIApAQCAtODEsNyArODIsNyBAQAogICAgIG1fYmFzZVBpdGNoID0gW1ttX3N5bnRoZXNpemVy
IG9iamVjdEZvclByb3BlcnR5Ok5TU3BlZWNoUGl0Y2hCYXNlUHJvcGVydHkgZXJyb3I6bmlsXSBm
bG9hdFZhbHVlXTsKIH0KIAotLSAodm9pZClzcGVha1V0dGVyYW5jZTooY29uc3QgV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2UKKy0gKHZvaWQpc3Bl
YWtVdHRlcmFuY2U6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICop
dXR0ZXJhbmNlCiB7CiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBo
YXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJU
KCFtX3V0dGVyYW5jZSk7CkBAIC0xNjUsNyArMTY2LDcgQEAKICAgICBVTlVTRURfUEFSQU0oc2Vu
ZGVyKTsKICAgICAKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFyaWFibGUgaW4gY2Fz
ZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpvYiBpbW1lZGlhdGVs
eS4KLSAgICBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
dXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNl
ID0gMDsKICAgICAKICAgICBpZiAoZmluaXNoZWRTcGVha2luZykKQEAgLTE4OCw2ICsxODksMTUg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQq
IGNsaWVudCkKKyAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50KQoreworfQor
CitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigp
Cit7Cit9CisKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNl
TGlzdCgpCiB7CiAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IFtOU1NwZWVjaFN5bnRo
ZXNpemVyIGRlZmF1bHRWb2ljZV07CkBAIC0yMjAsMTIgKzIzMCwxMiBAQCB2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
LmdldCgpIHJlc3VtZV07CiB9CiAgICAgCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2Up
Cit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBpZiAoIW1fcGxh
dGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAgICBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5hZG9w
dE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdpdGhTcGVlY2hTeW50
aGVzaXplcjp0aGlzXSk7CiAgICAgCi0gICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgp
IHNwZWFrVXR0ZXJhbmNlOiZ1dHRlcmFuY2VdOworICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBl
ci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2UuZ2V0KCldOwogfQogCiB2b2lkIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3Bw
CmluZGV4IDFjNjcxODIyMjcyMmMxYmFlYzdjNDczMzM0NjEzOWMwNWU5ZTg1ZDkuLmU5NDE5NWFl
YTRhYWQ2ZGMwOGNkMmQ5MWM1MmVhMmQ3YzUwZmJmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suY3BwCkBAIC0zMywxMyArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3du
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
KGNsaWVudCkpOworICAgIE93blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gc3lu
dGhlc2l6ZXIgPSBhZG9wdFB0cihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soY2xp
ZW50KSk7CisgICAgc3ludGhlc2l6ZXItPmluaXRpYWxpemVWb2ljZUxpc3QoKTsKKyAgICByZXR1
cm4gc3ludGhlc2l6ZXIucmVsZWFzZSgpOwogfQogICAgIAogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIo
Y2xpZW50KQogICAgICwgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIodGhpcywgJlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKQotICAgICwgbV91dHRlcmFuY2Uo
MCkKIHsKIH0KICAgICAKQEAgLTUwLDcgKzUxLDcgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpCiAKIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2s+KikKIHsKLSAgICBBU1NFUlQobV91dHRlcmFuY2UpOworICAgIEFT
U0VSVChtX3V0dGVyYW5jZS5nZXQoKSk7CiAgICAgY2xpZW50KCktPmRpZEZpbmlzaFNwZWFraW5n
KG1fdXR0ZXJhbmNlKTsKICAgICBtX3V0dGVyYW5jZSA9IDA7CiB9CkBAIC02MywxMCArNjQsMTAg
QEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlz
dCgpCiAgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6
OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2UubG9nYW4iKSwgU3RyaW5nKCJsb2dhbiIpLCBTdHJp
bmcoImZyLUNBIiksIHRydWUsIHRydWUpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jazo6c3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
IHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKFBh
c3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsK
ICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKLSAgICBtX3V0dGVyYW5jZSA9ICZ1dHRlcmFuY2U7
CisgICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CiAgICAgY2xpZW50KCktPmRpZFN0YXJ0U3Bl
YWtpbmcobV91dHRlcmFuY2UpOwogICAgIAogICAgIC8vIEZpcmUgYSBmYWtlIHdvcmQgYW5kIHRo
ZW4gc2VudGVuY2UgYm91bmRhcnkgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKaW5kZXgg
ZjEzYjBlMmMwNWViNmYwZWVhY2ExZDMzMDA1YTg0YzU5NGRmYzZjYi4uYmI3YjRlZjlmYTFlMjU0
MWMxMzQxNDM5ZDU4MGQ1ZjU4NTMwYmNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2s+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
Kik7CiAgICAgCiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZp
cnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CkBAIC01MCw3
ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzcGVha2luZ0ZpbmlzaGVkKFRpbWVyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiopOwogICAgIAogICAgIFRpbWVyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrPiBtX3NwZWFraW5nRmluaXNoZWRUaW1lcjsKLSAgICBjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7CisgICAgUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3V0dGVyYW5jZTsKIH07CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194306</attachid>
            <date>2013-03-21 11:41:33 -0700</date>
            <delta_ts>2013-03-21 14:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130321113721.patch</filename>
            <type>text/plain</type>
            <size>71256</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDY3MGNjOWFiMmYx
YmI4ZmE2MzM5NGQ2NWZhMjdmOGFhODM1Y2MxLi5lZDgxZmVmMWNiYmVmOTMzOTMzMTdjZmQwNzYz
OWM2ZTE3NjU1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0yMCAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEV4cG9zZXMgYSBwbGF0Zm9ybSBBUEkgdGhhdCB0aGUg
ZW1iZWRkZXIgY2FuIGltcGxlbWVudCB0bworICAgICAgICBwcm92aWRlIHNwZWVjaCBzeW50aGVz
aXMgZm9yIHRoZSBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6fldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjppc051
bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Ojp+V2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorCiAyMDEzLTAzLTIwICBIYXJhbGQgQWx2ZXN0cmFuZCAg
PGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2NhbC9SZW1vdGUgYW5kIFJUQ1N0
YXRzRWxlbWVudCBmcm9tIFdlYlJUQ1N0YXRzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMWNiN2VkNjBk
MThmMGRlNzBkYTExMzhjMzJmNTY3YTZlN2RlYzAuLjQyZjE1Y2ZmOWNhMjg2NjQ1MjNlMTk0MTVi
NTJhYTFjMmQ0ZTM0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTMtMDMtMjAg
IERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24g
b2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3NpbmcgaW50
ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAgICAgICAg
KFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9p
Y2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAg
IChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9t
aXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJh
dG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFr
VXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKToKKwogMjAxMy0wMy0yMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKaW5kZXggOGY3MDgwZTBiMGNkYjVjM2M1ZWQ5YmU2ZmQ4ZWI2MGM2NGQw
MTQ5MS4uNGU4MzkzZGQxYWVhYThiNzU5M2EzNzMwMmYyZTI2NTk2MjVmOTY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKQEAgLTEyOSw2ICsxMjksMTAgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUuLjgwNmNj
NjA4MjUzMDFjMTVlOTcxMjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJX
ZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAt
NjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9y
dDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNp
emVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhlbWVFbmdp
bmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1u
dWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaFN5bnRo
ZXNpemVyKiBjcmVhdGVTcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0
ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citw
dWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
b3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0
OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gt
YXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
dm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisg
ICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3
NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5l
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0
OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxs
IHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFj
YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJ
bmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4
ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRl
ZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNl
IikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3Rh
cnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5n
KCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7
CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4o
dXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRl
cmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVu
dCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmco
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQg
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19j
YXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVl
KTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRi
NmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9p
ZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFr
aW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZv
aWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwog
ICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0
MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgw
OTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQg
QEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAg
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkK
ICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0
YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVh
Mjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBA
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQor
ICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExh
bmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxh
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2Uq
IHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSop
OwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZv
bHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxv
YXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBm
bG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsg
fQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNo
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91Ymxl
IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1l
KCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0K
KyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0
ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRl
cmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2lj
ZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBk
NjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0
ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZv
aWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUzMDNhMWFmYTVjN2M3
ODVkNGY0YzE3OTk0ZDIzNWMwZGVhNGMxNTcuLjc0MDNjZGQ0ZjdiZDY0YTNkMDA0ZmEzZWE4MGQ1
NDRiODI2ZjdiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY2LDYgKzE1NjYsNyBAQCBf
X1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRW
TjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0ZWY1ZGE3MDllYWQ5MmE2Y2RmZjVjOTViN2Y5ODg3MGE2MjlmNWFmLi5i
YmQwZjg4ZTc0ZDhhMDc4OTdmMTdlMTAyNThjMjdhYzdjOGI3ZTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05OTMsNyArOTkzLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9T
cGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTgsNiArMzY5Nywx
MiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg3MCw2ICszODc1LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVs
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cENvbnRhaW5lci5oJywKQEAgLTUyOTAsOCArNTI5Niw2IEBACiAgICAgICAgICd3ZWJjb3JlX3Rl
c3Rfc3VwcG9ydF9maWxlcyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJD
b3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwJywKQEAgLTc0NDEsNiArNzQ0NSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhcklt
cGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5
N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0
MWFkYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIApAQCAtNDYsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBt
X3NwZWVjaFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IDI1NGU5MmYwYjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZk
NzZkZjBlNWNlMzAwY2ZhOWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAKQEAgLTI5LDYgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9
CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQq
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4
IDQ0ZTYxNDI4YjIzNjFlYzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZm
YTYyOGMxMWNlMjM2NjEwZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjks
NiArMjksOCBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7
IH0KIH07CiAgICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citj
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50Kik7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3Rl
eHQgPSB0ZXh0OyB9CkBAIC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFy
dFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAg
IAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAg
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgy
ZWVmMmUzZmE2NDg3MjM0ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4
NWYzMTc5M2FhOGEzOTU3NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwx
MSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxT
ZXJ2aWNlLCBpc0RlZmF1bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30K
ICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6
IG1fdm9pY2VVUkkodm9pY2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYg
dm9pY2VVUgogewogfQogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwg
bV9kZWZhdWx0KGZhbHNlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIy
ZDJmM2JkMGVlNjRlMDQ3NzlmNDNhNjY5NTQxMDM5Li5mNjE3N2VhMmE0MTBkYTE4NDA4Yzg3Njk4
MjhhNzcyNmE3ZGM1NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsg
fQorICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNl
VVJJID0gdm9pY2VVUkk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9u
YW1lID0gbmFtZTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYW5nOyB9CisgICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcg
PSBsYW5nOyB9CisKICAgICBib29sIGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YWxTZXJ2aWNlOyB9CisgICAgdm9pZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2Up
IHsgbV9sb2NhbFNlcnZpY2UgPSBsb2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0
KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1
bHQoYm9vbCBpc0RlZmF1bHQpIHsgbV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6
CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7
CiAKICAgICBTdHJpbmcgbV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApp
bmRleCA2NjEyM2Q1YWYxMWNhYmIwZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5mOThlMTQyY2Rh
MzQzNDcxNzY1NzRlMTdlYjI3MmIxNGRiNzQyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzIsMTUgKzMy
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgc3ludGhlc2l6ZXItPmluaXRpYWxpemVW
b2ljZUxpc3QoKTsKKyAgICByZXR1cm4gc3ludGhlc2l6ZXIucmVsZWFzZSgpOwogfQogCi1QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQoY2xpZW50KQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2lj
ZXMpCiB7Ci0gICAgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIG1fdm9pY2VMaXN0ID0gdm9p
Y2VzOwogfQotICAgIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2
YTQ2YzI5ZjI5N2RiYzAwZjYuLmYwZDY4OTNhMjFjNTY4M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFj
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBACiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBTcGVlY2hCb3VuZGFyeSB7CkBAIC00OCwxMiArNTUsMTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dW1lU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3Bl
ZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91
bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNE
aWRDaGFuZ2UoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCgpIHsgfQpAQCAtNjMsMjcgKzcwLDMzIEBAIGNsYXNzIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkgeyB9Cisg
ICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwogICAgIAogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0
KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWso
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNs
aWVudDsgfQotICAgIAorCisgICAgdm9pZCBzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7CisKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAg
ICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9zcGVl
Y2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcj4g
bV93ZWJTcGVlY2hTeW50aGVzaXplcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudD4gbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsKKyNlbmRpZgogfTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzlkNzIwZWI4YzZmZDllZWNiMzgzZDJhNTAx
MjYyN2ZjODg3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50
aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwodGhpcywgY2xp
ZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudC5nZXQoKSkpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNo
U3ludGhlc2l6ZXIuZ2V0KCkpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0
ZVZvaWNlTGlzdCgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkK
K3sKKyAgICBpZiAoIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6
ZXItPnNwZWFrKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkp
OworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBp
ZiAobV93ZWJTcGVlY2hTeW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50
aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpy
ZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAg
ICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNp
emVyLmdldCgpKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5jYW5jZWwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5MmU0Yzc1YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisjaW5j
bHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDogbV9wcml2YXRlKHV0dGVy
YW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9IHV0dGVyYW5jZTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjph
c3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKK3sKKyAgICBt
X3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7Cit9CisKK1dlYlN0cmlu
ZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvaWNlKCkg
PyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDogV2ViU3RyaW5nKCk7Cit9
CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5y
YXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2goKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9CisKK2RvdWJsZSBXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3Yzg0Nzk0ZTAyMjk3NjJh
NDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3Ro
ZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKGNvbnN0IFdlYlN0
cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRWb2ljZVVSSSh2b2ljZVVSSSk7
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1lKTsKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJiBsYW5n
dWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2UpOworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShib29sIGlzTG9jYWxTZXJ2
aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlzTG9jYWxTZXJ2aWNlKTsK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KGJvb2wgaXNE
ZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlzRGVmYXVsdCk7Cit9CisK
K1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1YjQyZmQyNzkyZDI1ZTU2NGRiNzEwNmNiZjRi
NmUyNmM2MjhhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAKQEAgLTAs
MCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3N5bnRoZXNpemVyKHN5bnRoZXNpemVyKQor
ICAgICwgbV9jbGllbnQoY2xpZW50KQoreworfQorCitXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwoKQoreworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6
V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpCit7Cisj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG91dFZvaWNlczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZvaWNlcy5zaXplKCk7IGkrKykKKyAgICAgICAgb3V0Vm9pY2VzLmFwcGVuZChQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KHZvaWNlc1tpXSkpOworICAgIG1fc3lu
dGhlc2l6ZXItPnNldFZvaWNlTGlzdChvdXRWb2ljZXMpOworICAgIG1fY2xpZW50LT52b2ljZXNE
aWRDaGFuZ2UoKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbDo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAg
IG1fY2xpZW50LT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9p
ZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OmRpZEZpbmlzaFNwZWFraW5nKGNvbnN0
IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYg
RU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZEZpbmlzaFNwZWFraW5n
KHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dEltcGw6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAg
ICBtX2NsaWVudC0+ZGlkUGF1c2VTcGVha2luZyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3Zv
aWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRSZXN1bWVTcGVha2luZyhjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRSZXN1bWVTcGVha2lu
Zyh1dHRlcmFuY2UpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKyAgICBtX2NsaWVudC0+c3BlYWtpbmdFcnJvck9jY3VycmVkKHV0dGVyYW5jZSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OndvcmRCb3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
IHV0dGVyYW5jZSwgdW5zaWduZWQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJhbmNlLCBT
cGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OnNlbnRlbmNlQm91bmRhcnlFdmVudE9jY3VycmVkKGNv
bnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UsIHVuc2ln
bmVkIGNoYXJJbmRleCkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2Ns
aWVudC0+Ym91bmRhcnlFdmVudE9jY3VycmVkKHV0dGVyYW5jZSwgU3BlZWNoU2VudGVuY2VCb3Vu
ZGFyeSwgY2hhckluZGV4KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wM2I5ZWE0N2U2MmY4OTk2ZTBlYzhjNzczZTBjZGYzYTRlZDUzMDI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXplckNsaWVudEltcGwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGxfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ci5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudDsKKworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsIDogcHVi
bGljIFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgeworcHVibGljOgorICAgIGV4
cGxpY2l0IFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbChQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyKiwgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOworICAgIHZpcnR1YWwg
fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCgpOworCisgICAgdmlydHVhbCB2b2lkIHNl
dFZvaWNlTGlzdChjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiYgdm9pY2VzKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhj
b25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
c3VtZVNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7
CisgICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiwgdW5zaWduZWQgY2hhckluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VudGVuY2VCb3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Um
LCB1bnNpZ25lZCBjaGFySW5kZXgpOworCitwcml2YXRlOgorI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXI7Cisg
ICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9jbGllbnQ7CisjZW5kaWYKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IDcwOTRmYTM1MzgyMmU4
NzQ1ZTQ2ZTM0ZGRiZjM3Yzc0YjBlYTUxNTUuLjM1OWE0MDZjMjc3N2VkNTYyMmZkMWNmMjdhYjUw
M2VjYzU4N2Q1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVkZSA8QXBwS2l0L05TU3BlZWNo
U3ludGhlc2l6ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpAQCAtMzcsMTQg
KzM4LDE0IEBACiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciogbV9z
eW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEgUmVmIHRvIHRoZSB1dHRlcmFuY2Ugc28g
dGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhlIHN5bnRoIGlzIGRvbmUgd2l0aCBpdC4K
LSAgICBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91
dHRlcmFuY2U7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uq
IG1fdXR0ZXJhbmNlOwogICAgIAogICAgIFJldGFpblB0cjxOU1NwZWVjaFN5bnRoZXNpemVyPiBt
X3N5bnRoZXNpemVyOwogICAgIGZsb2F0IG1fYmFzZVBpdGNoOwogfQogCiAtIChXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyICopaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjooV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplciAqKXN5bnRoZXNpemVyOwotLSAodm9pZClzcGVha1V0dGVy
YW5jZTooY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1
dHRlcmFuY2U7CistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZTsKIAogQGVuZAogCkBAIC04MSw3ICs4Miw3
IEBACiAgICAgbV9iYXNlUGl0Y2ggPSBbW21fc3ludGhlc2l6ZXIgb2JqZWN0Rm9yUHJvcGVydHk6
TlNTcGVlY2hQaXRjaEJhc2VQcm9wZXJ0eSBlcnJvcjpuaWxdIGZsb2F0VmFsdWVdOwogfQogCi0t
ICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZQorLSAodm9pZClzcGVha1V0dGVyYW5jZTooV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgKil1dHRlcmFuY2UKIHsKICAgICAv
LyBXaGVuIHNwZWFrIGlzIGNhbGxlZCB3ZSBzaG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3Bl
ZWNoIHV0dGVyYW5jZSBvdXRzdGFuZGluZy4KICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKQEAg
LTE2NSw3ICsxNjYsNyBAQAogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwogICAgIAogICAgIC8v
IENsZWFyIHRoZSBtX3V0dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlzaCBzcGVha2luZyBr
aWNrcyBvZmYgYSBuZXcgc3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5LgotICAgIGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UgPSBtX3V0dGVy
YW5jZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0
ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFuY2UgPSAwOwogICAgIAogICAgIGlm
IChmaW5pc2hlZFNwZWFraW5nKQpAQCAtMTg4LDYgKzE4OSwxNSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9z
cGVlY2hTeW50aGVzaXplckNsaWVudChjbGllbnQpCit7Cit9CisKK1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkKK3sKK30KKwogdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKIHsKICAgICBOU1N0
cmluZyAqZGVmYXVsdFZvaWNlVVJJID0gW05TU3BlZWNoU3ludGhlc2l6ZXIgZGVmYXVsdFZvaWNl
XTsKQEAgLTIyMCwxMiArMjMwLDEyIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
cmVzdW1lKCkKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcmVzdW1lXTsKIH0K
ICAgICAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoY29uc3QgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIp
CiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmFkb3B0TlMoW1tXZWJTcGVlY2hTeW50
aGVzaXNXcmFwcGVyIGFsbG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKICAg
ICAKLSAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6JnV0
dGVyYW5jZV07CisgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHNwZWFrVXR0ZXJh
bmNlOnV0dGVyYW5jZS5nZXQoKV07CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKaW5kZXggMWM2NzE4MjIyNzIy
YzFiYWVjN2M0NzMzMzQ2MTM5YzA1ZTllODVkOS4uZTk0MTk1YWVhNGFhZDZkYzA4Y2QyZDkxYzUy
ZWEyZDdjNTBmYmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKQEAgLTMzLDEzICsz
MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpjcmVhdGUoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soY2xpZW50KSk7CisgICAgT3du
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBzeW50aGVzaXplciA9IGFkb3B0UHRy
KG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhjbGllbnQpKTsKKyAgICBzeW50aGVz
aXplci0+aW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIHJldHVybiBzeW50aGVzaXplci5yZWxl
YXNlKCk7CiB9CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xp
ZW50KQogICAgIDogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihjbGllbnQpCiAgICAgLCBtX3Nw
ZWFraW5nRmluaXNoZWRUaW1lcih0aGlzLCAmUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
OnNwZWFraW5nRmluaXNoZWQpCi0gICAgLCBtX3V0dGVyYW5jZSgwKQogewogfQogICAgIApAQCAt
NTAsNyArNTEsNyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6flBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrKCkKIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4q
KQogewotICAgIEFTU0VSVChtX3V0dGVyYW5jZSk7CisgICAgQVNTRVJUKG1fdXR0ZXJhbmNlLmdl
dCgpKTsKICAgICBjbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcobV91dHRlcmFuY2UpOwogICAg
IG1fdXR0ZXJhbmNlID0gMDsKIH0KQEAgLTYzLDEwICs2NCwxMCBAQCB2b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICBtX3ZvaWNlTGlz
dC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9j
ay52b2ljZS5sb2dhbiIpLCBTdHJpbmcoImxvZ2FuIiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwg
dHJ1ZSkpOwogfQogCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayhj
b25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQordm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIEFTU0VSVCghbV91dHRl
cmFuY2UpOwotICAgIG1fdXR0ZXJhbmNlID0gJnV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5jZSA9
IHV0dGVyYW5jZTsKICAgICBjbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7
CiAgICAgCiAgICAgLy8gRmlyZSBhIGZha2Ugd29yZCBhbmQgdGhlbiBzZW50ZW5jZSBib3VuZGFy
eSBldmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaAppbmRleCBmMTNiMGUyYzA1ZWI2ZjBlZWFj
YTFkMzMwMDVhODRjNTk0ZGZjNmNiLi5iYjdiNGVmOWZhMWUyNTQxYzEzNDE0MzlkNTgwZDVmNTg1
MzBiY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0zOSw3ICszOSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4g
Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKICAgICAKICAgICB2aXJ0
dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpOwotICAgIHZpcnR1YWwgdm9pZCBz
cGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpOworICAgIHZpcnR1
YWwgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Pik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNwZWFraW5nRmluaXNoZWQoVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s+Kik7CiAgICAgCiAgICAgVGltZXI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+
IG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyOwotICAgIGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKKyAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194331</attachid>
            <date>2013-03-21 14:05:50 -0700</date>
            <delta_ts>2013-03-22 15:51:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130321140138.patch</filename>
            <type>text/plain</type>
            <size>71294</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhMDY3MGNjOWFiMmYx
YmI4ZmE2MzM5NGQ2NWZhMjdmOGFhODM1Y2MxLi5lZDgxZmVmMWNiYmVmOTMzOTMzMTdjZmQwNzYz
OWM2ZTE3NjU1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0yMCAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEV4cG9zZXMgYSBwbGF0Zm9ybSBBUEkgdGhhdCB0aGUg
ZW1iZWRkZXIgY2FuIGltcGxlbWVudCB0bworICAgICAgICBwcm92aWRlIHNwZWVjaCBzeW50aGVz
aXMgZm9yIHRoZSBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6fldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjppc051
bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Ojp+V2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorCiAyMDEzLTAzLTIwICBIYXJhbGQgQWx2ZXN0cmFuZCAg
PGh0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBMb2NhbC9SZW1vdGUgYW5kIFJUQ1N0
YXRzRWxlbWVudCBmcm9tIFdlYlJUQ1N0YXRzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxMWNiN2VkNjBk
MThmMGRlNzBkYTExMzhjMzJmNTY3YTZlN2RlYzAuLjQyZjE1Y2ZmOWNhMjg2NjQ1MjNlMTk0MTVi
NTJhYTFjMmQ0ZTM0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTMtMDMtMjAg
IERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVt
ZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZvciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNjk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBTdHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24g
b2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAgICBmb3IgQ2hyb21pdW0gYnkgZXhwb3NpbmcgaW50
ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgIHRvIGltcGxlbWVudC4KKworICAgICAg
ICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpT
cGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaDoKKyAgICAgICAg
KFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oOgorICAgICAgICAoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpsYW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9p
Y2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAg
IChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9t
aXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJh
dG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldExhbmd1YWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJT
cGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRh
cnlFdmVudE9jY3VycmVkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFr
VXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrKToKKwogMjAxMy0wMy0yMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBbGxvdyBwb3J0cyBzcGVjaWZpYyB0ZXh0IHRyYWNrIG1lbnUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKaW5kZXggOGY3MDgwZTBiMGNkYjVjM2M1ZWQ5YmU2ZmQ4ZWI2MGM2NGQw
MTQ5MS4uNGU4MzkzZGQxYWVhYThiNzU5M2EzNzMwMmYyZTI2NTk2MjVmOTY4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKQEAgLTEyOSw2ICsxMjksMTAgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU3RyaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9QbGF0Zm9ybS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9y
bS5oCmluZGV4IGYyYTkxMTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUuLjgwNmNj
NjA4MjUzMDFjMTVlOTcxMjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJX
ZWJHYW1lcGFkcy5oIgogI2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiV2ViTG9jYWxpemVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAt
NjksNiArNzAsOCBAQCBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9y
dDsKIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNp
emVyOworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJTdG9yYWdl
TmFtZXNwYWNlOwogY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhlbWVFbmdp
bmU7CkBAIC0xMTUsNiArMTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1u
dWxsLgogICAgIHZpcnR1YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIE1heSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaFN5bnRo
ZXNpemVyKiBjcmVhdGVTcGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0
ZGRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dO
RVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRl
ICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citw
dWJsaWM6CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYg
b3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoKSB7IHJlc2V0KCk7IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBhc3NpZ24ob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGxhbmcoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0
OworCisgICAgLy8gQXMgZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gt
YXBpL3Jhdy1maWxlL3RpcC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
dm9sdW1lKCkgY29uc3Q7IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JU
IGZsb2F0IHJhdGUoKSBjb25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgcGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisg
ICAgV0VCS0lUX0VYUE9SVCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMu
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoY29uc3QgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mKTsKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9y
IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UqKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3
NzZlYzgyY2E2NDI0NmFmYTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5l
IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1
YmxpYzoKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3Np
Z24ob3RoZXIpOyB9CisgICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9
CisKKyAgICBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNz
aWduKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHJlc2V0KCk7CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3Qg
V2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmlu
ZyYpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAg
ICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1f
cHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0
OTU4Nzk1MjZkYjAyMzMyNmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJT
cGVlY2hTeW50aGVzaXplcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxs
IHdpdGggbW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFj
YWJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgi
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFy
dFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoU3BlYWtpbmcoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9j
Y3VycmVkKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJ
bmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgp
ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNo
L1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggYzRkZmY0ZTQ5NzBlZjZkNzg0OWI3NGM2ZTllNjk4
ZmM5YjI5OThmNy4uMzQyZDc3MzRkMDJlNmMxY2E4ZTc2MzhjZTYwMWEwMTg1M2U2NThmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3Bw
CkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIu
aCIKICNpbmNsdWRlICJTcGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRl
ZChTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9p
ZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1
dHRlcmFuY2UsIFNwZWVjaEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmlu
ZywgKEFTQ0lJTGl0ZXJhbCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIHNlbnRlbmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNl
IikpKTsKQEAgLTE2OSwzMyArMTY5LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFy
eUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAg
fQogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3Rh
cnRFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkK
KyAgICAgICAgZmlyZUV2ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5n
KCkpOwogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpkaWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsK
LSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7
CisgICAgaWYgKHV0dGVyYW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5h
bWVzKCkucGF1c2VFdmVudCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4o
dXR0ZXJhbmNlLT5jbGllbnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50
aGVzaXM6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKiB1dHRlcmFuY2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewogICAgIG1faXNQYXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygp
LnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRl
cmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVu
dCgpKQorICAgICAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNf
Y2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwg
U3RyaW5nKCkpOwogfQogCi12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmco
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQg
U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIGZhbHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAg
ICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3Bl
ZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gdXR0ZXJhbmNlKQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19j
YXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVl
KTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdD
b21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNl
LT5jbGllbnQoKSksIHRydWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRi
NmM0ZmU3NmU4MGZmM2M1MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4
YWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVz
aXMuaApAQCAtNjUsMTIgKzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9p
ZCB2b2ljZXNEaWRDaGFuZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRT
cGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFr
aW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3Qg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWdu
ZWQgY2hhckluZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2lu
ZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
LCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZv
aWQgc3RhcnRTcGVha2luZ0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwog
ICAgIHZvaWQgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KiwgYm9vbCBlcnJvck9jY3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0
MTJlNmE1Y2FjZDY5MDViN2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgw
OTBmNDVkNWM2YjNlMDdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQg
QEAgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6Y3JlYXRlKFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29u
dGV4dCkKLSAgICAsIG1fcGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UodGhpcykpCisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVy
YW5jZS5zZXRUZXh0KHRleHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4
dCk7Cit9CisKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSgpCit7CisgICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAg
IAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkK
ICAgICBtX3ZvaWNlID0gdm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAg
ICBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0
YTQzNDMwNWRkZjJlNmE5NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVh
Mjk5ODdiNzdhODE1NjRhZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBA
IGNsYXNzIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQor
ICAgIH5TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9p
ZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExh
bmcobGFuZyk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxh
bmcoKTsgfQorICAgIHZvaWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9y
bVV0dGVyYW5jZS0+c2V0TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2Uq
IHZvaWNlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSop
OwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5j
ZS52b2x1bWUoKTsgfQotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRm
b3JtVXR0ZXJhbmNlLnNldFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNl
dFZvbHVtZShmbG9hdCB2b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZv
bHVtZSk7IH0KIAotICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0
ZXJhbmNlLnJhdGUoKTsgfQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxv
YXQgcmF0ZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBm
bG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsg
fQotICAgIHZvaWQgc2V0UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5z
ZXRQaXRjaChwaXRjaCk7IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNo
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91Ymxl
IHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1l
KCk7IH0KLSAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZv
cm1VdHRlcmFuY2Uuc2V0U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0K
KyAgICB2b2lkIHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRl
cmFuY2UtPnNldFN0YXJ0VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihlbmQpOwpAQCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0
ZXJhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRl
cmFuY2U7CisgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3Bs
YXRmb3JtVXR0ZXJhbmNlOwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2lj
ZTsKICAgICAKICAgICAvLyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBk
NjJlMTVlNWMyZGJmYzcwMTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0
ODk3N2QwM2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU3BlZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVl
Y2hTeW50aGVzaXNWb2ljZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNp
c1ZvaWNlKCkgeyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+
IGNyZWF0ZShQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZv
aWNlLT52b2ljZVVSSSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUzMDNhMWFmYTVjN2M3
ODVkNGY0YzE3OTk0ZDIzNWMwZGVhNGMxNTcuLjc0MDNjZGQ0ZjdiZDY0YTNkMDA0ZmEzZWE4MGQ1
NDRiODI2ZjdiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTY2LDYgKzE1NjYsNyBAQCBf
X1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRW
TjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVBOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA0ZWY1ZGE3MDllYWQ5MmE2Y2RmZjVjOTViN2Y5ODg3MGE2MjlmNWFmLi5i
YmQwZjg4ZTc0ZDhhMDc4OTdmMTdlMTAyNThjMjdhYzdjOGI3ZTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC05OTMsNyArOTkzLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVm9pY2UuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hT
eW50aGVzaXNWb2ljZS5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9T
cGVlY2hTeW50aGVzaXNDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTgsNiArMzY5Nywx
MiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgnLApAQCAtMzg3MCw2ICszODc1LDcgQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVs
dC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJv
bWl1bURlZmF1bHQuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hy
b21pdW0vUGxhdGZvcm1XaWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBDb250YWluZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1
cENvbnRhaW5lci5oJywKQEAgLTUyOTAsOCArNTI5Niw2IEBACiAgICAgICAgICd3ZWJjb3JlX3Rl
c3Rfc3VwcG9ydF9maWxlcyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJD
b3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwJywKQEAgLTc0NDEsNiArNzQ0NSwxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhcklt
cGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5
N2ZhNTFkNTFmMzEyNzE2ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0
MWFkYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQogCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIApAQCAtNDYsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzKFNwZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBt
X3NwZWVjaFN5bnRoc2lzOworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3Bw
CmluZGV4IDI1NGU5MmYwYjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZk
NzZkZjBlNWNlMzAwY2ZhOWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5j
cHAKQEAgLTI5LDYgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9
CiAgICAgCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQq
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4
IDQ0ZTYxNDI4YjIzNjFlYzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZm
YTYyOGMxMWNlMjM2NjEwZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjks
NiArMjksOCBAQAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7
IH0KIH07CiAgICAgCi1jbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7Citj
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2VDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlQ2xpZW50Kik7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3Rl
eHQgPSB0ZXh0OyB9CkBAIC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFy
dFRpbWUoZG91YmxlIHN0YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAg
IAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAg
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBT
dHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgy
ZWVmMmUzZmE2NDg3MjM0ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4
NWYzMTc5M2FhOGEzOTU3NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwx
MSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxT
ZXJ2aWNlLCBpc0RlZmF1bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30K
ICAgICAKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6
IG1fdm9pY2VVUkkodm9pY2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYg
dm9pY2VVUgogewogfQogCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwg
bV9kZWZhdWx0KGZhbHNlKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIy
ZDJmM2JkMGVlNjRlMDQ3NzlmNDNhNjY5NTQxMDM5Li5mNjE3N2VhMmE0MTBkYTE4NDA4Yzg3Njk4
MjhhNzcyNmE3ZGM1NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGxhbmcsIGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisK
ICAgICBjb25zdCBTdHJpbmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsg
fQorICAgIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNl
VVJJID0gdm9pY2VVUkk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQorICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9u
YW1lID0gbmFtZTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4g
bV9sYW5nOyB9CisgICAgdm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcg
PSBsYW5nOyB9CisKICAgICBib29sIGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9j
YWxTZXJ2aWNlOyB9CisgICAgdm9pZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2Up
IHsgbV9sb2NhbFNlcnZpY2UgPSBsb2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0
KCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1
bHQoYm9vbCBpc0RlZmF1bHQpIHsgbV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6
CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJ
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZp
Y2UsIGJvb2wgaXNEZWZhdWx0KTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7
CiAKICAgICBTdHJpbmcgbV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApp
bmRleCA2NjEyM2Q1YWYxMWNhYmIwZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5mOThlMTQyY2Rh
MzQzNDcxNzY1NzRlMTdlYjI3MmIxNGRiNzQyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzIsMTUgKzMy
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcj4gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgc3ludGhlc2l6ZXItPmluaXRpYWxpemVW
b2ljZUxpc3QoKTsKKyAgICByZXR1cm4gc3ludGhlc2l6ZXIucmVsZWFzZSgpOwogfQogCi1QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQoY2xpZW50KQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2lj
ZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2lj
ZXMpCiB7Ci0gICAgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIG1fdm9pY2VMaXN0ID0gdm9p
Y2VzOwogfQotICAgIAorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2
YTQ2YzI5ZjI5N2RiYzAwZjYuLmYwZDY4OTNhMjFjNTY4M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFj
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyLmgKQEAgLTM3LDYgKzM3LDEzIEBACiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXI7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51
bSBTcGVlY2hCb3VuZGFyeSB7CkBAIC00OCwxMiArNTUsMTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
dW1lU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlF
dmVudE9jY3VycmVkKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3Bl
ZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWtpbmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJl
ZChQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91
bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNE
aWRDaGFuZ2UoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCgpIHsgfQpAQCAtNjMsMjcgKzcwLDMzIEBAIGNsYXNzIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50Kik7CiAKLSAgICB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkgeyB9Cisg
ICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwogICAgIAogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0
KCkgY29uc3QgeyByZXR1cm4gbV92b2ljZUxpc3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWso
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNs
aWVudDsgfQotICAgIAorCisgICAgdm9pZCBzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+Jik7CisKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIFZlY3Rv
cjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAg
ICAKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9zcGVl
Y2hTeW50aGVzaXplckNsaWVudDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlz
dCgpOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcj4g
bV93ZWJTcGVlY2hTeW50aGVzaXplcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudD4gbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsKKyNlbmRpZgogfTsK
ICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2hyb21pdW0uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNzlkNzIwZWI4YzZmZDllZWNiMzgzZDJhNTAx
MjYyN2ZjODg3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplci5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50
aGVzaXplckNsaWVudChjbGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCA9IGFkb3B0UHRyKG5ldyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwodGhpcywgY2xp
ZW50KSk7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdlYktpdDo6UGxh
dGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudC5nZXQoKSkpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNo
U3ludGhlc2l6ZXIuZ2V0KCkpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0
ZVZvaWNlTGlzdCgpOworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkK
K3sKKyAgICBpZiAoIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhl
c2l6ZXJDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6
ZXItPnNwZWFrKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkp
OworfQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBp
ZiAobV93ZWJTcGVlY2hTeW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50
aGVzaXplci0+cGF1c2UoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpy
ZXN1bWUoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAg
ICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5yZXN1bWUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNp
emVyLmdldCgpKQorICAgICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5jYW5jZWwoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzBmOTJmNjg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5MmU0Yzc1YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisjaW5j
bHVkZSA8cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorCisjaW5jbHVkZSAi
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDogbV9wcml2YXRlKHV0dGVy
YW5jZSkKK3sKK30KKworV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSogdXR0ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9IHV0dGVyYW5jZTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjph
c3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKK3sKKyAgICBt
X3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0
KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LmdldCgpOworfQorCitXZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7Cit9CisKK1dlYlN0cmlu
ZyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX3ByaXZhdGUtPmxhbmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6dm9pY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvaWNlKCkg
PyBXZWJTdHJpbmcobV9wcml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDogV2ViU3RyaW5nKCk7Cit9
CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT52b2x1bWUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5y
YXRlKCk7Cit9CisKK2Zsb2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2goKSBj
b25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9CisKK2RvdWJsZSBXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+c3RhcnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3Yzg0Nzk0ZTAyMjk3NjJh
NDIxMzM2ZjQ3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMCwwICsxLDgw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIE9XTkVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25BbHRl
cm5hdGl2ZS5oIgorI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU3BlZWNo
U3ludGhlc2lzVm9pY2U6OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3Ro
ZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9
CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKGNvbnN0IFdlYlN0
cmluZyYgdm9pY2VVUkkpCit7CisgICAgbV9wcml2YXRlLT5zZXRWb2ljZVVSSSh2b2ljZVVSSSk7
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1lKTsKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJiBsYW5n
dWFnZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2UpOworfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShib29sIGlzTG9jYWxTZXJ2
aWNlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlzTG9jYWxTZXJ2aWNlKTsK
K30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KGJvb2wgaXNE
ZWZhdWx0KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlzRGVmYXVsdCk7Cit9CisK
K1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2
YXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXpl
ckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NzhjNjliN2VjNDc0NWRmZDRlOGJjNzMwNjRk
MmFlOWM2MWNjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAKQEAgLTAs
MCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50KiBjbGllbnQpCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAg
OiBtX3N5bnRoZXNpemVyKHN5bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorI2Vu
ZGlmCit7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6fldlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50SW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnRJbXBsOjpzZXRWb2ljZUxpc3QoY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpX
ZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mIHZvaWNlcykKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZ
TlRIRVNJUykKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+
ID4gb3V0Vm9pY2VzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdm9pY2VzLnNpemUoKTsg
aSsrKQorICAgICAgICBvdXRWb2ljZXMuYXBwZW5kKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZT4odm9pY2VzW2ldKSk7CisgICAgbV9zeW50aGVzaXplci0+c2V0Vm9pY2VM
aXN0KG91dFZvaWNlcyk7CisgICAgbV9jbGllbnQtPnZvaWNlc0RpZENoYW5nZSgpOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFr
aW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2Up
Cit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFN0YXJ0
U3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNoU3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRp
ZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUGF1c2VTcGVh
a2luZyhjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNl
KQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRQYXVz
ZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudEltcGw6OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFJlc3VtZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJy
b3JPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0
ZXJhbmNlKQoreworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5z
cGVha2luZ0Vycm9yT2NjdXJyZWQodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6d29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlLCB1bnNpZ25l
ZCBjaGFySW5kZXgpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGll
bnQtPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZCh1dHRlcmFuY2UsIFNwZWVjaFdvcmRCb3VuZGFyeSwg
Y2hhckluZGV4KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbDo6c2VudGVuY2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmIHV0dGVyYW5jZSwgdW5zaWduZWQgY2hhckluZGV4KQorewor
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50
T2NjdXJyZWQodXR0ZXJhbmNlLCBTcGVlY2hTZW50ZW5jZUJvdW5kYXJ5LCBjaGFySW5kZXgpOwor
I2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzYjllYTQ3ZTYyZjg5OTZl
MGVjOGM3NzNlMGNkZjNhNGVkNTMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1w
bC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9o
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJT
cGVlY2hTeW50aGVzaXNWb2ljZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI7CitjbGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworCitjbGFz
cyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqLCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9pY2VMaXN0KGNvbnN0IFdl
YktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFr
aW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3Qg
V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3BlYWtpbmdFcnJvck9jY3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29u
c3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5k
ZXgpOworICAgIHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJbmRl
eCk7CisKK3ByaXZhdGU6CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplciogbV9zeW50aGVzaXplcjsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50KiBtX2NsaWVudDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNYWMubW0KaW5kZXggNzA5NGZhMzUzODIyZTg3NDVlNDZlMzRkZGJmMzdjNzRi
MGVhNTE1NS4uMzU5YTQwNmMyNzc3ZWQ1NjIyZmQxY2YyN2FiNTAzZWNjNTg3ZDUxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNYWMubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2UuaCIKICNpbmNsdWRlIDxBcHBLaXQvTlNTcGVlY2hTeW50aGVzaXplci5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAj
aWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCkBAIC0zNywxNCArMzgsMTQgQEAKIHsKICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNpemVyT2JqZWN0Owog
ICAgIC8vIEhvbGQgYSBSZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0aGF0IGl0IHdvbid0IGRpc2Fw
cGVhciB1bnRpbCB0aGUgc3ludGggaXMgZG9uZSB3aXRoIGl0LgotICAgIGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7CiAgICAg
CiAgICAgUmV0YWluUHRyPE5TU3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7CiAgICAg
ZmxvYXQgbV9iYXNlUGl0Y2g7CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgKilp
bml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyICopc3ludGhlc2l6ZXI7Ci0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihjb25zdCBXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZTsKKy0gKHZvaWQp
c3BlYWtVdHRlcmFuY2U6KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
ICopdXR0ZXJhbmNlOwogCiBAZW5kCiAKQEAgLTgxLDcgKzgyLDcgQEAKICAgICBtX2Jhc2VQaXRj
aCA9IFtbbV9zeW50aGVzaXplciBvYmplY3RGb3JQcm9wZXJ0eTpOU1NwZWVjaFBpdGNoQmFzZVBy
b3BlcnR5IGVycm9yOm5pbF0gZmxvYXRWYWx1ZV07CiB9CiAKLS0gKHZvaWQpc3BlYWtVdHRlcmFu
Y2U6KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICopdXR0
ZXJhbmNlCistICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZQogewogICAgIC8vIFdoZW4gc3BlYWsgaXMgY2Fs
bGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlzdGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91dHN0
YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwpAQCAtMTY1LDcgKzE2Niw3IEBACiAg
ICAgVU5VU0VEX1BBUkFNKHNlbmRlcik7CiAgICAgCiAgICAgLy8gQ2xlYXIgdGhlIG1fdXR0ZXJh
bmNlIHZhcmlhYmxlIGluIGNhc2UgZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5ldyBzcGVh
a2luZyBqb2IgaW1tZWRpYXRlbHkuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UgPSBtX3V0dGVyYW5j
ZTsKICAgICBtX3V0dGVyYW5jZSA9IDA7CiAgICAgCiAgICAgaWYgKGZpbmlzaGVkU3BlYWtpbmcp
CkBAIC0xODgsNiArMTg5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50KGNsaWVudCkKK3sKK30KKworUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoKQoreworfQorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewogICAgIE5TU3RyaW5nICpkZWZhdWx0Vm9pY2VV
UkkgPSBbTlNTcGVlY2hTeW50aGVzaXplciBkZWZhdWx0Vm9pY2VdOwpAQCAtMjIwLDEyICsyMzAs
MTIgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogICAgIFttX3Bs
YXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQogICAgIAotdm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSYgdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVh
ayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2Up
CiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9wbGF0Zm9y
bVNwZWVjaFdyYXBwZXIuYWRvcHROUyhbW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgYWxsb2Nd
IGluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6dGhpc10pOwogICAgIAotICAgIFttX3BsYXRmb3Jt
U3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTomdXR0ZXJhbmNlXTsKKyAgICBbbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgp
XTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCAxYzY3MTgyMjI3MjJjMWJhZWM3YzQ3MzMzNDYxMzlj
MDVlOWU4NWQ5Li5lOTQxOTVhZWE0YWFkNmRjMDhjZDJkOTFjNTJlYTJkN2M1MGZiZmMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAtMzMsMTMgKzMzLDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jayhjbGllbnQpKTsKKyAgICBPd25QdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrKGNsaWVudCkpOworICAgIHN5bnRoZXNpemVyLT5pbml0aWFsaXplVm9p
Y2VMaXN0KCk7CisgICAgcmV0dXJuIHN5bnRoZXNpemVyLnJlbGVhc2UoKTsKIH0KICAgICAKIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ayhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKGNsaWVudCkKICAgICAsIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVy
KHRoaXMsICZQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCkK
LSAgICAsIG1fdXR0ZXJhbmNlKDApCiB7CiB9CiAgICAgCkBAIC01MCw3ICs1MSw3IEBAIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2so
KQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVk
KFRpbWVyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiopCiB7Ci0gICAgQVNTRVJUKG1f
dXR0ZXJhbmNlKTsKKyAgICBBU1NFUlQobV91dHRlcmFuY2UuZ2V0KCkpOwogICAgIGNsaWVudCgp
LT5kaWRGaW5pc2hTcGVha2luZyhtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSAwOwog
fQpAQCAtNjMsMTAgKzY0LDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmxvZ2FuIiksIFN0
cmluZygibG9nYW4iKSwgU3RyaW5nKCJmci1DQSIpLCB0cnVlLCB0cnVlKSk7CiB9CiAKLXZvaWQg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7Ci0gICAgbV91dHRl
cmFuY2UgPSAmdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwogICAgIGNs
aWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKICAgICAKICAgICAvLyBGaXJl
IGEgZmFrZSB3b3JkIGFuZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oCmluZGV4IGYxM2IwZTJjMDVlYjZmMGVlYWNhMWQzMzAwNWE4NGM1OTRkZmM2
Y2IuLmJiN2I0ZWY5ZmExZTI1NDFjMTM0MTQzOWQ1ODBkNWY1ODUzMGJjZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBjcmVhdGUoUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplckNsaWVudCopOwogICAgIAogICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0dWFsIHZv
aWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpOwpAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3BlYWtpbmdG
aW5pc2hlZChUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKTsKICAgICAKICAg
ICBUaW1lcjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gbV9zcGVha2luZ0ZpbmlzaGVk
VGltZXI7Ci0gICAgY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0
ZXJhbmNlOworICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV91
dHRlcmFuY2U7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194647</attachid>
            <date>2013-03-22 15:51:48 -0700</date>
            <delta_ts>2013-03-23 21:51:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111695-20130322154735.patch</filename>
            <type>text/plain</type>
            <size>71279</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3OTI2ODI5YTBkYzNh
NmI3Y2IyNWE4ODE1ZjgyNmM5OWVhZDNhZDMzLi5mMTQzZDZjZWRkNTM5NjQxYTQyNjIzOWIwN2Iw
ZDYzMTI0ZDkzYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMy0wMy0yMiAg
RG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgV2ViIFNwZWVjaCBTeW50aGVzaXMgZm9yIENocm9taXVtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE2OTUKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEV4cG9zZXMgYSBwbGF0Zm9ybSBBUEkgdGhhdCB0aGUg
ZW1iZWRkZXIgY2FuIGltcGxlbWVudCB0bworICAgICAgICBwcm92aWRlIHNwZWVjaCBzeW50aGVz
aXMgZm9yIHRoZSBDaHJvbWl1bSBwb3J0LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpzcGVlY2hTeW50
aGVzaXplcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6fldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0
b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjppc051
bGwpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6On5XZWJTcGVlY2hTeW50aGVzaXNWb2ljZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpvcGVyYXRvcj0pOgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyOjp+V2ViU3BlZWNoU3ludGhlc2l6ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Ojp+V2ViU3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorCiAyMDEzLTAzLTIxICBEYXZpZCBHcm9nYW4gIDxkZ3Jv
Z2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ2
NTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDg2MTMxOTU1NDA3ZGNiNjQ2ZTVkMTk2YmYzNDZlZTJiYmYzMzdj
MTIuLjcwN2QwOTZiOWU4M2E3ZGE1MjE2MGIxZmNmNjI5ZWU3NTg4YTdiZmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzggQEAKKzIwMTMtMDMtMjIgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFdlYiBTcGVlY2ggU3ludGhlc2lzIGZv
ciBDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTExNjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBT
dHJhaWdodGZvcndhcmQgaW1wbGVtZW50YXRpb24gb2Ygc3BlZWNoIHN5bnRoZXNpcworICAgICAg
ICBmb3IgQ2hyb21pdW0gYnkgZXhwb3NpbmcgaW50ZXJmYWNlcyBmb3IgdGhlIHBsYXRmb3JtCisg
ICAgICAgIHRvIGltcGxlbWVudC4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5
RXZlbnRPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmRpZFN0
YXJ0U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRQYXVz
ZVNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1l
U3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzOjpkaWRGaW5pc2hT
cGVha2luZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OnNwZWFraW5nRXJy
b3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXMuaDoKKyAgICAgICAgKFNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAg
ICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjp+U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0Vm9pY2UpOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAoU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZTo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjps
YW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6c2V0TGFu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVtZSk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFZvbHVtZSk6
CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnJhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzZXRSYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzZXRQaXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldFN0YXJ0VGltZSk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnBsYXRmb3JtVXR0ZXJhbmNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlZWNoU3ludGhlc2lzVm9pY2U6On5TcGVlY2hTeW50aGVzaXNWb2ljZSk6
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAgIChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpcyk6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oOgorICAgICAgICAo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnNldENsaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmg6CisgICAgICAgIChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OnNl
dFZvaWNlVVJJKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OnNldE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNW
b2ljZTo6c2V0TGFuZyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1ZvaWNlOjpzZXRMb2NhbFNlcnZpY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpOgorICAgICAgICAo
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlOjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yPSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6YXNzaWduKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOgorICAgICAgICAoV2ViS2l0OjpXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6Om9wZXJhdG9yIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZTo6dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6
bGFuZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9p
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnZvbHVt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cmF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OnN0YXJ0VGltZSk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNW
b2ljZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmFzc2lnbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlOjpyZXNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpzZXRWb2ljZVVSSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpzZXROYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lz
Vm9pY2U6OnNldExhbmd1YWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lz
Vm9pY2U6OnNldElzTG9jYWxTZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlZWNoU3lu
dGhlc2lzVm9pY2U6OnNldElzRGVmYXVsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVm9pY2U+KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6Oldl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTcGVl
Y2hTeW50aGVzaXplckNsaWVudEltcGw6On5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRW
b2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsOjpkaWRTdGFydFNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRo
ZXNpemVyQ2xpZW50SW1wbDo6ZGlkRmluaXNoU3BlYWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRQYXVzZVNwZWFraW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUmVzdW1lU3Bl
YWtpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBs
OjpzcGVha2luZ0Vycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU3BlZWNoU3lu
dGhlc2l6ZXJDbGllbnRJbXBsOjp3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VCb3VuZGFy
eUV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtX
ZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOldlYkNvcmU6Ol0pOgorICAg
ICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZp
bmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcik6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6On5QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaDoKKyAg
ICAgICAgKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKToKKwogMjAxMy0wMy0yMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE0NjUzNCBhbmQgcjE0NjU2NS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkK
aW5kZXggOGY3MDgwZTBiMGNkYjVjM2M1ZWQ5YmU2ZmQ4ZWI2MGM2NGQwMTQ5MS4uNGU4MzkzZGQx
YWVhYThiNzU5M2EzNzMwMmYyZTI2NTk2MjVmOTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAg
LTEyOSw2ICsxMjksMTAgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0
U3RyZWFtSGFuZGxlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNv
bGlkQ29sb3JMYXllci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2l6ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJTdG9yYWdlQXJlYS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFn
ZU5hbWVzcGFjZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5o
IGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCmluZGV4IGYyYTkx
MTMzOTg2NzBlNmZmYTNhZmZjZTQ3YWJiMWY5NjcxNzJmZTUuLjgwNmNjNjA4MjUzMDFjMTVlOTcx
MjQ0NzgwZTZkYzliNzYwZDM3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1BsYXRmb3JtLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJHYW1lcGFkcy5oIgog
I2luY2x1ZGUgIldlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiV2ViTG9jYWxpemVk
U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6ZXIuaCIKICNpbmNsdWRlICJX
ZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIApAQCAtNjksNiArNzAsOCBAQCBj
bGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9ydDsKIGNsYXNzIFdlYlNv
Y2tldFN0cmVhbUhhbmRsZTsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyOworY2xhc3MgV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOwogY2xh
c3MgV2ViVW5pdFRlc3RTdXBwb3J0OwogY2xhc3MgV2ViVGhlbWVFbmdpbmU7CkBAIC0xMTUsNiAr
MTE4LDggQEAgcHVibGljOgogICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgogICAgIHZpcnR1
YWwgV2ViSHlwaGVuYXRvciogaHlwaGVuYXRvcigpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIE1h
eSByZXR1cm4gbnVsbC4KKyAgICB2aXJ0dWFsIFdlYlNwZWVjaFN5bnRoZXNpemVyKiBjcmVhdGVT
cGVlY2hTeW50aGVzaXplcihXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCopIHsgcmV0dXJuIDA7
IH0KIAogICAgIC8vIEF1ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ0MTk3ZjJkMmI5Y2QxNzU4YTg4MjNlMWJjZWZlZTQzMzM0ZGRkNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U7IH0KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7CitwdWJsaWM6CisgICAgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkgeyB9CisgICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpIHsgYXNzaWdu
KG90aGVyKTsgfQorICAgIH5XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoKSB7IHJlc2V0KCk7
IH0KKworICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3BlcmF0b3I9KGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgb3RoZXIpCisgICAgeworICAgICAgICBhc3NpZ24o
b3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQorCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
dGV4dCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGxhbmcoKSBjb25zdDsK
KyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2b2ljZSgpIGNvbnN0OworCisgICAgLy8gQXMg
ZGVmaW5lZCBpbjogaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9zcGVlY2gtYXBpL3Jhdy1maWxlL3Rp
cC9zcGVlY2hhcGkuaHRtbAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgdm9sdW1lKCkgY29uc3Q7
IC8vIDAuLi4xLCAxIGlzIGRlZmF1bHQKKyAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IHJhdGUoKSBj
b25zdDsgLy8gMC4xLi4uMTAsIDEgaXMgZGVmYXVsdAorICAgIFdFQktJVF9FWFBPUlQgZmxvYXQg
cGl0Y2goKSBjb25zdDsgLy8gMC4uLjIsIDEgaXMgZGVmYXVsdAorCisgICAgV0VCS0lUX0VYUE9S
VCBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3Q7IC8vIEluIHNlY29uZHMuCisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY29uc3QgUGFz
c1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mKTsKKyAg
ICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOworICAgIG9wZXJhdG9yIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KCkgY29uc3Q7CisgICAgb3Bl
cmF0b3IgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3ByaXZhdGU7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQ1YTE2MTNjMGFiN2M1MmE3NzZlYzgyY2E2NDI0NmFm
YTZhMmYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCisjZGVmaW5lIFdlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlByaXZh
dGVQdHIuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlIHsKK3B1YmxpYzoKKyAgICBXZWJT
cGVlY2hTeW50aGVzaXNWb2ljZSgpIHsgfQorICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNv
bnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Cisg
ICAgfldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyByZXNldCgpOyB9CisKKyAgICBXZWJTcGVl
Y2hTeW50aGVzaXNWb2ljZSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
JiBvdGhlcikKKyAgICB7CisgICAgICAgIGFzc2lnbihvdGhlcik7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNw
ZWVjaFN5bnRoZXNpc1ZvaWNlJik7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Vm9pY2VVUkkoY29uc3QgV2ViU3RyaW5nJik7Cisg
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5hbWUoY29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldExhbmd1YWdlKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRJc0xvY2FsU2VydmljZShib29sKTsKKyAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U+KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlUHRy
PFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fcHJpdmF0ZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2lzVm9p
Y2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXplci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVl
Y2hTeW50aGVzaXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMGY5NjVjNDE1Y2E0OTU4Nzk1MjZkYjAyMzMy
NmUxZjM2NTZkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAorI2RlZmluZSBXZWJTcGVlY2hTeW50aGVzaXpl
cl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworY2xhc3MgV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlOworCitjbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVWb2ljZUxpc3QoKSA9IDA7CisKKyAgICAvLyBPSyB0byBjYWxsIHdpdGggbW9yZSB0aGFu
IG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCisgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWwoKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaCBiL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMmI5ZTljZjc5ODYyMGQwYTg3NzMwZjE5MGUzOWYzY2VmYTFjYWJkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5
bnRoZXNpemVyQ2xpZW50X2gKKyNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRfaAor
CisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgiCisjaW5jbHVkZSAiV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIHNldFZvaWNlTGlzdChjb25zdCBXZWJWZWN0b3I8V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2U+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0
IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2VTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoU3BlYWtpbmcoY29u
c3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
cGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JkQm91bmRhcnlFdmVudE9jY3VycmVkKGNvbnN0IFdl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJbmRleCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgpID0gMDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
cy5jcHAKaW5kZXggMTFmYmMxMGQ3YzFlNWIzZjY2NmQ1YTA4NDgwYjNjMDhjY2EyMGFiYS4uYmYz
NTgyNzQwYTI4MmYzMTlhNDgwZjA1OGMyYjY0MzRlMzIxZDViOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC0yOCw4ICsyOCw4
IEBACiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIAotI2luY2x1ZGUgIlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCIKICNpbmNsdWRlICJT
cGVlY2hTeW50aGVzaXNFdmVudC5oIgogI2luY2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgU3BlZWNoU3ludGhlc2lzOjpoYW5kbGVTcGVha2luZ0NvbXBsZXRlZChTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UqIHV0dGVyYW5jCiAgICAgfQogfQogICAgIAotdm9pZCBTcGVlY2hTeW50aGVz
aXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSogdXR0ZXJhbmNlLCBTcGVlY2hCb3VuZGFyeSBib3VuZGFyeSwgdW5zaWduZWQgY2hh
ckluZGV4KQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UsIFNwZWVj
aEJvdW5kYXJ5IGJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHdvcmRCb3VuZGFyeVN0cmluZywgKEFTQ0lJTGl0ZXJh
bCgid29yZCIpKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHNlbnRl
bmNlQm91bmRhcnlTdHJpbmcsIChBU0NJSUxpdGVyYWwoInNlbnRlbmNlIikpKTsKQEAgLTE3Nywz
MyArMTc3LDM4IEBAIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpib3VuZGFyeUV2ZW50T2NjdXJyZWQo
Y29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuCiAgICAgfQogfQogCi12b2lkIFNw
ZWVjaFN5bnRoZXNpczo6ZGlkU3RhcnRTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogdXR0ZXJhbmNlKQordm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFN0YXJ0
U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0
ZXJhbmNlKQogewotICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkuc3RhcnRFdmVudCwgc3RhdGlj
X2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIDAs
IFN0cmluZygpKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgZmlyZUV2
ZW50KGV2ZW50TmFtZXMoKS5zdGFydEV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOwogfQogICAgIAot
dm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFBhdXNlU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpk
aWRQYXVzZVNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+IHV0dGVyYW5jZSkKIHsKICAgICBtX2lzUGF1c2VkID0gdHJ1ZTsKLSAgICBmaXJlRXZlbnQo
ZXZlbnROYW1lcygpLnBhdXNlRXZlbnQsIHN0YXRpY19jYXN0PFNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCAwLCBTdHJpbmcoKSk7CisgICAgaWYgKHV0dGVy
YW5jZS0+Y2xpZW50KCkpCisgICAgICAgIGZpcmVFdmVudChldmVudE5hbWVzKCkucGF1c2VFdmVu
dCwgc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGll
bnQoKSksIDAsIFN0cmluZygpKTsKIH0KIAotdm9pZCBTcGVlY2hTeW50aGVzaXM6OmRpZFJlc3Vt
ZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFu
Y2UpCit2b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQogewogICAgIG1faXNQ
YXVzZWQgPSBmYWxzZTsKLSAgICBmaXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBz
dGF0aWNfY2FzdDxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgp
KSwgMCwgU3RyaW5nKCkpOworICAgIGlmICh1dHRlcmFuY2UtPmNsaWVudCgpKQorICAgICAgICBm
aXJlRXZlbnQoZXZlbnROYW1lcygpLnJlc3VtZUV2ZW50LCBzdGF0aWNfY2FzdDxTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UqPih1dHRlcmFuY2UtPmNsaWVudCgpKSwgMCwgU3RyaW5nKCkpOwogfQog
Ci12b2lkIFNwZWVjaFN5bnRoZXNpczo6ZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lz
OjpkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiB1dHRlcmFuY2UpCiB7Ci0gICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGlj
X2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIGZh
bHNlKTsKKyAgICBpZiAodXR0ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtp
bmdDb21wbGV0ZWQoc3RhdGljX2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJh
bmNlLT5jbGllbnQoKSksIGZhbHNlKTsKIH0KICAgICAKLXZvaWQgU3BlZWNoU3ludGhlc2lzOjpz
cGVha2luZ0Vycm9yT2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UqIHV0dGVyYW5jZSkKK3ZvaWQgU3BlZWNoU3ludGhlc2lzOjpzcGVha2luZ0Vycm9yT2NjdXJy
ZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNl
KQogewotICAgIGhhbmRsZVNwZWFraW5nQ29tcGxldGVkKHN0YXRpY19jYXN0PFNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSo+KHV0dGVyYW5jZS0+Y2xpZW50KCkpLCB0cnVlKTsKKyAgICBpZiAodXR0
ZXJhbmNlLT5jbGllbnQoKSkKKyAgICAgICAgaGFuZGxlU3BlYWtpbmdDb21wbGV0ZWQoc3RhdGlj
X2Nhc3Q8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKj4odXR0ZXJhbmNlLT5jbGllbnQoKSksIHRy
dWUpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5QVVRfU1BFRUNIKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuaAppbmRleCAzZGM5ZmMyY2I5MThhNTQxYjU3ZGRiNmM0ZmU3NmU4MGZmM2M1
MzE2Li41MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4YWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaApAQCAtNjUsMTIg
KzY1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNsaWVudCBvdmVycmlkZSBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNEaWRDaGFu
Z2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRQYXVzZVNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZVNwZWFraW5nKGNvbnN0
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJl
ZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBib3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqLCBTcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZFBhdXNlU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN1bWVTcGVha2luZyhQ
YXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtp
bmdFcnJvck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFBh
c3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hCb3VuZGFy
eSwgdW5zaWduZWQgY2hhckluZGV4KSBPVkVSUklERTsKIAogICAgIHZvaWQgc3RhcnRTcGVha2lu
Z0ltbWVkaWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwogICAgIHZvaWQgaGFuZGxl
U3BlYWtpbmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgYm9vbCBlcnJvck9j
Y3VycmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IGRjMjAyZDM0MTJlNmE1Y2FjZDY5MDVi
N2RkZjM5NTI1MjFkOGFkODAuLjk4MDNlOTE0OWY4YmM3YjY1YjVhMzgwOTBmNDVkNWM2YjNlMDdk
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcApAQCAtMzcsOSArMzcsMTQgQEAgUGFzc1JlZlB0cjxT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRl
KFNjcmlwdEV4ZWMKIAogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKLSAgICAsIG1f
cGxhdGZvcm1VdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UodGhpcykp
CisgICAgLCBtX3BsYXRmb3JtVXR0ZXJhbmNlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpjcmVhdGUodGhpcykpCiB7Ci0gICAgbV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRUZXh0KHRl
eHQpOworICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7Cit9CisKK1NwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZTo6flNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpCit7CisgICAg
bV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Q2xpZW50KDApOwogfQogICAgIAogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QKQEAgLTY0LDcgKzY5LDcgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OnNldFZvaWNlKFNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB2b2ljZSkKICAgICBtX3ZvaWNlID0g
dm9pY2U7CiAgICAgCiAgICAgaWYgKHZvaWNlKQotICAgICAgICBtX3BsYXRmb3JtVXR0ZXJhbmNl
LnNldFZvaWNlKHZvaWNlLT5wbGF0Zm9ybVZvaWNlKCkpOworICAgICAgICBtX3BsYXRmb3JtVXR0
ZXJhbmNlLT5zZXRWb2ljZSh2b2ljZS0+cGxhdGZvcm1Wb2ljZSgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAppbmRleCAyOWJmZGM0YTQzNDMwNWRkZjJlNmE5
NjlmNDEwZDBjMzcxZDc3ZjM5Li4wYmZiN2M0MGIxMzM3NTIwM2YxNDVhMjk5ODdiNzdhODE1NjRh
ZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtNDEsMjYgKzQxLDI4IEBAIGNsYXNzIFNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZUNsaWVudCwKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7
CiAgICAgCi0gICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bVV0dGVyYW5jZS50ZXh0KCk7IH0KLSAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0VGV4dCh0ZXh0KTsgfQorICAgIH5TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UoKTsKIAotICAgIGNvbnN0IFN0cmluZyYgbGFuZygpIGNvbnN0IHsgcmV0
dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UubGFuZygpOyB9Ci0gICAgdm9pZCBzZXRMYW5nKGNvbnN0
IFN0cmluZyYgbGFuZykgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNldExhbmcobGFuZyk7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNl
LT50ZXh0KCk7IH0KKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fcGxh
dGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7IH0KKworICAgIGNvbnN0IFN0cmluZyYgbGFu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UtPmxhbmcoKTsgfQorICAgIHZv
aWQgc2V0TGFuZyhjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0
TGFuZyhsYW5nKTsgfQogCiAgICAgU3BlZWNoU3ludGhlc2lzVm9pY2UqIHZvaWNlKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRWb2ljZShTcGVlY2hTeW50aGVzaXNWb2ljZSopOwogCi0gICAgZmxvYXQg
dm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS52b2x1bWUoKTsgfQot
ICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgeyBtX3BsYXRmb3JtVXR0ZXJhbmNlLnNl
dFZvbHVtZSh2b2x1bWUpOyB9CisgICAgZmxvYXQgdm9sdW1lKCkgY29uc3QgeyByZXR1cm4gbV9w
bGF0Zm9ybVV0dGVyYW5jZS0+dm9sdW1lKCk7IH0KKyAgICB2b2lkIHNldFZvbHVtZShmbG9hdCB2
b2x1bWUpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c2V0Vm9sdW1lKHZvbHVtZSk7IH0KIAotICAg
IGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLnJhdGUoKTsg
fQotICAgIHZvaWQgc2V0UmF0ZShmbG9hdCByYXRlKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0
UmF0ZShyYXRlKTsgfQorICAgIGZsb2F0IHJhdGUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
VXR0ZXJhbmNlLT5yYXRlKCk7IH0KKyAgICB2b2lkIHNldFJhdGUoZmxvYXQgcmF0ZSkgeyBtX3Bs
YXRmb3JtVXR0ZXJhbmNlLT5zZXRSYXRlKHJhdGUpOyB9CiAKLSAgICBmbG9hdCBwaXRjaCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2UucGl0Y2goKTsgfQotICAgIHZvaWQgc2V0
UGl0Y2goZmxvYXQgcGl0Y2gpIHsgbV9wbGF0Zm9ybVV0dGVyYW5jZS5zZXRQaXRjaChwaXRjaCk7
IH0KKyAgICBmbG9hdCBwaXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Ut
PnBpdGNoKCk7IH0KKyAgICB2b2lkIHNldFBpdGNoKGZsb2F0IHBpdGNoKSB7IG1fcGxhdGZvcm1V
dHRlcmFuY2UtPnNldFBpdGNoKHBpdGNoKTsgfQogCi0gICAgZG91YmxlIHN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1VdHRlcmFuY2Uuc3RhcnRUaW1lKCk7IH0KLSAgICB2b2lk
IHNldFN0YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2Uuc2V0
U3RhcnRUaW1lKHN0YXJ0VGltZSk7IH0KKyAgICBkb3VibGUgc3RhcnRUaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZS0+c3RhcnRUaW1lKCk7IH0KKyAgICB2b2lkIHNldFN0
YXJ0VGltZShkb3VibGUgc3RhcnRUaW1lKSB7IG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFN0YXJ0
VGltZShzdGFydFRpbWUpOyB9CiAgICAgCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihzdGFydCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmQpOwpA
QCAtNzUsMTEgKzc3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OwogCi0gICAgY29uc3QgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIHBsYXRmb3JtVXR0ZXJhbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsgfQorICAgIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1VdHRlcmFuY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYpOwotICAgIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlIG1fcGxhdGZvcm1VdHRlcmFuY2U7CisgICAgUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3BsYXRmb3JtVXR0ZXJhbmNl
OwogICAgIFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gbV92b2ljZTsKICAgICAKICAgICAv
LyBFdmVudFRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1Nw
ZWVjaFN5bnRoZXNpc1ZvaWNlLmgKaW5kZXggZjBmMjQzZDMwYjQ2ZjBkNjJlMTVlNWMyZGJmYzcw
MTdiMjNiYjcyYy4uNzZjOTVjYmU5OGFiYTljYjVhZmNiM2U0Y2Y0NTE0ODk3N2QwM2JiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNW
b2ljZS5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU3Bl
ZWNoU3ludGhlc2lzVm9pY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hTeW50aGVzaXNWb2lj
ZT4gewogcHVibGljOgorICAgIHZpcnR1YWwgflNwZWVjaFN5bnRoZXNpc1ZvaWNlKCkgeyB9CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IGNyZWF0ZShQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+KTsKICAgICAKICAgICBjb25zdCBTdHJp
bmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZvaWNlLT52b2ljZVVSSSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDY3YzAxMzI2NTY2MTZhM2JiNjBjZDYwMTVmYzY5
NmM1Y2RmNjRiYTQuLmFmZGViNjM2ZWU5OTM3ZjE1YjNlN2VlYmNkYTEzNjA0ZGJhZThkNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNTc4LDYgKzE1NzgsNyBAQCBfX1pUVk43V2ViQ29yZTE3
RnJhbWVMb2FkZXJDbGllbnRFCiBfX1pUVk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdy
aXRlckUKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKIF9fWlRWTjdXZWJDb3JlMjVQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyRDJFdgogI2VuZGlmCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDhTZXR0aW5nc0UKIF9fWk43V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVBOU184
RG9jdW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBm
MzI3NWFhMjJiNDc5MjMwOWU3ZjI5ZDk5OGViZWNmOGU1ZTU0ZjU5Li4xMTM1MTI0MTk0YmI2ZGJh
NjI3NWZlMDA0NGMyZGE4ZjdlZDZjNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC05OTIsNyArOTky
LDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVm9pY2Uu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5o
JywKLSAgICAgICAgICAgICdNb2R1bGVzL3NwZWVjaC9jaHJvbWl1bS9TcGVlY2hTeW50aGVzaXND
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFz
aWNJbnNwZWN0b3JOb2RlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGUuY3BwJywKQEAgLTM2OTcsNiArMzY5NiwxMiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1BsYXRmb3JtSW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1BsYXRmb3JtTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1NZW1vcnlJbnN0cnVtZW50YXRpb24uaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oJywKKyAgICAg
ICAgICAgICdwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9QbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vUGxhdGZvcm1U
b3VjaFBvaW50LmgnLApAQCAtMzg2OSw2ICszODc0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9QbGF0Zm9ybVNjcmVlbkNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vUGxhdGZvcm1UaGVtZUNocm9taXVtRGVmYXVsdC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtVGhlbWVDaHJvbWl1bURlZmF1bHQuaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1X
aWRnZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWluZXIu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5oJywK
QEAgLTUyOTAsOCArNTI5Niw2IEBACiAgICAgICAgICd3ZWJjb3JlX3Rlc3Rfc3VwcG9ydF9maWxl
cyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrLmgnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQu
aCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwJywKQEAg
LTc0MzksNiArNzQ0MywxMCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhckltcGwuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5o
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRocmVhZFNhZmVE
YXRhLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFu
c2Zvcm1LZXlmcmFtZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXMuaAppbmRleCAyMWI4YmM5YWE0YzgyYzM5NDg5N2ZhNTFkNTFmMzEyNzE2
ZGQ5ZTQxLi44Yzk0NGU5NmY0MTY5YWFiYTcwNDdmMWJkNjY1NGQxY2M0MWFkYTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzLmgKQEAg
LTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNDYsNyAr
NDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzKFNw
ZWVjaFN5bnRoZXNpcyopOwogCi0gICAgU3BlZWNoU3ludGhlc2lzKiBtX3NwZWVjaFN5bnRoc2lz
OworICAgIFNwZWVjaFN5bnRoZXNpcyogbV9zcGVlY2hTeW50aGVzaXM7CiB9OwogICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCmluZGV4IDI1NGU5MmYw
YjhhMTlmZTg2ZTkzMjM5ODdjNDEwMDRlOTY2MTgwNmUuLjU2NDJkNWZkNzZkZjBlNWNlMzAwY2Zh
OWM0MjE2MjU4MzZlMDRkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKQEAgLTI5LDYgKzI5
LDExIEBACiAjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoY2xpZW50KSk7Cit9CiAgICAgCiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqIGNsaWVudCkKICAgICA6
IG1fY2xpZW50KGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oCmluZGV4IDQ0ZTYxNDI4YjIzNjFl
YzVjZTkxYjJjOWEyYmI4YTg3YTEwYWM3NTYuLjFhOTllM2Y2N2EzMDZmYTYyOGMxMWNlMjM2NjEw
ZGUzNTI4ZjZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaApAQCAtMjksNiArMjksOCBAQAogI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDAsOSArNDIsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQoKSB7IH0KIH07CiAgICAgCi1j
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSB7CitjbGFzcyBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGll
bnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gY3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50Kik7CiAg
ICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CiAg
ICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0OyB9CkBA
IC02OSw4ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGFydFRpbWUoZG91YmxlIHN0
YXJ0VGltZSkgeyBtX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTsgfQogICAgIAogICAgIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBt
X2NsaWVudDsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VDbGllbnQqKTsKKwogICAgIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIFN0cmluZyBtX2xhbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCmluZGV4IDgyZWVmMmUzZmE2NDg3MjM0
ZWEzYzdiNDRkMDBhZjEwYzg3Yzg3YzAuLjA1MjYzMjY4MzYxMTI5YmU4NWYzMTc5M2FhOGEzOTU3
NjM1NTQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCkBAIC0zNCw2ICszNCwxMSBAQCBQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2U6OmNyZWF0ZShjbwogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZSh2b2ljZVVSSSwgbmFtZSwgbGFuZywgbG9jYWxTZXJ2aWNlLCBpc0RlZmF1
bHQpKTsKIH0KKworUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSgpKTsKK30KICAgICAKIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3Qg
U3RyaW5nJiB2b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcs
IGJvb2wgbG9jYWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCkKICAgICA6IG1fdm9pY2VVUkkodm9p
Y2VVUkkpCkBAIC00NCw2ICs0OSwxMiBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKGNvbnN0IFN0cmluZyYgdm9pY2VVUgogewogfQog
CitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlKCkKKyAgICA6IG1fbG9jYWxTZXJ2aWNlKGZhbHNlKQorICAgICwgbV9kZWZhdWx0KGZhbHNl
KQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BF
RUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaAppbmRleCA3NzRlMmQ2YTIyZDJmM2JkMGVlNjRlMDQ3
NzlmNDNhNjY5NTQxMDM5Li5mNjE3N2VhMmE0MTBkYTE4NDA4Yzg3Njk4MjhhNzcyNmE3ZGM1NjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oCkBAIC0zNywxNSArMzcsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZSA6IHB1YmxpYyBSZWZDb3VudGVkPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB2
b2ljZVVSSSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGxhbmcsIGJvb2wgbG9j
YWxTZXJ2aWNlLCBib29sIGlzRGVmYXVsdCk7Ci0gICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gY3JlYXRlKCk7CisKICAgICBjb25zdCBTdHJp
bmcmIHZvaWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbV92b2ljZVVSSTsgfQorICAgIHZvaWQgc2V0
Vm9pY2VVUkkoY29uc3QgU3RyaW5nJiB2b2ljZVVSSSkgeyBtX3ZvaWNlVVJJID0gdm9pY2VVUkk7
IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQor
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQor
CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9sYW5nOyB9CisgICAg
dm9pZCBzZXRMYW5nKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2xhbmcgPSBsYW5nOyB9CisKICAg
ICBib29sIGxvY2FsU2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxTZXJ2aWNlOyB9Cisg
ICAgdm9pZCBzZXRMb2NhbFNlcnZpY2UoYm9vbCBsb2NhbFNlcnZpY2UpIHsgbV9sb2NhbFNlcnZp
Y2UgPSBsb2NhbFNlcnZpY2U7IH0KKwogICAgIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1
cm4gbV9kZWZhdWx0OyB9Ci0gICAgCisgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1
bHQpIHsgbV9kZWZhdWx0ID0gaXNEZWZhdWx0OyB9CisKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZShjb25zdCBTdHJpbmcmIHZvaWNlVVJJLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgbGFuZywgYm9vbCBsb2NhbFNlcnZpY2UsIGJvb2wgaXNEZWZh
dWx0KTsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKCk7CiAKICAgICBTdHJpbmcg
bV92b2ljZVVSSTsKICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAppbmRleCA2NjEyM2Q1YWYx
MWNhYmIwZWNlM2VhYTRjNjIwNzE3NWFhNjFlNmY3Li5mOThlMTQyY2RhMzQzNDcxNzY1NzRlMTdl
YjI3MmIxNGRiNzQyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmNwcApAQCAtMzIsMTUgKzMyLDE3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIFBhc3NPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcj4g
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y3JlYXRlKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CisgICAgT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI+IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIoY2xpZW50KSk7CisgICAgc3ludGhlc2l6ZXItPmluaXRpYWxpemVWb2ljZUxpc3QoKTsKKyAg
ICByZXR1cm4gc3ludGhlc2l6ZXIucmVsZWFzZSgpOwogfQogCi1QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoY2xpZW50
KQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzZXRWb2ljZUxpc3QoVmVjdG9yPFJl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+JiB2b2ljZXMpCiB7Ci0gICAgaW5p
dGlhbGl6ZVZvaWNlTGlzdCgpOworICAgIG1fdm9pY2VMaXN0ID0gdm9pY2VzOwogfQotICAgIAor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplci5oCmluZGV4IGNmZGM3ZTE5ZDAwM2I4OWNlODE2YzQ2YTQ2YzI5ZjI5N2RiYzAw
ZjYuLmYwZDY4OTNhMjFjNTY4M2Y4MWU1YTgyZGE1YWI2OGY1MjEzZDFjOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAg
LTM3LDYgKzM3LDEzIEBACiBPQkpDX0NMQVNTIFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJTcGVlY2hTeW50aGVzaXplcjsKK2NsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBTcGVlY2hCb3VuZGFy
eSB7CkBAIC00OCwxMiArNTUsMTIgQEAgY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U7CiAKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgewogcHVibGlj
OgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hTcGVh
a2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2VTcGVha2luZyhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKGNv
bnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgU3BlZWNoQm91bmRhcnksIHVu
c2lnbmVkIGNoYXJJbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNwZWFraW5n
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtp
bmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJv
ck9jY3VycmVkKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVk
IGNoYXJJbmRleCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSA9IDA7
CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVu
dCgpIHsgfQpAQCAtNjMsMjcgKzcwLDMzIEBAIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI+IGNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKLSAgICB2
aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCkgeyB9CisgICAgdmlydHVhbCB+UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwogICAgIAogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgdm9pY2VMaXN0KCkgY29uc3QgeyByZXR1
cm4gbV92b2ljZUxpc3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1Jl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKCk7CiAgICAgCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsgfQotICAgIAor
CisgICAgdm9pZCBzZXRWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1ZvaWNlPiA+Jik7CisKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6
ZVZvaWNlTGlzdCgpOwogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBtX3ZvaWNlTGlzdDsKICAgICAKIHByaXZhdGU6CiAg
ICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCogbV9zcGVlY2hTeW50aGVzaXplckNs
aWVudDsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4g
bV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXI7CiAjZW5kaWYKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplcj4gbV93ZWJTcGVlY2hTeW50
aGVzaXplcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudD4g
bV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudDsKKyNlbmRpZgogfTsKICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQzNzlkNzIwZWI4YzZmZDllZWNiMzgzZDJhNTAxMjYyN2ZjODg3MGYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIgorCisjaW5j
bHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVz
aXplckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIEVOQUJMRShT
UEVFQ0hfU1lOVEhFU0lTKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXI6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckNsaWVudCogY2xpZW50KQorICAgIDogbV9zcGVlY2hTeW50aGVzaXplckNsaWVudChj
bGllbnQpCit7CisgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCA9IGFkb3B0UHRyKG5l
dyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwodGhpcywgY2xpZW50KSk7CisgICAgbV93
ZWJTcGVlY2hTeW50aGVzaXplciA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQo
KS0+Y3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIobV93ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5n
ZXQoKSkpOworfQorCitQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcigpCit7Cit9CisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5p
dGlhbGl6ZVZvaWNlTGlzdCgpCit7CisgICAgaWYgKG1fd2ViU3BlZWNoU3ludGhlc2l6ZXIuZ2V0
KCkpCisgICAgICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnVwZGF0ZVZvaWNlTGlzdCgpOwor
fQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3sKKyAgICBpZiAoIW1f
d2ViU3BlZWNoU3ludGhlc2l6ZXIgfHwgIW1fd2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fd2ViU3BlZWNoU3ludGhlc2l6ZXItPnNwZWFrKFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKHV0dGVyYW5jZSkpOworfQorCit2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKK3sKKyAgICBpZiAobV93ZWJTcGVlY2hT
eW50aGVzaXplci5nZXQoKSkKKyAgICAgICAgbV93ZWJTcGVlY2hTeW50aGVzaXplci0+cGF1c2Uo
KTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQoreworICAg
IGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAgICAgICBtX3dlYlNwZWVjaFN5
bnRoZXNpemVyLT5yZXN1bWUoKTsKK30KKwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
OjpjYW5jZWwoKQoreworICAgIGlmIChtX3dlYlNwZWVjaFN5bnRoZXNpemVyLmdldCgpKQorICAg
ICAgICBtX3dlYlNwZWVjaFN5bnRoZXNpemVyLT5jYW5jZWwoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzBmOTJm
Njg0ZDQwZGYyMjUyN2Y4MTM0OWYyMDMzOGI5MmU0Yzc1YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcApAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorCisjaW5jbHVkZSA8cHVibGljL1dl
YlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgorCisjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6OldlYlNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZShjb25zdCBQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiYgdXR0ZXJhbmNlKQorICAgIDogbV9wcml2YXRlKHV0dGVyYW5jZSkKK3sKK30KKwor
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U6
Om9wZXJhdG9yPShXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogdXR0
ZXJhbmNlKQoreworICAgIG1fcHJpdmF0ZSA9IHV0dGVyYW5jZTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjphc3NpZ24oY29uc3QgV2Vi
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvdGhlcikKK3sKKyAgICBtX3ByaXZhdGUgPSBvdGhl
ci5tX3ByaXZhdGU7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjpyZXNl
dCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK1dlYlNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK1dlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6b3BlcmF0b3IgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UqKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQorCitX
ZWJTdHJpbmcgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOjp0ZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcml2YXRlLT50ZXh0KCk7Cit9CisKK1dlYlN0cmluZyBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U6OmxhbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxh
bmcoKTsKK30KKworV2ViU3RyaW5nIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9pY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZvaWNlKCkgPyBXZWJTdHJpbmcobV9w
cml2YXRlLT52b2ljZSgpLT5uYW1lKCkpIDogV2ViU3RyaW5nKCk7Cit9CisKK2Zsb2F0IFdlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9w
cml2YXRlLT52b2x1bWUoKTsKK30KKworZmxvYXQgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
OjpyYXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5yYXRlKCk7Cit9CisKK2Zs
b2F0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6cGl0Y2goKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPnBpdGNoKCk7Cit9CisKK2RvdWJsZSBXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U6OnN0YXJ0VGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3Rh
cnRUaW1lKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE5NWQ1MTIxMmNiNzI3Yzg0Nzk0ZTAyMjk3NjJhNDIxMzM2ZjQ3MGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVS
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNW
b2ljZS5oPgorCisjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZS5oIgorI2lu
Y2x1ZGUgIlNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2U6
OmFzc2lnbihjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZSYgb3RoZXIpCit7CisgICAgbV9w
cml2YXRlID0gb3RoZXIubV9wcml2YXRlOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpyZXNldCgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2U6OnNldFZvaWNlVVJJKGNvbnN0IFdlYlN0cmluZyYgdm9pY2VVUkkp
Cit7CisgICAgbV9wcml2YXRlLT5zZXRWb2ljZVVSSSh2b2ljZVVSSSk7Cit9CisKK3ZvaWQgV2Vi
U3BlZWNoU3ludGhlc2lzVm9pY2U6OnNldE5hbWUoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQorewor
ICAgIG1fcHJpdmF0ZS0+c2V0TmFtZShuYW1lKTsKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVz
aXNWb2ljZTo6c2V0TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJiBsYW5ndWFnZSkKK3sKKyAgICBt
X3ByaXZhdGUtPnNldExhbmcobGFuZ3VhZ2UpOworfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNp
c1ZvaWNlOjpzZXRJc0xvY2FsU2VydmljZShib29sIGlzTG9jYWxTZXJ2aWNlKQoreworICAgIG1f
cHJpdmF0ZS0+c2V0TG9jYWxTZXJ2aWNlKGlzTG9jYWxTZXJ2aWNlKTsKK30KKwordm9pZCBXZWJT
cGVlY2hTeW50aGVzaXNWb2ljZTo6c2V0SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KQoreworICAg
IG1fcHJpdmF0ZS0+c2V0SXNEZWZhdWx0KGlzRGVmYXVsdCk7Cit9CisKK1dlYlNwZWVjaFN5bnRo
ZXNpc1ZvaWNlOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2lzVm9pY2U+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhF
U0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGwuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0NzhjNjliN2VjNDc0NWRmZDRlOGJjNzMwNjRkMmFlOWM2MWNjMTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSwxMDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU3BlZWNoU3ludGhlc2l6
ZXJDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50SW1wbDo6V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXIqIHN5bnRoZXNpemVyLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBj
bGllbnQpCisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgOiBtX3N5bnRoZXNpemVy
KHN5bnRoZXNpemVyKQorICAgICwgbV9jbGllbnQoY2xpZW50KQorI2VuZGlmCit7Cit9CisKK1dl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6fldlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
SW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpzZXRW
b2ljZUxpc3QoY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTcGVlY2hTeW50aGVz
aXNWb2ljZT4mIHZvaWNlcykKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBW
ZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4gb3V0Vm9pY2VzOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdm9pY2VzLnNpemUoKTsgaSsrKQorICAgICAgICBv
dXRWb2ljZXMuYXBwZW5kKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4o
dm9pY2VzW2ldKSk7CisgICAgbV9zeW50aGVzaXplci0+c2V0Vm9pY2VMaXN0KG91dFZvaWNlcyk7
CisgICAgbV9jbGllbnQtPnZvaWNlc0RpZENoYW5nZSgpOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsOjpkaWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmRpZFN0YXJ0U3BlYWtpbmcodXR0ZXJh
bmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6
ZGlkRmluaXNoU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UmIHV0dGVyYW5jZSkKK3sKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKKyAgICBtX2Ns
aWVudC0+ZGlkRmluaXNoU3BlYWtpbmcodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdl
YlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6ZGlkUGF1c2VTcGVha2luZyhjb25zdCBXZWJL
aXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lmIEVOQUJM
RShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5kaWRQYXVzZVNwZWFraW5nKHV0dGVy
YW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6
OmRpZFJlc3VtZVNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJiB1dHRlcmFuY2UpCit7CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9j
bGllbnQtPmRpZFJlc3VtZVNwZWFraW5nKHV0dGVyYW5jZSk7CisjZW5kaWYKK30KKwordm9pZCBX
ZWJTcGVlY2hTeW50aGVzaXplckNsaWVudEltcGw6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChjb25z
dCBXZWJLaXQ6OldlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlKQoreworI2lm
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5zcGVha2luZ0Vycm9yT2Nj
dXJyZWQodXR0ZXJhbmNlKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbDo6d29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJhbmNlLCB1bnNpZ25lZCBjaGFySW5kZXgpCit7
CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgbV9jbGllbnQtPmJvdW5kYXJ5RXZl
bnRPY2N1cnJlZCh1dHRlcmFuY2UsIFNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KTsKKyNl
bmRpZgorfQorCit2b2lkIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbDo6c2VudGVuY2VC
b3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmIHV0dGVyYW5jZSwgdW5zaWduZWQgY2hhckluZGV4KQoreworI2lmIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQorICAgIG1fY2xpZW50LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQodXR0ZXJh
bmNlLCBTcGVlY2hTZW50ZW5jZUJvdW5kYXJ5LCBjaGFySW5kZXgpOworI2VuZGlmCit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzYjllYTQ3ZTYyZjg5OTZlMGVjOGM3NzNlMGNkZjNh
NGVkNTMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbC5oCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgT1dORVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9o
CisjZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNW
b2ljZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplckNsaWVudC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI7CitjbGFz
cyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OworCitjbGFzcyBXZWJTcGVlY2hTeW50
aGVzaXplckNsaWVudEltcGwgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXplckNs
aWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJ
bXBsKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqLCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsKCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9pY2VMaXN0KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9y
PFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVm9pY2U+JiB2b2ljZXMpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFNwZWFraW5nKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYktp
dDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIGRpZFBh
dXNlU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoY29uc3QgV2ViS2l0OjpXZWJTcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9j
Y3VycmVkKGNvbnN0IFdlYktpdDo6V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJik7CisgICAg
dmlydHVhbCB2b2lkIHdvcmRCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViS2l0OjpXZWJT
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgpOworICAgIHZpcnR1
YWwgdm9pZCBzZW50ZW5jZUJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJLaXQ6OldlYlNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIHVuc2lnbmVkIGNoYXJJbmRleCk7CisKK3ByaXZhdGU6
CisjaWYgRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCisgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplciogbV9zeW50aGVzaXplcjsKKyAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
KiBtX2NsaWVudDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMu
bW0KaW5kZXggYmM0YjUzMWY1MzE0MjBhNTNiMGM2ZTVkY2QyNzQ4ODA5ZmFkYWI5Yi4uNzdkZGU4
MWY0YWZkYTdiODdkMjdhOWI4Yjc0MjdlMDE3YmUyOTI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMu
bW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKICNp
bmNsdWRlIDxBcHBLaXQvTlNTcGVlY2hTeW50aGVzaXplci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCkBAIC0zNywxNCArMzgsMTQgQEAKIHsKICAgICBXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNpemVyT2JqZWN0OwogICAgIC8vIEhvbGQgYSBS
ZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0aGF0IGl0IHdvbid0IGRpc2FwcGVhciB1bnRpbCB0aGUg
c3ludGggaXMgZG9uZSB3aXRoIGl0LgotICAgIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7CiAgICAgCiAgICAgUmV0YWluUHRy
PE5TU3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7CiAgICAgZmxvYXQgbV9iYXNlUGl0
Y2g7CiB9CiAKIC0gKFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgKilpbml0V2l0aFNwZWVjaFN5
bnRoZXNpemVyOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyICopc3ludGhlc2l6
ZXI7Ci0tICh2b2lkKXNwZWFrVXR0ZXJhbmNlOihjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZSAqKXV0dGVyYW5jZTsKKy0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICopdXR0ZXJhbmNlOwog
CiBAZW5kCiAKQEAgLTgxLDcgKzgyLDcgQEAKICAgICBtX2Jhc2VQaXRjaCA9IFtbbV9zeW50aGVz
aXplciBvYmplY3RGb3JQcm9wZXJ0eTpOU1NwZWVjaFBpdGNoQmFzZVByb3BlcnR5IGVycm9yOm5p
bF0gZmxvYXRWYWx1ZV07CiB9CiAKLS0gKHZvaWQpc3BlYWtVdHRlcmFuY2U6KGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlICopdXR0ZXJhbmNlCistICh2b2lk
KXNwZWFrVXR0ZXJhbmNlOihXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSAqKXV0dGVyYW5jZQogewogICAgIC8vIFdoZW4gc3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBu
b3QgaGF2ZSBhbiBleGlzdGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFT
U0VSVCghbV91dHRlcmFuY2UpOwpAQCAtMTcyLDcgKzE3Myw3IEBACiAgICAgVU5VU0VEX1BBUkFN
KHNlbmRlcik7CiAgICAgCiAgICAgLy8gQ2xlYXIgdGhlIG1fdXR0ZXJhbmNlIHZhcmlhYmxlIGlu
IGNhc2UgZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5ldyBzcGVha2luZyBqb2IgaW1tZWRp
YXRlbHkuCi0gICAgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOworICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UgPSBtX3V0dGVyYW5jZTsKICAgICBtX3V0dGVy
YW5jZSA9IDA7CiAgICAgCiAgICAgaWYgKGZpbmlzaGVkU3BlYWtpbmcpCkBAIC0xOTcsNiArMTk4
LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcihQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xp
ZW50KiBjbGllbnQpCisgICAgOiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50KGNsaWVudCkKK3sK
K30KKworUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXIoKQoreworfQorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVW
b2ljZUxpc3QoKQogewogICAgIE5TU3RyaW5nICpkZWZhdWx0Vm9pY2VVUkkgPSBbTlNTcGVlY2hT
eW50aGVzaXplciBkZWZhdWx0Vm9pY2VdOwpAQCAtMjI5LDEyICsyMzksMTIgQEAgdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogICAgIFttX3BsYXRmb3JtU3BlZWNoV3Jh
cHBlci5nZXQoKSByZXN1bWVdOwogfQogICAgIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyOjpzcGVhayhjb25zdCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYgdXR0ZXJh
bmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCiB7CiAgICAgaWYgKCFt
X3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIu
YWRvcHROUyhbW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoU3BlZWNo
U3ludGhlc2l6ZXI6dGhpc10pOwogICAgIAotICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5n
ZXQoKSBzcGVha1V0dGVyYW5jZTomdXR0ZXJhbmNlXTsKKyAgICBbbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsKIH0KIAogdm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcAppbmRleCAxYzY3MTgyMjI3MjJjMWJhZWM3YzQ3MzMzNDYxMzljMDVlOWU4NWQ5Li5lOTQx
OTVhZWE0YWFkNmRjMDhjZDJkOTFjNTJlYTJkN2M1MGZiZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrLmNwcApAQCAtMzMsMTMgKzMzLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2s6OmNyZWF0ZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGll
bnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jayhjbGllbnQpKTsKKyAgICBPd25QdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s+
IHN5bnRoZXNpemVyID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
KGNsaWVudCkpOworICAgIHN5bnRoZXNpemVyLT5pbml0aWFsaXplVm9pY2VMaXN0KCk7CisgICAg
cmV0dXJuIHN5bnRoZXNpemVyLnJlbGVhc2UoKTsKIH0KICAgICAKIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyKGNsaWVudCkKICAgICAsIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyKHRoaXMsICZQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCkKLSAgICAsIG1fdXR0ZXJh
bmNlKDApCiB7CiB9CiAgICAgCkBAIC01MCw3ICs1MSw3IEBAIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soKQogCiB2b2lkIFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKFRpbWVyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrPiopCiB7Ci0gICAgQVNTRVJUKG1fdXR0ZXJhbmNlKTsKKyAg
ICBBU1NFUlQobV91dHRlcmFuY2UuZ2V0KCkpOwogICAgIGNsaWVudCgpLT5kaWRGaW5pc2hTcGVh
a2luZyhtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSAwOwogfQpAQCAtNjMsMTAgKzY0
LDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2lj
ZUxpc3QoKQogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmxvZ2FuIiksIFN0cmluZygibG9nYW4iKSwg
U3RyaW5nKCJmci1DQSIpLCB0cnVlLCB0cnVlKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s6OnNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVh
ayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2Up
CiB7CiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7Ci0gICAgbV91dHRlcmFuY2UgPSAmdXR0ZXJh
bmNlOworICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwogICAgIGNsaWVudCgpLT5kaWRTdGFy
dFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKICAgICAKICAgICAvLyBGaXJlIGEgZmFrZSB3b3JkIGFu
ZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCmlu
ZGV4IGYxM2IwZTJjMDVlYjZmMGVlYWNhMWQzMzAwNWE4NGM1OTRkZmM2Y2IuLmJiN2I0ZWY5ZmEx
ZTI1NDFjMTM0MTQzOWQ1ODBkNWY1ODUzMGJjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrPiBjcmVhdGUoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNs
aWVudCopOwogICAgIAogICAgIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlJik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwpAQCAt
NTAsNyArNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3BlYWtpbmdGaW5pc2hlZChUaW1lcjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaz4qKTsKICAgICAKICAgICBUaW1lcjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jaz4gbV9zcGVha2luZ0ZpbmlzaGVkVGltZXI7Ci0gICAgY29u
c3QgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNlOworICAgIFJl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV91dHRlcmFuY2U7CiB9Owog
ICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>