<?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>65101</bug_id>
          
          <creation_ts>2011-07-25 04:26:21 -0700</creation_ts>
          <short_desc>MediaStream API: Implement PeerConnection and SignalingCallback</short_desc>
          <delta_ts>2011-08-03 12:54:45 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jonathon</cc>
    
    <cc>leandrogracia</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjjeon</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>441601</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-25 04:26:21 -0700</bug_when>
    <thetext>Add a initial version of PeerConnection and SignalingCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441602</commentid>
    <comment_count>1</comment_count>
      <attachid>101860</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-25 04:31:18 -0700</bug_when>
    <thetext>Created attachment 101860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>441660</commentid>
    <comment_count>2</comment_count>
      <attachid>101860</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-25 08:20:58 -0700</bug_when>
    <thetext>Comment on attachment 101860
Patch

Attachment 101860 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9234965

New failing tests:
fast/dom/prototype-inheritance.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442262</commentid>
    <comment_count>3</comment_count>
      <attachid>102005</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-26 08:04:44 -0700</bug_when>
    <thetext>Created attachment 102005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442283</commentid>
    <comment_count>4</comment_count>
      <attachid>102005</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-07-26 08:37:48 -0700</bug_when>
    <thetext>Comment on attachment 102005
Patch

Once the build bots succeed, LGTM with a few things to fix:

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

&gt; Source/WebCore/dom/PeerConnection.cpp:54
&gt; +        (m_object.get()-&gt;*m_callback)(m_data);

Is .get required here?

&gt; Source/WebCore/dom/PeerConnection.cpp:80
&gt; +        (m_object.get()-&gt;*m_callback)(m_arg1, m_arg2);

Same as before.

&gt; Source/WebCore/dom/PeerConnection.cpp:347
&gt; +    dispatchEvent(MessageEvent::create(adoptPtr&lt;MessagePortArray&gt;(0), d));

I think the first param should be PassOwnPtr&lt;MessagePortArray&gt;() in this case.

&gt; Source/WebCore/dom/PeerConnection.h:31
&gt; +#include &quot;MediaStream.h&quot;

Are you sure this is required in the header? If you don&apos;t instantiate any PassRefPtr in this file you shouldn&apos;t need it here.

&gt; Source/WebCore/dom/PeerConnection.h:33
&gt; +#include &quot;ScriptExecutionContext.h&quot;

Same with this. It&apos;s already forward-declared.

&gt; Source/WebCore/dom/PeerConnection.h:50
&gt; +        NEW = 0,

This is not a patch problem, but I&apos;m wondering why the spec starts the PeerConnection status values with 0 (NEW) and the MediaStream status values with 1 (LIVE). Perhaps a minor inconsistency?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:435
&gt; +    ASSERT(!streamLabel.isNull());

This will pass with non-null empty strings. Maybe you meant isEmpty?

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:447
&gt; +    ASSERT(!streamLabel.isNull());

Same as before.

&gt; Source/WebCore/page/MediaStreamFrameController.h:146
&gt; +        virtual ~PeerConnectionClient() { }

This is ok, but you won&apos;t be able to do PeerConnection-specific unregistration operations if you leave the destructor like this. The problem is, as in MediaStreams, that isPeerConnection will always return false from GenericClient&apos;s destructor. Consequently you won&apos;t be able to tell if your client is a PeerConnection client from the unregister(GenericClient*) method.

If you want to perform specific unregistering operations in the controller for any reason (eg. MediaStreams do so to stop any live streams) you should mimic MediaStreamClient or GenericClient and invoke an specific unregister(PeerConnectionClient*) method. Keep in mind that if you inherit from GenericClient then you should not remove the client from the map as GenericClient&apos;s destructor will already do so.

&gt; Source/WebCore/page/MediaStreamFrameController.h:215
&gt; +    void onAddStream(int peerConnectionId, const AtomicString&amp; streamLabel, PassRefPtr&lt;MediaStreamTrackList&gt; tracks);

&apos;tracks&apos; is unnecessary here as MediaStreamTrackList is supposed to provide enough information about the argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442289</commentid>
    <comment_count>5</comment_count>
      <attachid>102012</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-26 08:41:48 -0700</bug_when>
    <thetext>Created attachment 102012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442364</commentid>
    <comment_count>6</comment_count>
      <attachid>102012</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 11:00:32 -0700</bug_when>
    <thetext>Comment on attachment 102012
Patch

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

This patch contains lots of small mistakes w.r.t. RefPtr, style, and general project organization.  I haven&apos;t noted every instance of every issue, but hopefully you can generalize from the comments below.  It&apos;s a bit hard to understand what the patch actually does because these issues are somewhat distracting.  Perhaps we should break this patch up into smaller pieces so each piece can receive a high-quality review.

Finally, this patch contains no tests.  I presume that&apos;s because we haven&apos;t landed enough of this feature to test it.  What&apos;s the plan for testing?  (Please feel free to refer me to another bug or to a wiki page if this question has already been asked and answered).

Thanks!

&gt; Source/WebCore/CMakeLists.txt:2009
&gt; +        dom/PeerConnection.cpp

PeerConnection shouldn&apos;t be in the &quot;DOM&quot; folder.  DOM is for DOM Core.  In all likelihood, we should have a new folder in WebCore for p2p code.

&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)

Why do we need custom bindings for this object?  Is there some feature missing from the code generator?

&gt; Source/WebCore/dom/PeerConnection.cpp:42
&gt; +template &lt;typename T, typename D&gt;

Please use more descriptive template variables.

&gt; Source/WebCore/dom/PeerConnection.cpp:43
&gt; +class SimpleDispatchTask : public ScriptExecutionContext::Task {

This object seems more general than just PeerConnection.  Should it move to a more general location where it can be used by other code?

&gt; Source/WebCore/dom/PeerConnection.cpp:69
&gt; +template &lt;typename T, typename A1, typename A2&gt;
&gt; +class DispatchTask : public ScriptExecutionContext::Task {

Dittto.

&gt; Source/WebCore/dom/PeerConnection.cpp:99
&gt; +    // TODO: Verify configuration

TODO =&gt; FIXME.  Please make comments be complete sentences.

&gt; Source/WebCore/dom/PeerConnection.cpp:102
&gt; +    pc-&gt;init();

Why is this init function separate from construction?

&gt; Source/WebCore/dom/PeerConnection.cpp:103
&gt; +    return pc;

pc.release().

Also, please use complete words in variable names.

&gt; Source/WebCore/dom/PeerConnection.cpp:137
&gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::localStreams()
&gt; +{
&gt; +    return m_localStreamList;
&gt; +}
&gt; +
&gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::remoteStreams()
&gt; +{
&gt; +    return m_remoteStreamList;
&gt; +}

Do these functions transfer ownership?  If not, they should return raw pointers.  If you haven&apos;t read http://www.webkit.org/coding/RefPtr.html you might find it informative.

&gt; Source/WebCore/dom/PeerConnection.cpp:139
&gt; +// Sends the message down to the user agent implementation.

Please remove this comment.  Perhaps we should rename the function to say what this comment says?

&gt; Source/WebCore/dom/PeerConnection.cpp:151
&gt; +void PeerConnection::send(const AtomicString&amp; text, ExceptionCode&amp; ec)

Why AtomicString?  I would have expected String.

&gt; Source/WebCore/dom/PeerConnection.cpp:177
&gt; +    RefPtr&lt;MediaStream&gt; s = stream;

Typically we&apos;d call &quot;stream&quot; prpStream and then rename &quot;s&quot; to stream.

&gt; Source/WebCore/dom/PeerConnection.cpp:283
&gt; +    if (!scriptExecutionContext())

Typically we&apos;d store the scriptExecutionContext in a local variable because it&apos;s non-trivial to retrieve it.

&gt; Source/WebCore/dom/PeerConnection.cpp:288
&gt; +    scriptExecutionContext()-&gt;postTask(DispatchTask&lt;PeerConnection, int, SerializedScriptValue&gt;::create(this, &amp;PeerConnection::dispatchMessageEvent, 0, data));

data.release()

&gt; Source/WebCore/dom/PeerConnection.cpp:307
&gt; +    RefPtr&lt;MediaStream&gt; s = stream;
&gt; +    scriptExecutionContext()-&gt;postTask(DispatchTask&lt;PeerConnection, AtomicString, MediaStream&gt;::create(this, &amp;PeerConnection::dispatchStreamEvent, eventNames().addstreamEvent, s));

What&apos;s the point of converting stream to a RefPtr?  We should just pass the PassReftPtr on to postTask.

&gt; Source/WebCore/dom/PeerConnection.h:46
&gt; +class PeerConnection : public RefCounted&lt;PeerConnection&gt;,
&gt; +    public EventTarget,
&gt; +    public MediaStreamFrameController::PeerConnectionClient {

One line pls.

&gt; Source/WebCore/dom/PeerConnection.h:48
&gt; +    // Must match the constants in the .idl file.

Complete sentences pls.

&gt; Source/WebCore/dom/PeerConnection.h:60
&gt; +    PassRefPtr&lt;MediaStreamList&gt; localStreams();
&gt; +    PassRefPtr&lt;MediaStreamList&gt; remoteStreams();

These don&apos;t transfer ownership and so should return raw pointers.

&gt; Source/WebCore/dom/PeerConnection.idl:31
&gt; +        ConstructorParameters=2,

Can we really not provide the type signature for the constructor?  That seems like something we should fix in the code generator.

&gt; Source/WebCore/dom/PeerConnection.idl:33
&gt; +        EventTarget

Shouldn&apos;t we just have this interface inherit from EventTarget instead of using this attribute?

&gt; Source/WebCore/dom/PeerConnection.idl:46
&gt; +        [StrictTypeChecking] void addStream(in MediaStream stream)

I&apos;ve never seen this StrictTypeChecking before.  What does that mean?

&gt; Source/WebCore/dom/PeerConnection.idl:69
&gt; +        // EventTarget interface
&gt; +        void addEventListener(in DOMString type,
&gt; +                              in EventListener listener,
&gt; +                              in boolean useCapture);
&gt; +        void removeEventListener(in DOMString type,
&gt; +                                 in EventListener listener,
&gt; +                                 in boolean useCapture);

The useCapture argument should be marked [Optional]

&gt; Source/WebCore/dom/SignalingCallback.idl:25
&gt; +module core {

Why the &quot;Core&quot; module?  This API isn&apos;t part of DOM Core.

&gt; Source/WebCore/page/MediaStreamClient.h:77
&gt; +    // Signaling message from peer connection.
&gt; +    virtual void processSignalingMessage(int peerConnectionId, const String&amp; message) = 0;
&gt; +
&gt; +    // Message from peer connection.
&gt; +    virtual void message(int peerConnectionId, const String&amp; message) = 0;
&gt; +
&gt; +    // Add a stream to a peer connection.
&gt; +    virtual void addStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; +
&gt; +    // Remove a stream from a peer connection.
&gt; +    virtual void removeStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; +
&gt; +    // A PeerConnection object has been created.
&gt; +    virtual void newPeerConnection(int peerConnectionId, const String&amp; configuration) = 0;
&gt; +
&gt; +    // Peer connection is being closed.
&gt; +    virtual void closePeerConnection(int peerConnectionId) = 0;
&gt; +
&gt; +    // Start negotiation.
&gt; +    virtual void startNegotiation(int peerConnectionId) = 0;

Why are these calls going through the client?  I would have expected them to go through the platform.

&gt; Source/WebCore/page/MediaStreamController.cpp:37
&gt; +// TODO: This is used for holding list of PeerConnection as well,

TODO -&gt; FIXME

&gt; Source/WebCore/page/MediaStreamController.cpp:96
&gt; +    // TODO: Add for peer connection

TODO -&gt; FIXME.  Please use complete sentences for comments.

&gt; Source/WebCore/page/MediaStreamController.cpp:172
&gt; +    int pagePeerConnectionId(-1);

Please use the assignment form of the constructor.

&gt; Source/WebCore/page/MediaStreamController.cpp:193
&gt; +    int pagePeerConnectionId = frameToPagePeerConnectionId(frameController, framePeerConnectionId);
&gt; +    if (pagePeerConnectionId != -1)

Generally WebKit frowns upon in-band signaling.  Is there a better design here?  For example, perhaps frameToPagePeerConnectionId should return a bool and have an out parameter for the ID.

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:372
&gt; +    return peerConnection;

peerConnection.release()

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:442
&gt; +    peerConnection-&gt;streamAdded(stream);

stream.release()

&gt; Source/WebCore/page/MediaStreamFrameController.h:173
&gt; +    // Creates a new PeerConnection object.

These comments should be removed.  Probably all the comments in this file are useless and should be removed, but I haven&apos;t checked them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442392</commentid>
    <comment_count>7</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-07-26 11:22:59 -0700</bug_when>
    <thetext>A few meta-comments for Adam about some reasons behind the actual code. Please Tommy feel free to correct or complete me.

(In reply to comment #6)
&gt; (From update of attachment 102012 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102012&amp;action=review
&gt; &gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt; &gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt; 
&gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?

I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.

&gt; &gt; Source/WebCore/dom/PeerConnection.cpp:137
&gt; &gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::localStreams()
&gt; &gt; +{
&gt; &gt; +    return m_localStreamList;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::remoteStreams()
&gt; &gt; +{
&gt; &gt; +    return m_remoteStreamList;
&gt; &gt; +}
&gt; 
&gt; Do these functions transfer ownership?  If not, they should return raw pointers.  If you haven&apos;t read http://www.webkit.org/coding/RefPtr.html you might find it informative.
&gt; 

According to the spec, these lists need to be accessible by Javascript. That&apos;s why they are reference-counted objects and raw pointers are not used.

Here&apos;s the spec:
http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html#peerconnection

&gt; &gt; Source/WebCore/dom/PeerConnection.cpp:283
&gt; &gt; +    if (!scriptExecutionContext())
&gt; 
&gt; Typically we&apos;d store the scriptExecutionContext in a local variable because it&apos;s non-trivial to retrieve it.

Doing this here would lead to errors since you could detach the frame associated to the context but keep a reference to the PeerConnection object. This method avoids the tricky cases I mentioned before and ensures that the proper execution context is returned if available.

 
&gt; &gt; Source/WebCore/dom/PeerConnection.h:60
&gt; &gt; +    PassRefPtr&lt;MediaStreamList&gt; localStreams();
&gt; &gt; +    PassRefPtr&lt;MediaStreamList&gt; remoteStreams();
&gt; 
&gt; These don&apos;t transfer ownership and so should return raw pointers.

Need to be accessible by Javascript as before. 


&gt; &gt; Source/WebCore/dom/PeerConnection.idl:33
&gt; &gt; +        EventTarget
&gt; 
&gt; Shouldn&apos;t we just have this interface inherit from EventTarget instead of using this attribute?

Almost all existing DOM code does it like this instead of inheriting in the idl.


&gt; &gt; Source/WebCore/page/MediaStreamClient.h:77
&gt; &gt; +    // Signaling message from peer connection.
&gt; &gt; +    virtual void processSignalingMessage(int peerConnectionId, const String&amp; message) = 0;
&gt; &gt; +
&gt; &gt; +    // Message from peer connection.
&gt; &gt; +    virtual void message(int peerConnectionId, const String&amp; message) = 0;
&gt; &gt; +
&gt; &gt; +    // Add a stream to a peer connection.
&gt; &gt; +    virtual void addStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; &gt; +
&gt; &gt; +    // Remove a stream from a peer connection.
&gt; &gt; +    virtual void removeStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; &gt; +
&gt; &gt; +    // A PeerConnection object has been created.
&gt; &gt; +    virtual void newPeerConnection(int peerConnectionId, const String&amp; configuration) = 0;
&gt; &gt; +
&gt; &gt; +    // Peer connection is being closed.
&gt; &gt; +    virtual void closePeerConnection(int peerConnectionId) = 0;
&gt; &gt; +
&gt; &gt; +    // Start negotiation.
&gt; &gt; +    virtual void startNegotiation(int peerConnectionId) = 0;
&gt; 
&gt; Why are these calls going through the client?  I would have expected them to go through the platform.

It goes through a WebKit page client just as the other OWP APIs (Geolocation, Device Orientation, Speech Input and such).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442406</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 11:37:25 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; A few meta-comments for Adam about some reasons behind the actual code. Please Tommy feel free to correct or complete me.
&gt; 
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 102012 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102012&amp;action=review
&gt; &gt; &gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt; &gt; &gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt; &gt; 
&gt; &gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?
&gt; 
&gt; I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.

That seems like something we can do in WebCore proper without the need for custom bindings.

&gt; &gt; &gt; Source/WebCore/dom/PeerConnection.cpp:137
&gt; &gt; &gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::localStreams()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return m_localStreamList;
&gt; &gt; &gt; +}
&gt; &gt; &gt; +
&gt; &gt; &gt; +PassRefPtr&lt;MediaStreamList&gt; PeerConnection::remoteStreams()
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    return m_remoteStreamList;
&gt; &gt; &gt; +}
&gt; &gt; 
&gt; &gt; Do these functions transfer ownership?  If not, they should return raw pointers.  If you haven&apos;t read http://www.webkit.org/coding/RefPtr.html you might find it informative.
&gt; &gt; 
&gt; 
&gt; According to the spec, these lists need to be accessible by Javascript. That&apos;s why they are reference-counted objects and raw pointers are not used.
&gt; 
&gt; Here&apos;s the spec:
&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html#peerconnection

I understand why they&apos;re reference-counted objects.  However, you should return raw pointers.  The JavaScript engine can happily take a reference to the objects even if it receive the pointer in the form of a raw pointer.

&gt; &gt; &gt; Source/WebCore/dom/PeerConnection.cpp:283
&gt; &gt; &gt; +    if (!scriptExecutionContext())
&gt; &gt; 
&gt; &gt; Typically we&apos;d store the scriptExecutionContext in a local variable because it&apos;s non-trivial to retrieve it.
&gt; 
&gt; Doing this here would lead to errors since you could detach the frame associated to the context but keep a reference to the PeerConnection object. This method avoids the tricky cases I mentioned before and ensures that the proper execution context is returned if available.

I&apos;m talking about a local variable.  If it&apos;s possible for the scriptExecutionContext to become detached between the time you null check it and the time you use it, then you&apos;ve got a crash.  If it can&apos;t happen, then you should use a local variable like we do everywhere else where this pattern arises.

&gt; &gt; &gt; Source/WebCore/dom/PeerConnection.h:60
&gt; &gt; &gt; +    PassRefPtr&lt;MediaStreamList&gt; localStreams();
&gt; &gt; &gt; +    PassRefPtr&lt;MediaStreamList&gt; remoteStreams();
&gt; &gt; 
&gt; &gt; These don&apos;t transfer ownership and so should return raw pointers.
&gt; 
&gt; Need to be accessible by Javascript as before. 

Same comment as above.  You don&apos;t need to return PassRefPtrs in order for JavaScript to be able to take a reference.  PassRefPtrs are for transferring ownership of objects.  You are not transferring ownership at this call site.  Therefore, you should not use PassRefPtr.  Please read http://www.webkit.org/coding/RefPtr.html if you haven&apos;t already.

&gt; &gt; &gt; Source/WebCore/dom/PeerConnection.idl:33
&gt; &gt; &gt; +        EventTarget
&gt; &gt; 
&gt; &gt; Shouldn&apos;t we just have this interface inherit from EventTarget instead of using this attribute?
&gt; 
&gt; Almost all existing DOM code does it like this instead of inheriting in the idl.

Almost all?  Does that mean inheritance doesn&apos;t work?  In any case, if this is a common pattern, we can fix it separately.

&gt; &gt; &gt; Source/WebCore/page/MediaStreamClient.h:77
&gt; &gt; &gt; +    // Signaling message from peer connection.
&gt; &gt; &gt; +    virtual void processSignalingMessage(int peerConnectionId, const String&amp; message) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // Message from peer connection.
&gt; &gt; &gt; +    virtual void message(int peerConnectionId, const String&amp; message) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // Add a stream to a peer connection.
&gt; &gt; &gt; +    virtual void addStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // Remove a stream from a peer connection.
&gt; &gt; &gt; +    virtual void removeStream(int peerConnectionId, const String&amp; streamLabel) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // A PeerConnection object has been created.
&gt; &gt; &gt; +    virtual void newPeerConnection(int peerConnectionId, const String&amp; configuration) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // Peer connection is being closed.
&gt; &gt; &gt; +    virtual void closePeerConnection(int peerConnectionId) = 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +    // Start negotiation.
&gt; &gt; &gt; +    virtual void startNegotiation(int peerConnectionId) = 0;
&gt; &gt; 
&gt; &gt; Why are these calls going through the client?  I would have expected them to go through the platform.
&gt; 
&gt; It goes through a WebKit page client just as the other OWP APIs (Geolocation, Device Orientation, Speech Input and such).

Some APIs go through the client and some go though the platform.  It&apos;s not related to whether they APIs are part of the open web platform.  It&apos;s based on whether the methods ask the platform to perform some action or whether they ask the client to make some decision.  These methods clearly look like they&apos;re instructing the callee to perform some actions on low-level object (addStream, closePeerConnection) rather than asking for policy (e.g., shouldClosePeerConnection) or notifying the client about what happened (e.g., didClosePeerConnection).  I&apos;m pretty sure these should be part of the platform.

Another way to understand the distinction is to ask yourself how you would implement this feature in another embedding of WebKit.  Would you link in a low-level library to perform these tasks (e.g., an ICE library) or are these decisions/notifications that require application-layer reasoning?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442514</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-26 14:03:41 -0700</bug_when>
    <thetext>To be clear, we don&apos;t need to block this patch on the client/platform distinction.  It would be good to get it right from the start because it can be somewhat of a pain to fix later, but it&apos;s not required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443940</commentid>
    <comment_count>10</comment_count>
      <attachid>102012</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-29 07:56:49 -0700</bug_when>
    <thetext>Comment on attachment 102012
Patch

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

&gt;&gt; Source/WebCore/CMakeLists.txt:2009
&gt;&gt; +        dom/PeerConnection.cpp
&gt; 
&gt; PeerConnection shouldn&apos;t be in the &quot;DOM&quot; folder.  DOM is for DOM Core.  In all likelihood, we should have a new folder in WebCore for p2p code.

Done.

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt;&gt;&gt;&gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt;&gt;&gt; 
&gt;&gt;&gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?
&gt;&gt; 
&gt;&gt; I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.
&gt; 
&gt; That seems like something we can do in WebCore proper without the need for custom bindings.

Can you give me a hint how to do it? I&apos;ll happily get rid of any custom bindings.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:42
&gt;&gt; +template &lt;typename T, typename D&gt;
&gt; 
&gt; Please use more descriptive template variables.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:43
&gt;&gt; +class SimpleDispatchTask : public ScriptExecutionContext::Task {
&gt; 
&gt; This object seems more general than just PeerConnection.  Should it move to a more general location where it can be used by other code?

Moved it to a separate file to start with. Where do you suggest the file should live?

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:69
&gt;&gt; +class DispatchTask : public ScriptExecutionContext::Task {
&gt; 
&gt; Dittto.

Ditto.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:99
&gt;&gt; +    // TODO: Verify configuration
&gt; 
&gt; TODO =&gt; FIXME.  Please make comments be complete sentences.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:102
&gt;&gt; +    pc-&gt;init();
&gt; 
&gt; Why is this init function separate from construction?

Because the init function needs to queue a DispatchTask which doesn&apos;t work inside constructors and destructors.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:103
&gt;&gt; +    return pc;
&gt; 
&gt; pc.release().
&gt; 
&gt; Also, please use complete words in variable names.

Fixed * 2.

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:137
&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt; 
&gt;&gt;&gt; Do these functions transfer ownership?  If not, they should return raw pointers.  If you haven&apos;t read http://www.webkit.org/coding/RefPtr.html you might find it informative.
&gt;&gt; 
&gt;&gt; According to the spec, these lists need to be accessible by Javascript. That&apos;s why they are reference-counted objects and raw pointers are not used.
&gt;&gt; 
&gt;&gt; Here&apos;s the spec:
&gt;&gt; http://www.whatwg.org/specs/web-apps/current-work/multipage/video-conferencing-and-peer-to-peer-communication.html#peerconnection
&gt; 
&gt; I understand why they&apos;re reference-counted objects.  However, you should return raw pointers.  The JavaScript engine can happily take a reference to the objects even if it receive the pointer in the form of a raw pointer.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:139
&gt;&gt; +// Sends the message down to the user agent implementation.
&gt; 
&gt; Please remove this comment.  Perhaps we should rename the function to say what this comment says?

Function can&apos;t be renamed since it is an JavaScript function.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:151
&gt;&gt; +void PeerConnection::send(const AtomicString&amp; text, ExceptionCode&amp; ec)
&gt; 
&gt; Why AtomicString?  I would have expected String.

Have removed all usages of AtomicString.

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:283
&gt;&gt;&gt;&gt; +    if (!scriptExecutionContext())
&gt;&gt;&gt; 
&gt;&gt;&gt; Typically we&apos;d store the scriptExecutionContext in a local variable because it&apos;s non-trivial to retrieve it.
&gt;&gt; 
&gt;&gt; Doing this here would lead to errors since you could detach the frame associated to the context but keep a reference to the PeerConnection object. This method avoids the tricky cases I mentioned before and ensures that the proper execution context is returned if available.
&gt; 
&gt; I&apos;m talking about a local variable.  If it&apos;s possible for the scriptExecutionContext to become detached between the time you null check it and the time you use it, then you&apos;ve got a crash.  If it can&apos;t happen, then you should use a local variable like we do everywhere else where this pattern arises.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:288
&gt;&gt; +    scriptExecutionContext()-&gt;postTask(DispatchTask&lt;PeerConnection, int, SerializedScriptValue&gt;::create(this, &amp;PeerConnection::dispatchMessageEvent, 0, data));
&gt; 
&gt; data.release()

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:307
&gt;&gt; +    scriptExecutionContext()-&gt;postTask(DispatchTask&lt;PeerConnection, AtomicString, MediaStream&gt;::create(this, &amp;PeerConnection::dispatchStreamEvent, eventNames().addstreamEvent, s));
&gt; 
&gt; What&apos;s the point of converting stream to a RefPtr?  We should just pass the PassReftPtr on to postTask.

Done, was just a leftover from refactored code.

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.h:60
&gt;&gt;&gt;&gt; +    PassRefPtr&lt;MediaStreamList&gt; remoteStreams();
&gt;&gt;&gt; 
&gt;&gt;&gt; These don&apos;t transfer ownership and so should return raw pointers.
&gt;&gt; 
&gt;&gt; Need to be accessible by Javascript as before.
&gt; 
&gt; Same comment as above.  You don&apos;t need to return PassRefPtrs in order for JavaScript to be able to take a reference.  PassRefPtrs are for transferring ownership of objects.  You are not transferring ownership at this call site.  Therefore, you should not use PassRefPtr.  Please read http://www.webkit.org/coding/RefPtr.html if you haven&apos;t already.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.idl:31
&gt;&gt; +        ConstructorParameters=2,
&gt; 
&gt; Can we really not provide the type signature for the constructor?  That seems like something we should fix in the code generator.

Have not found a way to do so.

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.idl:33
&gt;&gt;&gt;&gt; +        EventTarget
&gt;&gt;&gt; 
&gt;&gt;&gt; Shouldn&apos;t we just have this interface inherit from EventTarget instead of using this attribute?
&gt;&gt; 
&gt;&gt; Almost all existing DOM code does it like this instead of inheriting in the idl.
&gt; 
&gt; Almost all?  Does that mean inheritance doesn&apos;t work?  In any case, if this is a common pattern, we can fix it separately.

Dunno about if it doesn&apos;t work or not, I have just followed the pattern in surrounding code.

&gt;&gt; Source/WebCore/dom/PeerConnection.idl:46
&gt;&gt; +        [StrictTypeChecking] void addStream(in MediaStream stream)
&gt; 
&gt; I&apos;ve never seen this StrictTypeChecking before.  What does that mean?

It checks that that the pointer is non-null and indeed a MediaStream.

&gt;&gt; Source/WebCore/dom/PeerConnection.idl:69
&gt;&gt; +                                 in boolean useCapture);
&gt; 
&gt; The useCapture argument should be marked [Optional]

Done.

&gt;&gt; Source/WebCore/dom/SignalingCallback.idl:25
&gt;&gt; +module core {
&gt; 
&gt; Why the &quot;Core&quot; module?  This API isn&apos;t part of DOM Core.

Fixed.

&gt;&gt;&gt;&gt; Source/WebCore/page/MediaStreamClient.h:77
&gt;&gt;&gt;&gt; +    virtual void startNegotiation(int peerConnectionId) = 0;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why are these calls going through the client?  I would have expected them to go through the platform.
&gt;&gt; 
&gt;&gt; It goes through a WebKit page client just as the other OWP APIs (Geolocation, Device Orientation, Speech Input and such).
&gt; 
&gt; Some APIs go through the client and some go though the platform.  It&apos;s not related to whether they APIs are part of the open web platform.  It&apos;s based on whether the methods ask the platform to perform some action or whether they ask the client to make some decision.  These methods clearly look like they&apos;re instructing the callee to perform some actions on low-level object (addStream, closePeerConnection) rather than asking for policy (e.g., shouldClosePeerConnection) or notifying the client about what happened (e.g., didClosePeerConnection).  I&apos;m pretty sure these should be part of the platform.
&gt; 
&gt; Another way to understand the distinction is to ask yourself how you would implement this feature in another embedding of WebKit.  Would you link in a low-level library to perform these tasks (e.g., an ICE library) or are these decisions/notifications that require application-layer reasoning?

Our first approach is to route everything to the client and there use the webrtc/libjingle/existing chrome APIs to implement this feature. It&apos;s not ideal for those ports that want to do this in platform. I have been contacted by the Ericsson team and we will meetup as soon as the vacations is over in Sweden to make a plan how to solve this in a way that will work for both approaches.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:37
&gt;&gt; +// TODO: This is used for holding list of PeerConnection as well,
&gt; 
&gt; TODO -&gt; FIXME

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:96
&gt;&gt; +    // TODO: Add for peer connection
&gt; 
&gt; TODO -&gt; FIXME.  Please use complete sentences for comments.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:172
&gt;&gt; +    int pagePeerConnectionId(-1);
&gt; 
&gt; Please use the assignment form of the constructor.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:193
&gt;&gt; +    if (pagePeerConnectionId != -1)
&gt; 
&gt; Generally WebKit frowns upon in-band signaling.  Is there a better design here?  For example, perhaps frameToPagePeerConnectionId should return a bool and have an out parameter for the ID.

Thanks for the input. Fixed.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:372
&gt;&gt; +    return peerConnection;
&gt; 
&gt; peerConnection.release()

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.h:173
&gt;&gt; +    // Creates a new PeerConnection object.
&gt; 
&gt; These comments should be removed.  Probably all the comments in this file are useless and should be removed, but I haven&apos;t checked them all.

Useless comments removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443942</commentid>
    <comment_count>11</comment_count>
      <attachid>102362</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-07-29 08:00:13 -0700</bug_when>
    <thetext>Created attachment 102362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444009</commentid>
    <comment_count>12</comment_count>
      <attachid>102362</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-07-29 10:55:08 -0700</bug_when>
    <thetext>Comment on attachment 102362
Patch

Attachment 102362 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9268466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444012</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-29 11:01:18 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 102012 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102012&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt; &gt;&gt;&gt;&gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?
&gt; &gt;&gt; 
&gt; &gt;&gt; I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.
&gt; &gt; 
&gt; &gt; That seems like something we can do in WebCore proper without the need for custom bindings.
&gt; 
&gt; Can you give me a hint how to do it? I&apos;ll happily get rid of any custom bindings.

Is the issue that you need to find the Frame?  You can try CallWith=ScriptExecutionContext (or maybe one of the other CallWith options).  Maybe we need to generalize those to work with constructors?

&gt; &gt;&gt; Source/WebCore/dom/PeerConnection.cpp:43
&gt; &gt;&gt; +class SimpleDispatchTask : public ScriptExecutionContext::Task {
&gt; &gt; 
&gt; &gt; This object seems more general than just PeerConnection.  Should it move to a more general location where it can be used by other code?
&gt; 
&gt; Moved it to a separate file to start with. Where do you suggest the file should live?

I would put it next to ScriptExecutionContext::Task.

&gt; &gt;&gt; Source/WebCore/dom/PeerConnection.cpp:102
&gt; &gt;&gt; +    pc-&gt;init();
&gt; &gt; 
&gt; &gt; Why is this init function separate from construction?
&gt; 
&gt; Because the init function needs to queue a DispatchTask which doesn&apos;t work inside constructors and destructors.

Can we rename the function to something like &quot;queueDispatchTask&quot; ?

&gt; &gt;&gt; Source/WebCore/dom/PeerConnection.cpp:139
&gt; &gt;&gt; +// Sends the message down to the user agent implementation.
&gt; &gt; 
&gt; &gt; Please remove this comment.  Perhaps we should rename the function to say what this comment says?
&gt; 
&gt; Function can&apos;t be renamed since it is an JavaScript function.

Ok.

&gt; &gt;&gt; Source/WebCore/dom/PeerConnection.idl:31
&gt; &gt;&gt; +        ConstructorParameters=2,
&gt; &gt; 
&gt; &gt; Can we really not provide the type signature for the constructor?  That seems like something we should fix in the code generator.
&gt; 
&gt; Have not found a way to do so.

Seems like something we should add.  You can specify types in WebIDL.

&gt; &gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.idl:33
&gt; &gt;&gt;&gt;&gt; +        EventTarget
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Shouldn&apos;t we just have this interface inherit from EventTarget instead of using this attribute?
&gt; &gt;&gt; 
&gt; &gt;&gt; Almost all existing DOM code does it like this instead of inheriting in the idl.
&gt; &gt; 
&gt; &gt; Almost all?  Does that mean inheritance doesn&apos;t work?  In any case, if this is a common pattern, we can fix it separately.
&gt; 
&gt; Dunno about if it doesn&apos;t work or not, I have just followed the pattern in surrounding code.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444017</commentid>
    <comment_count>14</comment_count>
      <attachid>102362</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-29 11:11:14 -0700</bug_when>
    <thetext>Comment on attachment 102362
Patch

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

&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:56
&gt; +    Frame* frame = asJSDOMWindow(exec-&gt;dynamicGlobalObject())-&gt;impl()-&gt;frame();
&gt; +    MediaStreamFrameController* frameController = frame ? frame-&gt;mediaStreamFrameController() : 0;

Is this the right MediaStreamFrameController ?  Why the dynamicGlobalObject ?  I might have expected the MediaStreamFrameController associated with the frame associated with the DOMWindow from which we got the constructor object.

Is the choice of controller observable?  If so, does the spec say which controller to use?

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:64
&gt; +    Frame* frame = V8Proxy::retrieveFrameForCurrentContext();
&gt; +    MediaStreamFrameController* frameController = frame ? frame-&gt;mediaStreamFrameController() : 0;

So, here you&apos;re grabbing the current context, which isn&apos;t the same as the dynamic global object.  That means your JSC and V8 implementations aren&apos;t the same.

&gt; Source/WebCore/page/MediaStreamClient.h:77
&gt; +    // Start negotiation.
&gt; +    virtual void startNegotiation(int peerConnectionId) = 0;

These comments are really silly.

&gt; Source/WebCore/page/MediaStreamController.cpp:173
&gt; +    // TODO: Is there a better way to find the global ID in the map?

TODO =&gt; FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444018</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-29 11:12:43 -0700</bug_when>
    <thetext>Modulo the issues / questions about the custom constructor, I&apos;m happy with this patch.  I&apos;m happy to r+ it, but I don&apos;t actually know anything about the substance.  :)

Do you want something how knows about PeerConnection in specific to look before landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445165</commentid>
    <comment_count>16</comment_count>
      <attachid>102012</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-02 02:22:15 -0700</bug_when>
    <thetext>Comment on attachment 102012
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt;&gt;&gt;&gt;&gt;&gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.
&gt;&gt;&gt; 
&gt;&gt;&gt; That seems like something we can do in WebCore proper without the need for custom bindings.
&gt;&gt; 
&gt;&gt; Can you give me a hint how to do it? I&apos;ll happily get rid of any custom bindings.
&gt; 
&gt; Is the issue that you need to find the Frame?  You can try CallWith=ScriptExecutionContext (or maybe one of the other CallWith options).  Maybe we need to generalize those to work with constructors?

Is it OK if I address this in a follow-up patch?

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:43

&gt;&gt;&gt; 
&gt;&gt;&gt; This object seems more general than just PeerConnection.  Should it move to a more general location where it can be used by other code?
&gt;&gt; 
&gt;&gt; Moved it to a separate file to start with. Where do you suggest the file should live?
&gt; 
&gt; I would put it next to ScriptExecutionContext::Task.

Done.

&gt;&gt;&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:102
&gt;&gt;&gt;&gt; +    pc-&gt;init();
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is this init function separate from construction?
&gt;&gt; 
&gt;&gt; Because the init function needs to queue a DispatchTask which doesn&apos;t work inside constructors and destructors.
&gt; 
&gt; Can we rename the function to something like &quot;queueDispatchTask&quot; ?

The &quot;init() after contructor&quot; pattern is quite common and the function does register the new PeerConnection object with the controllers as well as queue a new Task. Would very muck like to keep the name.

&gt;&gt; Source/WebCore/dom/PeerConnection.cpp:177
&gt;&gt; +    RefPtr&lt;MediaStream&gt; s = stream;
&gt; 
&gt; Typically we&apos;d call &quot;stream&quot; prpStream and then rename &quot;s&quot; to stream.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:46
&gt;&gt; +    public MediaStreamFrameController::PeerConnectionClient {
&gt; 
&gt; One line pls.

Done.

&gt;&gt; Source/WebCore/dom/PeerConnection.h:48
&gt;&gt; +    // Must match the constants in the .idl file.
&gt; 
&gt; Complete sentences pls.

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:442
&gt;&gt; +    peerConnection-&gt;streamAdded(stream);
&gt; 
&gt; stream.release()

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445168</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 02:34:48 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 102012 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=102012&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:43
&gt; &gt;&gt;&gt;&gt;&gt;&gt; +EncodedJSValue JSC_HOST_CALL JSPeerConnectionConstructor::constructJSPeerConnection(ExecState* exec)
&gt; &gt;&gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt;&gt; Why do we need custom bindings for this object?  Is there some feature missing from the code generator?
&gt; &gt;&gt;&gt;&gt; 
&gt; &gt;&gt;&gt;&gt; I think it&apos;s because it needs to register itself to the MediaStreamFrameController. This controller tracks all the script objects related to the local frame and notifies them in case the access to the embedder client is broken (for example, the frame gets detached from the page or transferred to another one). This is part of the main core of the API design and tries to solve nasty corner cases that have produced many headaches to the Geolocation API.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; That seems like something we can do in WebCore proper without the need for custom bindings.
&gt; &gt;&gt; 
&gt; &gt;&gt; Can you give me a hint how to do it? I&apos;ll happily get rid of any custom bindings.
&gt; &gt; 
&gt; &gt; Is the issue that you need to find the Frame?  You can try CallWith=ScriptExecutionContext (or maybe one of the other CallWith options).  Maybe we need to generalize those to work with constructors?
&gt; 
&gt; Is it OK if I address this in a follow-up patch?

Sure.  Please make the V8 bindings and JSC bindings consistent though.  The easiest way to do that is to change the V8 bindings to use the Entered context (which is the same as the dynamic context you&apos;re using in the JSC bindings).  That&apos;s not really the right thing, but it will let us make progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445171</commentid>
    <comment_count>18</comment_count>
      <attachid>102362</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 02:38:17 -0700</bug_when>
    <thetext>Comment on attachment 102362
Patch

I&apos;m making this r+, but there are still a couple of open issues to address (making the JSC and V8 custom implementations match and fixing the GTK compile issue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445173</commentid>
    <comment_count>19</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-02 03:14:24 -0700</bug_when>
    <thetext>Thanks, a new patch will come later today.

(In reply to comment #18)
&gt; (From update of attachment 102362 [details])
&gt; I&apos;m making this r+, but there are still a couple of open issues to address (making the JSC and V8 custom implementations match and fixing the GTK compile issue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445190</commentid>
    <comment_count>20</comment_count>
      <attachid>102633</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-02 05:02:59 -0700</bug_when>
    <thetext>Created attachment 102633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445191</commentid>
    <comment_count>21</comment_count>
      <attachid>102362</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-02 05:03:57 -0700</bug_when>
    <thetext>Comment on attachment 102362
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSPeerConnectionCustom.cpp:56
&gt;&gt; +    MediaStreamFrameController* frameController = frame ? frame-&gt;mediaStreamFrameController() : 0;
&gt; 
&gt; Is this the right MediaStreamFrameController ?  Why the dynamicGlobalObject ?  I might have expected the MediaStreamFrameController associated with the frame associated with the DOMWindow from which we got the constructor object.
&gt; 
&gt; Is the choice of controller observable?  If so, does the spec say which controller to use?

I am out of my depth here, can you suggest how to do this so that it matches the v8 implementation?

&gt;&gt; Source/WebCore/page/MediaStreamClient.h:77
&gt;&gt; +    virtual void startNegotiation(int peerConnectionId) = 0;
&gt; 
&gt; These comments are really silly.

More silly comments removed, and instead replaced with two hopefully less silly ones.

&gt;&gt; Source/WebCore/page/MediaStreamController.cpp:173
&gt;&gt; +    // TODO: Is there a better way to find the global ID in the map?
&gt; 
&gt; TODO =&gt; FIXME

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445387</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-02 11:53:56 -0700</bug_when>
    <thetext>&gt; I am out of my depth here, can you suggest how to do this so that it matches the v8 implementation?

Sure.  The easiest way to do that is to change the V8 bindings to use the Entered context (which is the same as the dynamic context you&apos;re using in the JSC bindings).  That&apos;s not really the right thing, but it will let us make progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445517</commentid>
    <comment_count>23</comment_count>
      <attachid>102633</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-08-02 14:12:07 -0700</bug_when>
    <thetext>Comment on attachment 102633
Patch

Attachment 102633 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9258020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445524</commentid>
    <comment_count>24</comment_count>
      <attachid>102633</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-08-02 14:18:12 -0700</bug_when>
    <thetext>Comment on attachment 102633
Patch

Attachment 102633 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9290818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445763</commentid>
    <comment_count>25</comment_count>
      <attachid>102753</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-03 01:51:03 -0700</bug_when>
    <thetext>Created attachment 102753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445834</commentid>
    <comment_count>26</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-03 05:59:04 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; I am out of my depth here, can you suggest how to do this so that it matches the v8 implementation?
&gt; 
&gt; Sure.  The easiest way to do that is to change the V8 bindings to use the Entered context (which is the same as the dynamic context you&apos;re using in the JSC bindings).  That&apos;s not really the right thing, but it will let us make progress.

Done. I clearly need to learn a lot more about this, can you recommend some documentation?

And btw I looked through the code generators and there doesn&apos;t seem to be any mechanism to specify types to a constructor; only constructors without any parameters with the exception of an optional ScripExecutionContext. So I guess the custom constructors are here to stay, which makes the previous paragraph even more important.

Also I think I found the GTK issue finally but the trybots for it are really slow today :/

Lastly: A huge thank you for the thorough review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445921</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-03 10:05:08 -0700</bug_when>
    <thetext>&gt; &gt; Sure.  The easiest way to do that is to change the V8 bindings to use the Entered context (which is the same as the dynamic context you&apos;re using in the JSC bindings).  That&apos;s not really the right thing, but it will let us make progress.
&gt; 
&gt; Done. I clearly need to learn a lot more about this, can you recommend some documentation?

There isn&apos;t really any documentation for this sort of thing.  We&apos;ve been sharing the knowledge via discussions and code reviews, but that&apos;s starting to have scaling problems.  Generally, the WebKit project&apos;s philosophy isn&apos;t to create documentation because it gets out of date as it&apos;s not tested.  (Most folks who are new to the project find this philosophy nutty, but it&apos;s worked for us pretty well up until now.)

&gt; And btw I looked through the code generators and there doesn&apos;t seem to be any mechanism to specify types to a constructor; only constructors without any parameters with the exception of an optional ScripExecutionContext. So I guess the custom constructors are here to stay, which makes the previous paragraph even more important.

Not really.  We just need to make the code generator smarter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445929</commentid>
    <comment_count>28</comment_count>
      <attachid>102753</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-08-03 10:19:19 -0700</bug_when>
    <thetext>Comment on attachment 102753
Patch

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

The Frame-finding code still isn&apos;t the same between JSC and V8, but I feel bad bouncing your patch again.  I&apos;ve also noted some minor nits that you shouldn&apos;t feel obligated to fix.  If you&apos;d like, you should feel free to update this patch or deal with the remaining (minor) issues in a follow-up patch.

&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:64
&gt; +    Frame* frame = V8Proxy::retrieveFrameForEnteredContext();
&gt; +    MediaStreamFrameController* frameController = frame ? frame-&gt;mediaStreamFrameController() : 0;

It looks like you changed both of these.

retrieveFrameForEnteredContext &lt;=&gt; asJSDOMWindow(exec-&gt;dynamicGlobalObject())-&gt;impl()-&gt;frame()

but you&apos;re using lexicalGlobalObject for the JSC bindings...  I&apos;m sorry these names are confusing.  The problem is that the V8 names come from the V8 API and the JSC names come from the programming languages literature.  Neither group wants to change their names to match the other.

&gt; Source/WebCore/p2p/PeerConnection.cpp:104
&gt; +    CString utf8 = text.utf8();
&gt; +    if (utf8.length() &gt; 504) {

Should we make 504 a named constant?  This check is strange, but I assume it&apos;s from the spec.

&gt; Source/WebCore/p2p/PeerConnection.cpp:182
&gt; +    RefPtr&lt;MediaStream&gt; s = stream;

prpStream

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:407
&gt; +    RefPtr&lt;MediaStream&gt; stream = streamRef;

streamRef =&gt; prpStream

&gt; Source/WebCore/page/MediaStreamFrameController.cpp:416
&gt; +    RefPtr&lt;MediaStream&gt; stream = streamRef;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445961</commentid>
    <comment_count>29</comment_count>
      <attachid>102798</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-03 11:22:17 -0700</bug_when>
    <thetext>Created attachment 102798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445962</commentid>
    <comment_count>30</comment_count>
      <attachid>102753</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2011-08-03 11:23:47 -0700</bug_when>
    <thetext>Comment on attachment 102753
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/custom/V8PeerConnectionCustom.cpp:64
&gt;&gt; +    MediaStreamFrameController* frameController = frame ? frame-&gt;mediaStreamFrameController() : 0;
&gt; 
&gt; It looks like you changed both of these.
&gt; 
&gt; retrieveFrameForEnteredContext &lt;=&gt; asJSDOMWindow(exec-&gt;dynamicGlobalObject())-&gt;impl()-&gt;frame()
&gt; 
&gt; but you&apos;re using lexicalGlobalObject for the JSC bindings...  I&apos;m sorry these names are confusing.  The problem is that the V8 names come from the V8 API and the JSC names come from the programming languages literature.  Neither group wants to change their names to match the other.

After an conversation with abarth we have agreed to land it like this and Adam will then make sure both custom functions are correct in a followup patch.

&gt;&gt; Source/WebCore/p2p/PeerConnection.cpp:104
&gt;&gt; +    if (utf8.length() &gt; 504) {
&gt; 
&gt; Should we make 504 a named constant?  This check is strange, but I assume it&apos;s from the spec.

Done. Yes the spec says 504 bytes.

&gt;&gt; Source/WebCore/p2p/PeerConnection.cpp:182
&gt;&gt; +    RefPtr&lt;MediaStream&gt; s = stream;
&gt; 
&gt; prpStream

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:407
&gt;&gt; +    RefPtr&lt;MediaStream&gt; stream = streamRef;
&gt; 
&gt; streamRef =&gt; prpStream

Done.

&gt;&gt; Source/WebCore/page/MediaStreamFrameController.cpp:416
&gt;&gt; +    RefPtr&lt;MediaStream&gt; stream = streamRef;
&gt; 
&gt; ditto

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446030</commentid>
    <comment_count>31</comment_count>
      <attachid>102798</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 12:54:38 -0700</bug_when>
    <thetext>Comment on attachment 102798
Patch

Clearing flags on attachment: 102798

Committed r92304: &lt;http://trac.webkit.org/changeset/92304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446031</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-03 12:54:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101860</attachid>
            <date>2011-07-25 04:31:18 -0700</date>
            <delta_ts>2011-07-26 08:04:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110725133115.patch</filename>
            <type>text/plain</type>
            <size>93658</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE2NjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYWNkMmMy
ODg5YTJlZmQ3ZWM1NDgwNzIzYzJlYjAzMDU1NmFmN2UzZS4uZTgyMDk2ZDkxNmVjNTVhYzUxZWNk
YmM4YWU1YzEyMDIxOTBhMTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMjAsNiArMjAy
MCw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgICAgICBkb20vTWVkaWFTdHJlYW1M
aXN0LmNwcAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICAgICAgZG9tL01l
ZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAorICAgICAgICBkb20vUGVlckNvbm5lY3Rpb24uY3BwCiAg
ICAgICAgIGRvbS9TdHJlYW1FdmVudC5jcHAKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuY3BwCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBA
IC0yMDMxLDYgKzIwMzIsOCBAQCBJRiAoRU5BQkxFX01FRElBX1NUUkVBTSkKICAgICAgICAgZG9t
L01lZGlhU3RyZWFtTGlzdC5pZGwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suaWRsCiAg
ICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwKKyAgICAgICAgZG9tL1BlZXJDb25u
ZWN0aW9uLmlkbAorICAgICAgICBkb20vU2lnbmFsaW5nQ2FsbGJhY2suaWRsCiAgICAgICAgIGRv
bS9TdHJlYW1FdmVudC5pZGwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5p
ZGwKICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI5ODVkMzY4YzQwNDQ2ZGU1OWRiODdhMzRkODAxZGM3
YTkwNzE5Yi4uZDhmMDEzYzAxZjRiOTVlYzhkMTBlNzAxYWJjNTZiOTI2MTUxY2RiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMS0wNy0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEltcGxlbWVudCBQ
ZWVyQ29ubmVjdGlvbiBhbmQgU2lnbmFsaW5nQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIExheW91dFRlc3QgbW9kaWZpY2F0aW9ucyB3
aWxsIGJlIGluIG15IG5leHQgcGF0Y2gsIHRvZ2V0aGVyIHdpdGggc2V2ZXJhbCB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvZGVHZW5lcmF0b3JzLnByaToK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVzZUpTQy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpKU1BlZXJDb25uZWN0aW9uQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZl
cnRFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFBl
ZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRE9NQWxs
SW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1BlZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBkb20vUGVl
ckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNo
VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNoVGFzazo6cGVy
Zm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpTaW1wbGVE
aXNwYXRjaFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwYXRjaFRhc2s6OkRpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9u
OjpQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246Om9uTmVnb3RpYXRpb25TdGFydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uRG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c3RyZWFtQWRkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnN0cmVhbVJlbW92ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246Om9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6b25TaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjp0b1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cG9zdFNpZ25hbGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uOjpwb3N0U3RyZWFtQWRkZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cG9zdFN0cmVhbVJlbW92ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdFNpbXBsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAgKiBk
b20vUGVlckNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRlcmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9QZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9TaWduYWxpbmdDYWxsYmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpTaWduYWxpbmdD
YWxsYmFjazo6flNpZ25hbGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBkb20vU2lnbmFsaW5nQ2Fs
bGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmFkZFN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpuZXdQZWVyQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNsb3NlUGVl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpz
dGFydE5lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZSk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1
ZXN0Ojppc1NpZ25hbGluZ1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpuZXdQZWVyQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RhcnRO
ZWdvdGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvblJlbW92ZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290
aWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6b25OZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpDbGllbnRCYXNlOjppc1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6UGVlckNvbm5l
Y3Rpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50Ojp+UGVlckNvbm5lY3Rpb25DbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xp
ZW50Ojppc1BlZXJDb25uZWN0aW9uKToKKwogMjAxMS0wNy0yNCAgTHVrZSBNYWNwaGVyc29uICAg
PG1hY3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNtYWxsIGNsZWFudXAgb2YgbV9m
b250RGlydHkgdHJhY2tpbmcgaW4gQ1NTU3R5bGVTZWxlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpIGIvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRv
cnMucHJpCmluZGV4IGYyOWY0ZjU5ZTg4OWFhOTA1ZThlYmY5ZmEyNTA1OTY2NzU4YmIxOTIuLmVk
ZWZiNzY4YTFmMjUxNmVmY2NhZmYzZmE5ZTJjZWQ3ZDVjNTFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db2RlR2Vu
ZXJhdG9ycy5wcmkKQEAgLTE1OSwxMSArMTU5LDEzIEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAg
ZG9tL05vdGF0aW9uLmlkbCBcCiAgICAgZG9tL092ZXJmbG93RXZlbnQuaWRsIFwKICAgICBkb20v
UGFnZVRyYW5zaXRpb25FdmVudC5pZGwgXAorICAgIGRvbS9QZWVyQ29ubmVjdGlvbi5pZGwgXAog
ICAgIGRvbS9Qb3BTdGF0ZUV2ZW50LmlkbCBcCiAgICAgZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5pZGwgXAogICAgIGRvbS9Qcm9ncmVzc0V2ZW50LmlkbCBcCiAgICAgZG9tL1JhbmdlRXhjZXB0
aW9uLmlkbCBcCiAgICAgZG9tL1JhbmdlLmlkbCBcCisgICAgZG9tL1NpZ25hbGluZ0NhbGxiYWNr
LmlkbCBcCiAgICAgZG9tL1N0cmVhbUV2ZW50LmlkbCBcCiAgICAgZG9tL1N0cmluZ0NhbGxiYWNr
LmlkbCBcCiAgICAgZG9tL1RleHQuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRl
eCAzMWEzZTgwOWQ5ZDQyOTI2M2QxMDkxYmJmYjQzNTAyZTJmYjM2YTEyLi41ZGYzMzBlMGY0NDFm
ZWM1YjliMzAyODA3MTJjMzAyNDc5YWU5NTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CkBAIC0yNTgsNiArMjU4LDcgQEAKICNpbmNsdWRlICJKU09wZXJhdGlvbk5vdEFsbG93ZWRFeGNl
cHRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNQ
YWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uLmNwcCIK
ICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlLmNwcCIKICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlTmF2
aWdhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZVRpbWluZy5jcHAiCkBAIC0yNzYs
NiArMjc3LDcgQEAKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGVOb2RlLmNwcCIKICNpbmNsdWRl
ICJKU1NoYXJlZFdvcmtlci5jcHAiCiAjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNw
cCIKKyNpbmNsdWRlICJKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU1NRTEVy
cm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTEV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNTUUxS
ZXN1bHRTZXQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNjFlYjdmNTll
YzAzOTNjZGMxMTU5MTIyZTk0YTFmYTdkMTc5ZjA5Ni4uNTMxM2E4MjJjNzIxNWU3OGYyYTU0YTQ2
YzYxMzE5MjU4YmQyN2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMzIs
NiArMzMyLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2Vw
dGlvbiBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGFnZVRyYW5zaXRpb25FdmVudCBcCisg
ICAgUGVlckNvbm5lY3Rpb24gXAogICAgIFBlcmZvcm1hbmNlIFwKICAgICBQZXJmb3JtYW5jZU5h
dmlnYXRpb24gXAogICAgIFBlcmZvcm1hbmNlVGltaW5nIFwKQEAgLTM0OSw2ICszNTAsNyBAQCBE
T01fQ0xBU1NFUyA9IFwKICAgICBTaGFyZWRXb3JrZXJDb250ZXh0IFwKICAgICBTY3JpcHRQcm9m
aWxlIFwKICAgICBTY3JpcHRQcm9maWxlTm9kZSBcCisgICAgU2lnbmFsaW5nQ2FsbGJhY2sgXAog
ICAgIFNwZWVjaElucHV0RXZlbnQgXAogICAgIFNwZWVjaElucHV0UmVzdWx0IFwKICAgICBTcGVl
Y2hJbnB1dFJlc3VsdExpc3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZDU0
YjlkM2NhNmMzZmQ2NzRkYTU0ZGJkYTRlZWM5NWZkNDkyYzEyMy4uNTVkZGZlZjMzNDNkMWY3MGNm
ZTlmMDc4ZTQ3OWRjZmQzZWFjNDE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC00MTEsNiArNDExLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQ
YWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29u
bmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbi5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNDQ3LDYgKzQ0OSw4IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdv
cmtlckNvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdvcmtlci5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXIuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Nw
ZWVjaElucHV0RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0
UmVzdWx0LmNwcCBcCkBAIC03ODAsNiArNzg0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgXApA
QCAtMTIzNSw2ICsxMjQwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vT3ZlcmZsb3dFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRp
b25FdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1Nj
cmlwdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9QZW5kaW5nU2NyaXB0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCBcCkBAIC0xMjc3LDYgKzEyODQsNyBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxp
bmdDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCA0
MmY4NGU0OTkzNjg2YzJhMzc4MGMxZjVlMDFhNTBkYzQ3MjEzMWNjLi4yNzUzZTYyMmM0NDQ2Y2M3
YTllYjIwNzg3ZWUzODc1YmUzMDEwOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCkBAIC0xMDEsNiArMTAx
LDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvSlNOb2Rl
SXRlcmF0b3JDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIGJpbmRpbmdzL2pz
L0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVt
ZW50RnVuY3Rpb25zLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggMzk5YmRlNmQwMjRjYjhhYzQzNGJlZjczODYzM2E4MDdiMzM3
NzM3NS4uZTRiYjlhNWZjMWNlMDdjOGRjZDExMzVkY2FjODNhODkwMGE0ZTc4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMTE4MiwxMiArMTE4MiwxNCBAQAogICAgICAgICAgICAgJ2RvbS9Ob3RhdGlv
bi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9PdmVyZmxvd0V2ZW50LmlkbCcsCiAgICAgICAgICAg
ICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdkb20vUGVlckNv
bm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdkb20vUG9wU3RhdGVFdmVudC5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsJywKICAgICAgICAgICAgICdk
b20vUHJvZ3Jlc3NFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9SYW5nZS5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9SZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwnLAorICAgICAgICAgICAgJ2RvbS9TaWduYWxp
bmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJlYW1FdmVudC5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9TdHJpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ2RvbS9UZXh0
LmlkbCcsCkBAIC0xODc3LDYgKzE4NzksNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
Tm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNv
bnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1
Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25z
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25D
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xp
c3RDdXN0b20uY3BwJywKQEAgLTIxNzgsNiArMjE4MSw3IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cCcsCkBAIC0yNTYwLDYgKzI1NjQsOCBAQAogICAgICAgICAgICAgJ2RvbS9PdmVyZmxvd0V2ZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL1BlZXJD
b25uZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnZG9tL1BlZXJDb25uZWN0aW9uLmgnLAogICAg
ICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1BvcFN0
YXRlRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vUG9wU3RhdGVFdmVudC5oJywKQEAgLTI1
OTgsNiArMjYwNCw3IEBACiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuY3BwJywKICAgICAg
ICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAgICAgICAgICAgICdkb20vU3BhY2VTcGxpdFN0
cmluZy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TaWduYWxpbmdDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oJywKICAgICAgICAgICAgICdkb20vU3RhdGljTm9kZUxp
c3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMGFhMzMwNDc4ZTcxNTYyZWI5MjRlNzc2Njk2Njg3
MDhkNDQzYWEzNy4uNTdlYTkxZWIxNjc3NGFiNDhkMjIyY2IyYzJhNzgyODdhY2IwNzRhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTMyMzMsNiArMzIzMyw4IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBkb20vTWVkaWFTdHJlYW1MaXN0LmggXAogICAg
ICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5oIFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJh
Y2tMaXN0LmggXAorICAgICAgICBkb20vUGVlckNvbm5lY3Rpb24uaCBcCisgICAgICAgIGRvbS9T
aWduYWxpbmdDYWxsYmFjay5oIFwKICAgICAgICAgZG9tL1N0cmVhbUV2ZW50LmggXAogICAgICAg
ICBwYWdlL0NhbGxiYWNrVGFzay5oIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5o
IFwKQEAgLTMyNDgsMTMgKzMyNTAsMTkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElB
X1NUUkVBTT0xKSB7CiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbUxpc3QuY3BwIFwKICAgICAgICAg
ZG9tL01lZGlhU3RyZWFtVHJhY2suY3BwIFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tM
aXN0LmNwcCBcCisgICAgICAgIGRvbS9QZWVyQ29ubmVjdGlvbi5jcHAgXAogICAgICAgICBkb20v
U3RyZWFtRXZlbnQuY3BwIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3Bw
IFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKIAogICAgIHY4
IHsKICAgICAgICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhO
YXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBl
ZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAorICAgIH0gZWxzZSB7CisgICAgICAgIFNPVVJDRVMgKz0g
XAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEz
MmM3YTY2MDUwNzQ0N2UyNDVlNjdhZGJkOGUyMWJjZWJhMmMxODYuLmM0YTZlOGQyYWRhZGZlZTE1
OGEyYjQzNDU5YWU3ZDQ5YjJkY2YyYjUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC0xMjM5MCw2ICsxMjM5MCw2MiBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uY3Bw
IgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1BlcmZvcm1hbmNlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCkBAIC0xMzI4Niw2ICsxMzM0Miw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdl
YkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTaWduYWxpbmdDYWxsYmFjay5jcHAiCisJCQkJPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NpZ25hbGluZ0NhbGxi
YWNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNTUUxFcnJvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNDcxNzQs
NiArNDcyODYsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9uLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQ
ZW5kaW5nU2NyaXB0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC00ODI3
MCw2ICs0ODQzOCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cU2lnbmFsaW5nQ2FsbGJhY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNwYWNlU3BsaXRTdHJpbmcuY3BwIgog
CQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTYzMTMzLDYgKzYzMzA1LDU4IEBACiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YmFhNzhjMjdiYjlmNzkyZTFhYmI3ZDRmZmJiMDNlMDY1MzdjMjA4NS4uMDBiYjFlYzVmY2QyYTM0
OGJlOThjNTYyYjg4MjJjNGEwMzU3MjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0NCw2ICsxMTQ0LDE0IEBACiAJCTQ5
QTg1QjZDMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBODVCNjkxMzhENTczQTAwRUNCN0IzIC8q
IFN0cmVhbUV2ZW50LmggKi87IH07CiAJCTQ5QTg1Qjc3MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0
cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QTg1Qjc1MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCAqLzsgfTsK
IAkJNDlBODVCNzgxMzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTg1Qjc2MTM4RDU4RUUwMEVD
QjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi87IH07CisJCTQ5QkUzMEQyMTNEOTc0N0IwMDM4MDhB
OSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDlCRTMwRDgxM0Q5NzRDOTAwMzgwOEE5IC8q
IFBlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QkUzMEQzMTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5jcHAg
Ki87IH07CisJCTQ5QkUzMEQ5MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRDQxM0Q5
NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmggKi87IH07CisJCTQ5QkUzMERCMTNEOTc0
QzkwMDM4MDhBOSAvKiBTaWduYWxpbmdDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRDYxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25h
bGluZ0NhbGxiYWNrLmggKi87IH07CisJCTQ5QkUzMEYzMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAq
LzsgfTsKKwkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYwMTNE
OTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi87IH07CisJCTQ5QkUzMEY1MTNE
OTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAv
KiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLzsgfTsKKwkJNDlCRTMwRjYxM0Q5NzY0NjAwMzgw
OEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYyMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGlu
Z0NhbGxiYWNrLmggKi87IH07CiAJCTQ5QzdCOTkzMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdM
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLzsgfTsKIAkJ
NDlDN0I5OTQxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgxMTA0MkQyRDMwMDA5RDQ0
NyAvKiBKU1dlYkdMQnVmZmVyLmggKi87IH07CiAJCTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU0ludDhBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwICovOyB9
OwpAQCAtNzY5Niw2ICs3NzA0LDE2IEBACiAJCTQ5QTg1QjZBMTM4RDU3M0EwMEVDQjdCMyAvKiBT
dHJlYW1FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU3RyZWFtRXZlbnQuaWRsOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUE4NUI3NTEzOEQ1OEVFMDBFQ0I3QjMgLyog
SlNTdHJlYW1FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1N0cmVhbUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNzYx
MzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJlYW1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0OUJFMzBEMTEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDMxM0Q5NzRDOTAw
MzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBlZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlCRTMwRDQxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5QkUzMEQ1MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlv
bi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGVlckNvbm5lY3Rpb24uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBENjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFs
aW5nQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lnbmFsaW5n
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDcxM0Q5NzRD
OTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBTaWduYWxpbmdDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVy
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BlZXJDb25u
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEYxMTNEOTc2NDYw
MDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0OUJFMzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NpZ25hbGluZ0NhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgwMTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludDhBcnJheS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI2OSw2ICsxNzI4Nyw4IEBACiAJCQkJQkNEOUMy
QkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLywKIAkJCQk2NURGMzFFOTA5RDFD
QzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUEwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTTm90YXRpb24uaCAqLywKKwkJCQk0OUJFMzBFRjEzRDk3NjQ2MDAzODA4QTkg
LyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5
IC8qIEpTUGVlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1OTgzNjVFMzEzNTVGNjA0MDAxQjE4NUQg
LyogSlNQb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKIAkJCQk1OTgzNjVEQzEzNTVGNTNDMDAxQjE4
NUQgLyogSlNQb3NpdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8sCkBAIC0xNzI3OSw2ICsxNzI5OSw4IEBACiAJ
CQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgg
Ki8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAg
Ki8sCiAJCQkJRTRCNDIzODYwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5oICov
LAorCQkJCTQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNw
cCAqLywKKwkJCQk0OUJFMzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFj
ay5oICovLAogCQkJCTc1NDE1RDRGMTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZl
bnQuY3BwICovLAogCQkJCTc1NDE1RDUwMTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0
RXZlbnQuaCAqLywKIAkJCQk3NTQxNUQ1MTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1
dFJlc3VsdC5jcHAgKi8sCkBAIC0xODYyOSw2ICsxODY1MSw3IEBACiAJCQkJQkNCNzczNjAwQzE3
ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMw
QTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5
QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJNDlC
RTMwRDExM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovLAog
CQkJCUUxQUQxMkQ1MTI5NUQwQkQwMEFDQTk4OSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1
c3RvbS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcyRkNGMDAwQzRDRDU1IC8qIEpTU2NyaXB0UHJv
ZmlsZU5vZGVDdXN0b20uY3BwICovLAogCQkJCTUxRENFODAxMENBQzlGMUMwMDQ4ODM1OCAvKiBK
U1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwICovLApAQCAtMTk4NDksNiArMTk4NzIsOSBA
QAogCQkJCUUxMjg0QUU5MTA0NDdERUUwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNw
cCAqLywKIAkJCQlFMTI4NEFFMDEwNDQ3RDQ1MDBFQUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVu
dC5oICovLAogCQkJCUUxMjg0QUQ5MTA0NDdBRUIwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2
ZW50LmlkbCAqLywKKwkJCQk0OUJFMzBEMzEzRDk3NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rp
b24uY3BwICovLAorCQkJCTQ5QkUzMEQ0MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlv
bi5oICovLAorCQkJCTQ5QkUzMEQ1MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5p
ZGwgKi8sCiAJCQkJOEE3Q0M5NkYxMjA3NkY4QTAwMUQ0NTg4IC8qIFBlbmRpbmdTY3JpcHQuY3Bw
ICovLAogCQkJCThBN0NDOTZBMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmggKi8s
CiAJCQkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVDIC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcCAqLywKQEAgLTE5ODk4LDYgKzE5OTI0LDggQEAKIAkJCQlBNzFDMzBCNzEzODEyNjVF
MDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCAqLywKIAkJCQlBNkQxNjk2MTEz
NDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5NjMxMzQ2QjRD
MTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKKwkJCQk0OUJFMzBENjEzRDk3NEM5MDAzODA4
QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLywKKwkJCQk0OUJFMzBENzEzRDk3NEM5MDAzODA4
QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaWRsICovLAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAy
NkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAw
MjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAogCQkJCUNFQTM5NDlBMTFENDVDREEwMDMw
OTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovLApAQCAtMjE5NTEsNiArMjE5Nzks
NyBAQAogCQkJCUE4MjZFOEFFMEExQThGMjMwMENEMUJCNiAvKiBKU09wdGlvbkNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBENTc0MTBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVy
Zmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEJCMTEwNDQ5RkZBMDBFQUVCNTIg
LyogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJFMzBGNDEz
RDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMjE5NzEsNiArMjIwMDAsNyBAQAog
CQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3Jr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDE2OTA2MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1No
YXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkUzMEY2MTNEOTc2NDYw
MDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQx
NUQ1NjEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3NTQxNUQ1ODEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTVENUExMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNo
SW5wdXRSZXN1bHRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyMjM5LDggKzIyMjY5LDggQEAK
IAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTAwQTYyOUMxMTNEMEJFQzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJh
c2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwQzYwRTNGMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJr
dXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEM2MEU0MjEz
RDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8qIE1hcmt1cFRva2VuaXplcklubGluZU1ldGhv
ZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRo
TUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0Ig
LyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3MkY3MTA1
OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTIyMzg0LDYgKzIyNDE0LDcgQEAKIAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNG
NDkgLyogUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NzEwRDAwQkYyMjAwNzFC
NzgyIC8qIFBhdHRlcm5BdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2NTBC
MDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDlCRTMwRDkxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4QTdDQzk2QjEyMDc2RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEE4NDREMDUxMUQzQzE4RTAwMTQwNjVDIC8qIFBlcmZvcm1hbmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QUY0RTU1NjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFu
Y2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjY3LDggKzIyNjk4LDggQEAKIAkJ
CQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcyIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5j
bHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIy
NTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzFDMzBCOTEzODEyNjVF
MDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUgLyogU2hhZG93VmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyQUZGQzk0MEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjY3OSw2ICsyMjcxMCw3IEBACiAJCQkJNDFEMTY4RTgxMDIyNkU4OTAw
OUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDE2
OEVBMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUQxNjhFRTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFk
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJFMzBEQjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFs
aW5nQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYy
NiAvKiBTaW1wbGVGb250RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzMjdENjAxMUEzM0Ey
QjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0Qw
RUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjQ5MjYsNiArMjQ5NTgsOCBAQAogCQkJCUE4MjZFQzQ4MEExQjBDQkUwMENEMUJCNiAv
KiBKU09wdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzQwMEE1
Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTEyODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0OUJFMzBGMzEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUJFMzBEMjEzRDk3NDdCMDAzODA4QTkgLyog
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTlBNTg3NDEx
RTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
QTlBNTg3MDExRTg0QzM2MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOEE5QTU4ODcxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFu
Y2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNDk0OSw2ICsyNDk4Myw3IEBACiAJCQkJ
NDFEMDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRDE2OTA1MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRDRDhEODIxMDZCNTI5MDAwQTQ2RDIzIC8qIEpT
U2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QkUzMEY1MTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc1NDE1RDU1MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzU0MTVENTcxMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRS
ZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTVENTkxMjlBQjJEMjAwM0FENjY5IC8q
IEpTU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUzNTYsNiAr
MjUzOTEsNyBAQAogCQkJCUE4RkE2RTVFMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjQwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRv
Y3VtZW50SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlCRTMwRDgxM0Q5NzRDOTAwMzgw
OEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBN0NDOTcwMTIw
NzZGOEEwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThB
ODQ0RDA0MTFEM0MxOEUwMDE0MDY1QyAvKiBQZXJmb3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QUY0RTU1NTExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMjU1NzgsOCArMjU2MTQsOCBAQAogCQkJCTQ5ODc3MEU4MTI0
MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYx
MkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2
NkNGOEMxMzgxMEUwQzAwMTFBMEIzIC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUE3MUMzMEI4MTM4MTI2NUUwMERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25T
ZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBCMjU5NjUg
LyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzFDMzBCODEzODEyNjVFMDBE
QkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTZEMTY5NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVy
aWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDM0MzJkNzQ0ZjJiZmY4OTVjYzQxMTEy
YmQzNzM1ZTAzMGRjNmJlN2IuLjRlODQzNjc4MDA2NWVmMDRmYzMzNzU0MzBjY2M5ZGU0ZDI5YjQw
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNDgsNiArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIG1lZGlhU3RyZWFtRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFi
bGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWVkaWFTdHJlYW1FbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGlzTWVkaWFTdHJlYW1FbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgc3RhdGljIGJv
b2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFi
bGVkOyB9CisgICAgc3RhdGljIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4g
aXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFFVT1RBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5k
ZXggNTlhOTBiZmNlYmM1ZWQ4NGIyZWQ4ZTJkMTFkNjcyZTdmMzM3ZTQ4YS4uNWUxNTgxNTIxNjdk
NzMxNmRhNTM5NDIxYzI0MjExMTcxZTY4ZjQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMjMsNiArMTIzLDcgQEAKICNp
bmNsdWRlICJKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAiCisjaW5jbHVkZSAi
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVu
Y3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWRjNjkwN2EyZjhmYTM3MmNmMzdlODZmZjE2MDcwNmJkMmU5ZDdjZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU1BlZXJDb25u
ZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiRE9N
V2luZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3Rv
bS5oIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpT
UGVlckNvbm5lY3Rpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTUGVlckNvbm5lY3Rpb25D
b25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTUGVlckNvbm5lY3Rpb25D
b25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKworICAgIFN0cmluZyBjb25maWd1cmF0aW9u
ID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKworICAgIFJlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsbGlu
Z0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFj
az4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAg
ICBGcmFtZSogZnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSktPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyID0gZnJhbWUgPyBmcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIo
KSA6IDA7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uOworICAg
IGlmIChmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIHBlZXJDb25uZWN0aW9uID0gZnJhbWVDb250
cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uLCBzaWduYWxsaW5nQ2Fs
bGJhY2spOworCisgICAgaWYgKCFwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09i
amVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBwZWVyQ29ubmVj
dGlvbi5nZXQoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCmluZGV4IDAzNGQ1NDc1OWQ2ZmZkYzljY2ZlNWY3Yzc0OGJkNGY5ZDMwNDM4YzUu
LjA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFlN2Y1MmQwN2UzZGY4MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2lu
Y2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJWOE5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIlY4UGVlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKICNp
bmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQuaCIKQEAgLTQ1NCw2ICs0NTUsOSBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2Jq
ZWN0KEV2ZW50VGFyZ2V0KiB0YQogCiAgICAgaWYgKE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJn
ZXQtPnRvTWVkaWFTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RyZWFtKTsKKworICAg
IGlmIChQZWVyQ29ubmVjdGlvbiogcGVlckNvbm5lY3Rpb24gPSB0YXJnZXQtPnRvUGVlckNvbm5l
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24pOwogI2VuZGlmCiAK
ICAgICBBU1NFUlQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ5NTM4
YjA4NzgyMjM0YTdmYTk4MDc4Y2QxZGJkN2JjNTI4Y2FkOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNw
cApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVjhQZWVyQ29ubmVjdGlvbi5o
IgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgor
I2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFNpZ25hbGluZ0NhbGxiYWNrLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4UGVlckNvbm5l
Y3Rpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sK
KyAgICBJTkNfU1RBVFMoIkRPTS5QZWVyQ29ubmVjdGlvbi5Db25zdHJ1Y3RvciIpOworCisgICAg
aWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
RE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwg
VjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgaW50IGFyZ0xlbmd0aCA9IGFyZ3MuTGVuZ3Ro
KCk7CisgICAgaWYgKGFyZ0xlbmd0aCAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigi
VGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVudHMuIiwgVjhQ
cm94eTo6U3ludGF4RXJyb3IpOworCisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7
CisgICAgQXRvbWljU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XS0+VG9TdHJpbmcoKSk7CisgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkpCisg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkpOwor
CisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJh
Y2s+IHNpZ25hbGxpbmdDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4U2ln
bmFsaW5nQ2FsbGJhY2s+KGFyZ3NbMV0sIHN1Y2NlZWRlZCk7CisgICAgaWYgKCFzdWNjZWVkZWQg
fHwgIXNpZ25hbGxpbmdDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBQ
ZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciBtdXN0IGJlIGdpdmVuIGEgU2lnbmFsaW5nQ2FsbGJh
Y2sgY2FsbGJhY2suIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIEZyYW1lKiBmcmFtZSA9
IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4dCgpOworICAgIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIgPSBmcmFtZSA/IGZyYW1lLT5tZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIDogMDsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlv
bj4gcGVlckNvbm5lY3Rpb247CisgICAgaWYgKGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgcGVl
ckNvbm5lY3Rpb24gPSBmcmFtZUNvbnRyb2xsZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZp
Z3VyYXRpb24sIHNpZ25hbGxpbmdDYWxsYmFjayk7CisKKyAgICBpZiAoIXBlZXJDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7
CisgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24ucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDNhZDE1NjZlNjczZDI3
ZmI5MTIwOWJlNjZhNGZkOTczMTk3YTZkZjcuLjUzNDIzNzY1NzIyZWZiMGI2YTkxNzZlNmM2OWVm
ZTcyNWZjN2IyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtOTksNiArOTks
NyBAQAogI2luY2x1ZGUgIk9wdGlvbkdyb3VwRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiT3ZlcmZs
b3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiUGFnZVRyYW5zaXRpb25FdmVudC5jcHAiCisjaW5jbHVk
ZSAiUGVlckNvbm5lY3Rpb24uY3BwIgogI2luY2x1ZGUgIlBlbmRpbmdTY3JpcHQuY3BwIgogI2lu
Y2x1ZGUgIlBvcFN0YXRlRXZlbnQuY3BwIgogI2luY2x1ZGUgIlBvc2l0aW9uLmNwcCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCmluZGV4IDlkZDE4MzcwYTRkZDcxZjllM2M0ZDNiZjcyNDM4ZmJmYWM1
MDgyZmUuLmQ4MTIzZTg0MGE5YTIxZGZhOTAwNzAyYzUwZDAwZTA0N2I1ZmRhMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaApAQCAtMTgwLDYgKzE4MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwKKyAgICBtYWNybyhjb25u
ZWN0aW5nKSBcCisgICAgbWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFjcm8ocmVtb3Zlc3RyZWFt
KSBcCisgICAgXAorCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBj
bGFzcyBFdmVudE5hbWVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGEyOGJk
YjEzZDJjZTgyZmE2OTIzZjkzYjM2YmZhMTcwN2YzM2UwNzAuLmNiOGRkMmQ4NmYwZDNhNjc5ZDkz
ODliN2FmNzg5NWZmMDZhNTk5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAt
MjE1LDYgKzIxNSwxMSBAQCBMb2NhbE1lZGlhU3RyZWFtKiBFdmVudFRhcmdldDo6dG9Mb2NhbE1l
ZGlhU3RyZWFtKCkKIHsKICAgICByZXR1cm4gMDsKIH0KKworUGVlckNvbm5lY3Rpb24qIEV2ZW50
VGFyZ2V0Ojp0b1BlZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgog
CiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNh
cHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGJjYzc1OGMzMDM3MTM2MmZlYmMx
NzI3Y2I4MjJhOTcxYzVmYmM0NmYuLjgwZTFhZjVjMjJkMTgwNDI0N2Y2OTBiMjkwZTNlZDY0M2Rh
ZGExOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwog
ICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKKyAgICBjbGFzcyBQZWVyQ29ubmVjdGlvbjsKICAgICBj
bGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CkBAIC0xNTIsNiArMTUzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgICAgIHZpcnR1YWwgTWVk
aWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKICAgICAgICAgdmlydHVhbCBMb2NhbE1lZGlhU3Ry
ZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKKyAgICAgICAgdmlydHVhbCBQZWVyQ29ubmVjdGlv
biogdG9QZWVyQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMyNWJlNGI5NWY4OWU3
NTUxMjljZjIwZDVmOWVlMjAwZGE2OTIxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzNzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0
cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VF
dmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aWduYWxpbmdDYWxsYmFjay5oIgorI2luY2x1ZGUgIlN0cmVhbUV2ZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEQ+CitjbGFzcyBT
aW1wbGVEaXNwYXRjaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChUOjoqQ2FsbGJhY2spKGNvbnN0IEQmKTsKKwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNpbXBsZURpc3BhdGNoVGFzaz4gY3JlYXRlKFBhc3NSZWZQ
dHI8VD4gb2JqZWN0LCBDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgRCYgZGF0YSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2ltcGxlRGlzcGF0Y2hUYXNrKG9iamVjdCwgY2Fs
bGJhY2ssIGRhdGEpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgeworICAgICAgICAobV9vYmplY3QuZ2V0KCktPipt
X2NhbGxiYWNrKShtX2RhdGEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaW1wbGVEaXNwYXRj
aFRhc2soUGFzc1JlZlB0cjxUPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBEJiBk
YXRhKQorICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgLCBtX2NhbGxiYWNrKGNh
bGxiYWNrKQorICAgICAgICAsIG1fZGF0YShkYXRhKSB7IH0KKworICAgIFJlZlB0cjxUPiBtX29i
amVjdDsKKyAgICBDYWxsYmFjayBtX2NhbGxiYWNrOworICAgIEQgbV9kYXRhOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KK2NsYXNzIERpc3Bh
dGNoVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIHZvaWQgKFQ6OipDYWxsYmFjaykoY29uc3QgQTEmLCBQYXNzUmVmUHRyPEEy
Pik7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxEaXNwYXRjaFRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFQ+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IEExJiBhcmcxLCBQYXNzUmVm
UHRyPEEyPiBhcmcyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEaXNwYXRj
aFRhc2sob2JqZWN0LCBjYWxsYmFjaywgYXJnMSwgYXJnMikpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAg
ICAgIChtX29iamVjdC5nZXQoKS0+Km1fY2FsbGJhY2spKG1fYXJnMSwgbV9hcmcyKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgRGlzcGF0Y2hUYXNrKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBDYWxs
YmFjayBjYWxsYmFjaywgY29uc3QgQTEmIGFyZzEsIFBhc3NSZWZQdHI8QTI+IGFyZzIpCisgICAg
ICAgIDogbV9vYmplY3Qob2JqZWN0KQorICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisg
ICAgICAgICwgbV9hcmcxKGFyZzEpCisgICAgICAgICwgbV9hcmcyKGFyZzIpIHsgfQorCisgICAg
UmVmUHRyPFQ+IG1fb2JqZWN0OworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgQTEgbV9h
cmcxOworICAgIFJlZlB0cjxBMj4gbV9hcmcyOworfTsKKworCitQYXNzUmVmUHRyPFBlZXJDb25u
ZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0
aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxsaW5nQ2FsbGJhY2spCit7
CisgICAgLy8gVE9ETzogVmVyaWZ5IGNvbmZpZ3VyYXRpb24KKworICAgIFJlZlB0cjxQZWVyQ29u
bmVjdGlvbj4gcGMgPSBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oZnJhbWVDb250cm9sbGVy
LCBpZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsbGluZ0NhbGxiYWNrKSk7CisgICAgcGMtPmluaXQo
KTsKKyAgICByZXR1cm4gcGM7Cit9CisKK1BlZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0
IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFj
az4gc2lnbmFsbGluZ0NhbGxiYWNrKQorICAgIDogUGVlckNvbm5lY3Rpb25DbGllbnQoZnJhbWVD
b250cm9sbGVyLCBpZCkKKyAgICAsIG1fY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKQorICAg
ICwgbV9yZWFkeVN0YXRlKE5FVykKKyAgICAsIG1fc2lnbmFsbGluZ0NhbGxiYWNrKHNpZ25hbGxp
bmdDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoZnJhbWVDb250cm9sbGVyKTsKKyAgICBtX2xvY2Fs
U3RyZWFtTGlzdCA9IE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCk7CisgICAgbV9yZW1vdGVTdHJl
YW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKTsKK30KKwordm9pZCBQZWVyQ29ubmVj
dGlvbjo6aW5pdCgpCit7CisgICAgaWYgKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIgPSBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBmcmFt
ZUNvbnRyb2xsZXItPm5ld1BlZXJDb25uZWN0aW9uKG1fY2xpZW50SWQsIG1fY29uZmlndXJhdGlv
bik7CisKKyAgICBwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKTsKK30KKworUGVlckNvbm5lY3Rp
b246On5QZWVyQ29ubmVjdGlvbigpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0
PiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkKK3sKKyAgICByZXR1cm4gbV9sb2NhbFN0
cmVhbUxpc3Q7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0PiBQZWVyQ29ubmVjdGlv
bjo6cmVtb3RlU3RyZWFtcygpCit7CisgICAgcmV0dXJuIG1fcmVtb3RlU3RyZWFtTGlzdDsKK30K
KworLy8gU2VuZHMgdGhlIG1lc3NhZ2UgZG93biB0byB0aGUgdXNlciBhZ2VudCBpbXBsZW1lbnRh
dGlvbi4KK3ZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0
IEF0b21pY1N0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1f
cmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5wcm9jZXNzU2ln
bmFsaW5nTWVzc2FnZShtX2NsaWVudElkLCBtZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVj
dGlvbjo6c2VuZChjb25zdCBBdG9taWNTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIHV0Zjgg
PSB0ZXh0LnN0cmluZygpLnV0ZjgoKTsKKyAgICBpZiAodXRmOC5sZW5ndGgoKSA+IDUwNCkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpLT5tZXNzYWdlKG1fY2xpZW50SWQsIHRleHQpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3Ry
ZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NF
RCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlzdCBz
aW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQdHI8
TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisKKyAgICBpZiAobV9sb2NhbFN0cmVhbUxpc3QtPmNv
bnRhaW5zKHMpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RyZWFtTGlzdC0+YWRk
KHMpOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0cmVhbShtX2NsaWVudElkLCBzKTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIFRoZSBTdHJlYW0gb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8g
ZXhpc3Qgc2luY2UgU3RyaWN0VHlwZUNoZWNraW5nIGlzIHNldCBpbiB0aGUgaWRsLgorCisgICAg
UmVmUHRyPE1lZGlhU3RyZWFtPiBzID0gc3RyZWFtOworCisgICAgaWYgKCFtX2xvY2FsU3RyZWFt
TGlzdC0+Y29udGFpbnMocykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxTdHJlYW1M
aXN0LT5yZW1vdmUocyk7CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkK
KyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+cmVtb3ZlU3RyZWFtKG1fY2xp
ZW50SWQsIHMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpjbG9zZShFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKCktPmNsb3NlUGVlckNvbm5lY3Rpb24obV9jbGllbnRJZCk7CisKKyAgICBtX3JlYWR5
U3RhdGUgPSBDTE9TRUQ7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9uTmVnb3RpYXRpb25T
dGFydGVkKCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBORUdPVElBVElORzsKKworICAgIHBvc3RT
aW1wbGVFdmVudChldmVudE5hbWVzKCkuY29ubmVjdGluZ0V2ZW50KTsKK30KKwordm9pZCBQZWVy
Q29ubmVjdGlvbjo6b25OZWdvdGlhdGlvbkRvbmUoKQoreworICAgIG1fcmVhZHlTdGF0ZSA9IEFD
VElWRTsKKworICAgIHBvc3RTaW1wbGVFdmVudChldmVudE5hbWVzKCkub3BlbkV2ZW50KTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c3RyZWFtQWRkZWQoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBt
X3JlbW90ZVN0cmVhbUxpc3QtPmFkZChzKTsKKyAgICBwb3N0U3RyZWFtQWRkZWRFdmVudChzKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c3RyZWFtUmVtb3ZlZChjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmVhbUxhYmVsKQoreworICAgIEFTU0VSVChtX3JlbW90ZVN0cmVhbUxpc3QtPmNvbnRh
aW5zKHN0cmVhbUxhYmVsKSk7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IG1f
cmVtb3RlU3RyZWFtTGlzdC0+Z2V0KHN0cmVhbUxhYmVsKTsKKyAgICBtX3JlbW90ZVN0cmVhbUxp
c3QtPnJlbW92ZShzdHJlYW0pOworICAgIHBvc3RTdHJlYW1SZW1vdmVkRXZlbnQoc3RyZWFtKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6b25NZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2FnZUV2ZW50KG1lc3NhZ2UpOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpvblNpZ25hbGluZ01lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIG1fc2lnbmFsbGluZ0NhbGxiYWNrLT5oYW5kbGVFdmVudChtZXNzYWdlLCB0
aGlzKTsKK30KKworUGVlckNvbm5lY3Rpb24qIFBlZXJDb25uZWN0aW9uOjp0b1BlZXJDb25uZWN0
aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
UGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpID8gbWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIDogMDsKK30KKworRXZlbnRUYXJnZXRE
YXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1f
ZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9uOjpl
bnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQor
ICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXND
b250ZXh0VGhyZWFkKCkpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1lc3NhZ2UpOworICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBp
bnQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246
OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCAwLCBkYXRhKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b246OnBvc3RTaWduYWxpbmdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKyAgICBB
U1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisKKyAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNoVGFzazxQ
ZWVyQ29ubmVjdGlvbiwgQXRvbWljU3RyaW5nPjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudCwgbWVzc2FnZSkpOworfQorCit2b2lkIFBlZXJDb25u
ZWN0aW9uOjpwb3N0U3RyZWFtQWRkZWRFdmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJl
YW0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQo
KSk7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIEF0
b21pY1N0cmluZywgTWVkaWFTdHJlYW0+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpk
aXNwYXRjaFN0cmVhbUV2ZW50LCBldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIHMpKTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbVJlbW92ZWRFdmVudChQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7CisgICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVudCBh
c3luY2hyb25vdXNseS4gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBkdXJp
bmcgc2h1dGRvd24sCisgICAgLy8gYW5kIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1heSBi
ZSBub3QgYXZhaWxhYmxlIGluIHRoZSBNZWRpYSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIFJlZlB0cjxNZWRp
YVN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RU
YXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgQXRvbWljU3RyaW5nLCBNZWRpYVN0cmVh
bT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQsIGV2
ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgcykpOworfQorCit2b2lkIFBlZXJDb25uZWN0
aW9uOjpwb3N0U2ltcGxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCit7Cisg
ICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVudCBhc3luY2hyb25vdXNseS4gRG9uJ3QgYXNzZXJ0
IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBkdXJpbmcgc2h1dGRvd24sCisgICAgLy8gYW5kIHRo
ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1heSBiZSBub3QgYXZhaWxhYmxlIGluIHRoZSBNZWRp
YSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4
dFRocmVhZCgpKTsKKworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soU2lt
cGxlRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBBdG9taWNTdHJpbmc+OjpjcmVhdGUodGhp
cywgJlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50LCBldmVudE5hbWUpKTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKCkKK3sKKyAg
ICAvLyBEaXNwYXRjaCBhIGNsb3NlIGV2ZW50IGFzeW5jaHJvbm91c2x5LiBEb24ndCBhc3NlcnQg
c2luY2UgdGhpcyBtYXkgYmUgY2FsbGVkIGR1cmluZyBzaHV0ZG93biwKKyAgICAvLyBhbmQgdGhl
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWF5IGJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIE1lZGlh
IFN0cmVhbSBjYXNlLgorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAg
ICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0
VGhyZWFkKCkpOworCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhTaW1w
bGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIGludD46OmNyZWF0ZSh0aGlzLCAmUGVlckNv
bm5lY3Rpb246OmRpc3BhdGNoU3RhcnROZWdvdGlhdGlvblRhc2ssIDApKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCit7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gZCA9IGRhdGE7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShhZG9wdFB0cjxNZXNzYWdlUG9ydEFycmF5PigwKSwgZCkpOworfQorCit2b2lkIFBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBtX3NpZ25hbGxpbmdDYWxsYmFjay0+aGFuZGxlRXZlbnQobWVzc2FnZSwg
dGhpcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzID0gc3RyZWFtOworICAgIGRpc3BhdGNoRXZlbnQo
U3RyZWFtRXZlbnQ6OmNyZWF0ZShuYW1lLCBmYWxzZSwgZmFsc2UsIHMpKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSkKK3sKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBm
YWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5l
Z290aWF0aW9uVGFzayhjb25zdCBpbnQmKQoreworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zdGFydE5l
Z290aWF0aW9uKG1fY2xpZW50SWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMTM1MDRjM2ZmYzJkYTM1ZDEwMWYxMjlhNjViYTIwOWE5YjMxZjRjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmgKQEAg
LTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGVlckNvbm5lY3Rpb25faAor
I2RlZmluZSBQZWVyQ29ubmVjdGlvbl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVh
bUxpc3Q7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOworY2xhc3MgU2lnbmFsaW5nQ2FsbGJhY2s7CisKK2NsYXNzIFBlZXJDb25uZWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24+LAorICAgIHB1YmxpYyBFdmVu
dFRhcmdldCwKKyAgICBwdWJsaWMgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25u
ZWN0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBNdXN0IG1hdGNoIHRoZSBjb25zdGFudHMg
aW4gdGhlIC5pZGwgZmlsZS4KKyAgICBlbnVtIHsKKyAgICAgICAgTkVXID0gMCwKKyAgICAgICAg
TkVHT1RJQVRJTkcgPSAxLAorICAgICAgICBBQ1RJVkUgPSAyLAorICAgICAgICBDTE9TRUQgPSAz
CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVhdGUo
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
Y29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOworICAgIHZpcnR1
YWwgflBlZXJDb25uZWN0aW9uKCk7CisKKyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4g
bG9jYWxTdHJlYW1zKCk7CisgICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IHJlbW90ZVN0
cmVhbXMoKTsKKworICAgIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX3JlYWR5U3RhdGU7IH0KKworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoY29u
c3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5k
KGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRk
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCByZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3Nh
Z2UpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFtKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7CisKKyAgICAv
LyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rp
b24oKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owor
CisgICAgLy8gQ2FsbGJhY2tzCisgICAgdm9pZCBvbk1lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShjb25zdCBBdG9taWNTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoKTsKKyAgICB2b2lk
IG9uTmVnb3RpYXRpb25Eb25lKCk7CisgICAgdm9pZCBzdHJlYW1BZGRlZChQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPik7CisgICAgdm9pZCBzdHJlYW1SZW1vdmVkKGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyZWFtTGFiZWwpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OnJl
ZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3Byb3Rl
Y3RlZDoKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCitwcml2YXRlOgorICAgIFBlZXJDb25u
ZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBBdG9taWNT
dHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAg
ICB2b2lkIGluaXQoKTsKKworICAgIHZvaWQgcG9zdFNpbXBsZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RTaWduYWxpbmdFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcG9zdFN0cmVhbUFkZGVkRXZlbnQoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgcG9zdFN0cmVhbVJlbW92ZWRFdmVudChQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBwb3N0U3RhcnROZWdvdGlhdGlvblRhc2so
KTsKKworICAgIHZvaWQgZGlzcGF0Y2hTaW1wbGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7CisgICAgdm9pZCBkaXNwYXRjaFNp
Z25hbGluZ0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGRp
c3BhdGNoU3RyZWFtRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPik7CisgICAgdm9pZCBkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25UYXNrKGNvbnN0
IGludCYpOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVu
dFRhcmdldERhdGE7CisKKyAgICBBdG9taWNTdHJpbmcgbV9jb25maWd1cmF0aW9uOworICAgIHVu
c2lnbmVkIHNob3J0IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+
IG1fc2lnbmFsbGluZ0NhbGxiYWNrOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9j
YWxTdHJlYW1MaXN0OworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFt
TGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BlZXJDb25uZWN0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzVlMWNiYWQxMDkxMjU5MDAzNmU4ZjBk
ODY5NjZlNGU3ODYwMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bl
ZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJF
QU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1
bmN0aW9uLAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgVjhDdXN0
b21Db25zdHJ1Y3RvciwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIFBlZXJDb25uZWN0aW9u
IHsKKyAgICAgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVz
c2FnZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IE5FVyA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5F
R09USUFUSU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0xPU0VEID0gMzsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgdm9pZCBz
ZW5kKGluIERPTVN0cmluZyB0ZXh0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3Ry
ZWFtIHN0cmVhbSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBb
U3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJl
YW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxvY2FsU3RyZWFtczsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZv
aWQgY2xvc2UoKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
bWVzc2FnZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07Cisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOworCisgICAgICAg
IC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9v
bGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxpbmdDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YTMw
ZTcxMjY3NTRhNTFjMzI4YjI4NzQ3NjI2MGFiZDhmYzRiODEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaApAQCAtMCwwICsxLDQ2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNpZ25hbGluZ0NhbGxiYWNrX2gKKyNkZWZpbmUgU2lnbmFs
aW5nQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVlckNvbm5l
Y3Rpb247CisKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2ln
bmFsaW5nQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TaWduYWxpbmdDYWxsYmFj
aygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcmLCBQZWVy
Q29ubmVjdGlvbiopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBTaWduYWxpbmdDYWxsYmFja19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaWRsIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTg4
YTY0ZDBjZjI3ODI5Y2JlMTQxNjM1ZWY4OTA4NGRhM2ZlNWIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApAQCAtMCwwICsxLDMzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHkK
KyAgICBdIFNpZ25hbGluZ0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChp
biBET01TdHJpbmcgbWVzc2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMGYzMTYyZjFkNzgxYzExM2M5N2Vj
NGQ0Zjk3M2VkYjMzZDk1NmU3MS4uNWUzOTIxZmZlYjM1YzE4NTdmZmNiMWM0NTEyNzk2YjQ4MTk1
ODVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMzM3LDYgKzMzNyw4IEBAIG1v
ZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPURFVklDRV9PUklF
TlRBVElPTixFbmFibGVkQXRSdW50aW1lXSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q29uc3RydWN0
b3IgRGV2aWNlT3JpZW50YXRpb25FdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25h
bD1ERVZJQ0VfT1JJRU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbmRl
dmljZW9yaWVudGF0aW9uOwogCisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNLEVuYWJsZWRBdFJ1bnRpbWVdIFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IgUGVlckNv
bm5lY3Rpb247CisKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgICAgIFtD
dXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAppbmRleCAwM2RlZGZkODhjNGZk
MzE4YTc4MDMxNjVhZDE5MTE5ZWNmY2I1Y2M5Li5iZjhhYzEwMGVhMTRiNjhiMDE4OTQwYWFiNzBj
ZWQwMTNiNWQ5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCkBA
IC01NSw2ICs1NSwyNyBAQCBwdWJsaWM6CiAgICAgLy8gRW5hYmxlL2Rpc2FibGUgYW4gdHJhY2su
CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKGNvbnN0IFN0cmlu
ZyYgdHJhY2tJZCwgYm9vbCBlbmFibGVkKSA9IDA7CiAKKyAgICAvLyBTaWduYWxpbmcgbWVzc2Fn
ZSBmcm9tIHBlZXIgY29ubmVjdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1NpZ25hbGlu
Z01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAw
OworCisgICAgLy8gTWVzc2FnZSBmcm9tIHBlZXIgY29ubmVjdGlvbi4KKyAgICB2aXJ0dWFsIHZv
aWQgbWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9
IDA7CisKKyAgICAvLyBBZGQgYSBzdHJlYW0gdG8gYSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmly
dHVhbCB2b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBz
dHJlYW1MYWJlbCkgPSAwOworCisgICAgLy8gUmVtb3ZlIGEgc3RyZWFtIGZyb20gYSBwZWVyIGNv
bm5lY3Rpb24uCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rp
b25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAwOworCisgICAgLy8gQSBQZWVyQ29u
bmVjdGlvbiBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbmV3UGVl
ckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJh
dGlvbikgPSAwOworCisgICAgLy8gUGVlciBjb25uZWN0aW9uIGlzIGJlaW5nIGNsb3NlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkg
PSAwOworCisgICAgLy8gU3RhcnQgbmVnb3RpYXRpb24uCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0
TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpID0gMDsKKwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmluZGV4IGFhZGNmNjBmMjczNWE0ZWE3MzVj
MWE4OTQ1NDdlYzZkODA5YzMxYWQuLmJjMmEyZjE0NGM5ZmE3MGM3ZTdiOTNjOTRlNDVmNjA4YTZl
NDcyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5j
cHAKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUT0RPOiBU
aGlzIGlzIHVzZWQgZm9yIGhvbGRpbmcgbGlzdCBvZiBQZWVyQ29ubmVjdGlvbiBhcyB3ZWxsLAor
Ly8gc28gcmVuYW1lIGNsYXNzIGlzIGluIG9yZGVyLgogY2xhc3MgTWVkaWFTdHJlYW1Db250cm9s
bGVyOjpSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBSZXF1ZXN0KCkKQEAgLTU1LDYgKzU3LDcgQEAg
cHJpdmF0ZToKIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKE1l
ZGlhU3RyZWFtQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X25leHRHbG9iYWxSZXF1ZXN0SWQoMSkKKyAgICAsIG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9u
SWQoMSkKIHsKIH0KIApAQCAtODksNiArOTIsOCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcgog
CiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBmcmFtZVN0cmVhbXMuYmVn
aW4oKTsgaXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgpOyArK2l0KQogICAgICAgICBtX3N0cmVhbXMu
cmVtb3ZlKCppdCk7CisKKyAgICAvLyBUT0RPOiBBZGQgZm9yIHBlZXIgY29ubmVjdGlvbgogfQog
CiBpbnQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsSWQs
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIpCkBAIC0xNTIsNiAr
MTU3LDEzMCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtRmFpbGVkKGNvbnN0
IFN0cmluZyYgc3RyZWFtTGFiZWwpCiAgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFtTGFiZWwp
LT5zdHJlYW1GYWlsZWQoc3RyZWFtTGFiZWwpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6b25TaWduYWxpbmdNZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5j
ZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICBpZiAo
bV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7
CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlv
bnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJD
b25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJh
bWVDb250cm9sbGVyKCktPm9uU2lnbmFsaW5nTWVzc2FnZShwZWVyQ29ubmVjdGlvbi5sb2NhbElk
KCksIG1lc3NhZ2UpOworICAgIH0KK30KKworaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZnJh
bWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQ
ZWVyQ29ubmVjdGlvbklkKC0xKTsKKyAgICAvLyBUT0RPOiBCZXR0ZXIgd2F5IHRvIGZpbmQgdGhl
IGdsb2JhbCBJRCBpbiB0aGUgbWFwPworICAgIGZvciAoUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXQg
PSBtX3BlZXJDb25uZWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3BlZXJDb25uZWN0aW9ucy5lbmQo
KTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5mcmFtZUNvbnRyb2xsZXIoKSA9PSBm
cmFtZUNvbnRyb2xsZXIgJiYgaXQtPnNlY29uZC5sb2NhbElkKCkgPT0gZnJhbWVQZWVyQ29ubmVj
dGlvbklkKSB7CisgICAgICAgICAgICBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGl0LT5maXJzdDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYWdlUGVl
ckNvbm5lY3Rpb25JZDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnByb2Nlc3NT
aWduYWxpbmdNZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xs
ZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25u
ZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlm
IChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPnByb2Nlc3NT
aWduYWxpbmdNZXNzYWdlKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZy
YW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5l
Y3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBt
X2NsaWVudC0+bWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gRG9uJ3Qg
YXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVk
CisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVj
dGlvbklkKSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVl
ckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFT
U0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25u
ZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJ
ZCgpLCBtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjph
ZGRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkK
K3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0
aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChw
YWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPmFkZFN0cmVhbShw
YWdlUGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6b25BZGRTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tMaXN0PiB0cmFja3MpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBj
b250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICBjb25z
dCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFt
ZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigp
LT5vbkFkZFN0cmVhbShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIHN0cmVhbUxhYmVsLCB0cmFj
a3MpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVh
bShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQ
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAg
IGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChm
cmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVy
Q29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlU3RyZWFtKHBhZ2VQ
ZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250
cm9sbGVyOjpvblJlbW92ZVN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNp
bmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYg
KG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkg
eworICAgICAgICAvLyBUT0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJs
ZT8KKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0
aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVl
ckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5m
cmFtZUNvbnRyb2xsZXIoKS0+b25SZW1vdmVTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgp
LCBzdHJlYW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
bmV3UGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJv
bGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25m
aWd1cmF0aW9uKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IG1fbmV4dEdsb2Jh
bFBlZXJDb25uZWN0aW9uSWQrKzsKKyAgICBtX3BlZXJDb25uZWN0aW9ucy5hZGQocGFnZVBlZXJD
b25uZWN0aW9uSWQsIFJlcXVlc3QoZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBmcmFtZUNvbnRyb2xs
ZXIpKTsKKworICAgIG1fY2xpZW50LT5uZXdQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rp
b25JZCwgY29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpj
bG9zZVBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRy
b2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29u
bmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBpZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0g
LTEpCisgICAgICAgIG1fY2xpZW50LT5jbG9zZVBlZXJDb25uZWN0aW9uKHBhZ2VQZWVyQ29ubmVj
dGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0YXJ0TmVnb3RpYXRp
b24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1l
UGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFt
ZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0
aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9j
bGllbnQtPnN0YXJ0TmVnb3RpYXRpb24ocGFnZVBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJh
bWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25u
ZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAg
Y29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29u
dHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24u
ZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xs
ZXIoKS0+b25OZWdvdGlhdGlvblN0YXJ0ZWQocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpKTsKKyAg
ICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZShp
bnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNp
bmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYg
KG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkg
eworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rp
b25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVy
Q29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZy
YW1lQ29udHJvbGxlcigpLT5vbk5lZ290aWF0aW9uRG9uZShwZWVyQ29ubmVjdGlvbi5sb2NhbElk
KCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJv
bGxlci5oCmluZGV4IDEwYWM0Y2VmMTFjOTNjZmZkMTk0NjIyZjQ3NjM3Njk2NTJkM2FiMTAuLjAw
ZDFjZjBmYTczMjBhY2MxNTkyYTgxMzI5MzgyZjA3NTJjNzE1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApAQCAtNjAsMTkgKzYwLDQwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdh
dG9yVXNlck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7CiAgICAgdm9pZCBzdHJlYW1GYWlsZWQoY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CiAKKyAgICAvKiBKUyAtPiBVQSAqLworICAgIHZvaWQg
bmV3UGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQ
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24pOworICAg
IHZvaWQgc3RhcnROZWdvdGlhdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBm
cmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2Uo
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgbWVzc2FnZShNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBhZGRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyZWFtTGFiZWwpOworICAgIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLyogVUEg
LT4gSlMgKi8KKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbk1l
c3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgb25BZGRTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVj
dGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tMaXN0PiB0cmFja3MpOworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oaW50IGNv
bnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVs
KTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25TdGFydGVkKGludCBjb250cm9sbGVyUGVlckNvbm5l
Y3Rpb25JZCk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uRG9uZShpbnQgY29udHJvbGxlclBlZXJD
b25uZWN0aW9uSWQpOworCiBwcml2YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxv
Y2FsUmVxdWVzdElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOwogICAgIHZvaWQgcmVn
aXN0ZXJTdHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqKTsKIAorICAgIGludCBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKwogICAg
IGNsYXNzIFJlcXVlc3Q7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdD4gUmVxdWVz
dE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcio+IFN0cmVhbU1hcDsKIAogICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKICAgICBTdHJl
YW1NYXAgbV9zdHJlYW1zOworICAgIFJlcXVlc3RNYXAgbV9wZWVyQ29ubmVjdGlvbnM7CiAKICAg
ICBNZWRpYVN0cmVhbUNsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fbmV4dEdsb2JhbFJlcXVl
c3RJZDsKKyAgICBpbnQgbV9uZXh0R2xvYmFsUGVlckNvbm5lY3Rpb25JZDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5jcHAKaW5kZXggOTIwNTMzOGQwMDc3Y2IzZDE2YjFiYzFhOGQ5ZTBj
OWU2Y2U0ZTMzOS4uMTA5ZDZkYWRlNDdkNGNlMTc2MGYyNjRmYTFkNWFhZjc5MGNjM2FhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5j
cHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDYg
KzUxLDcgQEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlY29yZGVkRGF0YVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NpZ25hbGluZ1JlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAw
OwogCkBAIC0zNjAsNiArMzYzLDEyNiBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICBnZXRTdHJlYW1Gcm9tTGFi
ZWwobGFiZWwpLT5zdHJlYW1FbmRlZCgpOwogfQogCitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9u
PiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3Qg
QXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNr
PiBzaWduYWxsaW5nQ2FsbGJhY2spCit7CisgICAgaW50IGNsaWVudElkID0gbV9jbGllbnRzLmdl
dE5leHRJZCgpOworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIGNsaWVudElkLCBjb25maWd1cmF0aW9uLCBzaWdu
YWxsaW5nQ2FsbGJhY2spOworICAgIGlmIChwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgbV9jbGll
bnRzLmFkZChjbGllbnRJZCwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiBwZWVy
Q29ubmVjdGlvbjsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bmV3UGVl
ckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNv
bnRyb2xsZXIoKS0+bmV3UGVlckNvbm5lY3Rpb24odGhpcywgcGVlckNvbm5lY3Rpb25JZCwgY29u
ZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNsb3Nl
UGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYgKHBhZ2VDb250
cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPmNsb3NlUGVlckNvbm5lY3Rpb24o
dGhpcywgcGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYg
KHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnN0YXJ0TmVnb3Rp
YXRpb24odGhpcywgcGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVy
KCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKHRo
aXMsIHBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjptZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBh
Z2VDb250cm9sbGVyKCktPm1lc3NhZ2UodGhpcywgcGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0cmVhbShpbnQgcGVl
ckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtUmVmKQoreworICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RyZWFtUmVmOworICAgIEFTU0VSVChtX3N0
cmVhbXMuY29udGFpbnMoc3RyZWFtLT5sYWJlbCgpKSk7CisKKyAgICBpZiAocGFnZUNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+YWRkU3RyZWFtKHRoaXMsIHBlZXJDb25u
ZWN0aW9uSWQsIHN0cmVhbS0+bGFiZWwoKSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OnJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gc3RyZWFtUmVmKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFt
ID0gc3RyZWFtUmVmOworICAgIEFTU0VSVChtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtLT5sYWJl
bCgpKSk7CisKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xs
ZXIoKS0+cmVtb3ZlU3RyZWFtKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbS0+bGFiZWwo
KSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTWVzc2FnZShpbnQg
cGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVCht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisg
ICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBl
ZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisKKyAgICBw
ZWVyQ29ubmVjdGlvbi0+b25NZXNzYWdlKG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyOjpvbkFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlz
dD4gdHJhY2tzKQoreworICAgIEFTU0VSVCghc3RyZWFtTGFiZWwuaXNOdWxsKCkpOworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVCht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKHRoaXMs
IHN0cmVhbUxhYmVsLCB0cmFja3MpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVy
Q29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChw
ZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN0cmVhbUFkZGVkKHN0cmVh
bSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFt
KGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQor
eworICAgIEFTU0VSVCghc3RyZWFtTGFiZWwuaXNOdWxsKCkpOworICAgIEFTU0VSVChtX2NsaWVu
dHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0
KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBl
ZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9u
Kj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24t
PnN0cmVhbVJlbW92ZWQoc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpvblNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5z
KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVj
dGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlv
bj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50
cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworICAgIHBlZXJDb25uZWN0aW9uLT5vblNpZ25hbGlu
Z01lc3NhZ2UobWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
Om9uTmVnb3RpYXRpb25TdGFydGVkKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIFRP
RE86IEFzc2VydCBvciBub3Q/CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29u
bmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkt
PmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJD
b25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBl
ZXJDb25uZWN0aW9uSWQpKTsKKworICAgIHBlZXJDb25uZWN0aW9uLT5vbk5lZ290aWF0aW9uU3Rh
cnRlZCgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290aWF0
aW9uRG9uZShpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBUT0RPOiBBc3NlcnQgb3Ig
bm90PworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOwor
ICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0
aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0
YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklk
KSk7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25OZWdvdGlhdGlvbkRvbmUoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaAppbmRl
eCBiNTVlMGQwNWFhNzliMzkwNzkxNjFjMjQ1NDIwN2EwZTk4N2I3MjUwLi43NmM5YTgzYzk3ZTZi
NDVhZTJiYjg3YWEyZWZmMTM4Y2VlYjg3ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBN
ZWRpYVN0cmVhbVRyYWNrTGlzdDsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CiBjbGFzcyBQYWdl
OworY2xhc3MgUGVlckNvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjazsKIAogY2xhc3Mg
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKTsKQEAgLTY5LDYgKzcxLDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2FsTWVkaWFTdHJlYW0oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmljQ2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUGVlckNvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBm
cmFtZSBjb250cm9sbGVyIGlzIGJlaW5nIGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFTdHJlYW1D
bGllbnQgZW1iZWRkZXIuCiAgICAgICAgIC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXMg
dG8gc2VuZCBhbnkgcmVxdWlyZWQgc2h1dGRvd24gbWVzc2FnZXMuCkBAIC0xMzcsNiArMTQwLDEz
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXIoKSB7IHVucmVnaXN0
ZXJDbGllbnQodGhpcyk7IH0KICAgICB9OwogCisgICAgY2xhc3MgUGVlckNvbm5lY3Rpb25DbGll
bnQgOiBwdWJsaWMgR2VuZXJpY0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBQZWVyQ29u
bmVjdGlvbkNsaWVudChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
LCBpbnQgaWQpIDogR2VuZXJpY0NsaWVudChmcmFtZUNvbnRyb2xsZXIsIGlkKSB7IH0KKyAgICAg
ICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGlzUGVlckNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKKwog
ICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CiAgICAgdmlydHVhbCB+TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKIApAQCAtMTYwLDYgKzE3MCwzMCBAQCBwdWJsaWM6
CiAgICAgLy8gRW5hYmxlL2Rpc2FibGUgYW4gdHJhY2suCiAgICAgdm9pZCBzZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGJvb2wgZW5hYmxlZCk7CiAKKyAg
ICAvLyBDcmVhdGVzIGEgbmV3IFBlZXJDb25uZWN0aW9uIG9iamVjdC4KKyAgICBQYXNzUmVmUHRy
PFBlZXJDb25uZWN0aW9uPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25zdCBBdG9taWNTdHJpbmcm
IGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKworICAgIC8v
IFRlbGxzIHRoZSB1c2VyIGFnZW50IHRoYXQgYSBQZWVyQ29ubmVjdGlvbiBvYmplY3QgaGFzIGJl
ZW4gY3JlYXRlZC4KKyAgICB2b2lkIG5ld1BlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24pOworCisgICAgLy8gVGVsbHMg
dGhlIHVzZXIgYWdlbnQgdG8gc3RhcnQgdGhlIG5lZ290aWF0aW9uLgorICAgIHZvaWQgc3RhcnRO
ZWdvdGlhdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisKKyAgICAvLyBTaWduYWxpbmcgbWVz
c2FnZQorICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAvLyBUZXh0IG1lc3NhZ2UK
KyAgICB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVzc2FnZSk7CisKKyAgICAvLyBTdGFydCBzZW5kIGEgc3RyZWFtIHRvIHRoZSBvdGhlciBw
ZWVyCisgICAgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+KTsKKworICAgIC8vIFN0b3Agc2VuZCBhIHN0cmVhbSB0byB0aGUgb3RoZXIg
cGVlcgorICAgIHZvaWQgcmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPik7CisKKyAgICAvLyBDbG9zZSBkb3duIGFsbCBhY3Rpdml0eSBpbiB0
aGUgUGVlckNvbm5lY3Rpb24gb2JqZWN0LgorICAgIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihp
bnQgcGVlckNvbm5lY3Rpb25JZCk7CisKICAgICAvLyAtLS0gQ2FsbHMgY29taW5nIGJhY2sgZnJv
bSB0aGUgY29udHJvbGxlci4gLS0tIC8vCiAKICAgICAvLyBSZXBvcnQgdGhlIGdlbmVyYXRpb24g
b2YgYSBuZXcgbG9jYWwgc3RyZWFtLgpAQCAtMTcxLDYgKzIwNSwyNCBAQCBwdWJsaWM6CiAgICAg
Ly8gUmVwb3J0IHRoZSBlbmQgb2YgYSBzdHJlYW0gZm9yIGV4dGVybmFsIHJlYXNvbnMuCiAgICAg
dm9pZCBzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CiAKKyAgICAvLyBT
aWduYWxpbmcgbWVzc2FnZQorICAgIHZvaWQgb25TaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gVGV4dCBt
ZXNzYWdlCisgICAgdm9pZCBvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAvLyBJbmZvcm1zIHRoYXQgdGhlIG90aGVyIHBl
ZXIgaGFzIHN0YXJ0ZWQgc2VuZGluZyBhIHN0cmVhbSB0byB1cworICAgIHZvaWQgb25BZGRTdHJl
YW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWws
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcyk7CisKKyAgICAvLyBJbmZv
cm1zIHRoYXQgdGhlIG90aGVyIHBlZXIgaGFzIHN0b3BwZWQgc2VuZGluZyBhIHN0cmVhbSB0byB1
cworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpOworCisgICAgLy8gSUNFL1NUVU4vVFVSTiBldGMgbmVn
b3RpYXRpb24gc3RhcnRlZC4KKyAgICB2b2lkIG9uTmVnb3RpYXRpb25TdGFydGVkKGludCBwZWVy
Q29ubmVjdGlvbklkKTsKKworICAgIC8vIElDRS9TVFVOL1RVUk4gZXRjIG5lZ290aWF0aW9uIGRv
bmUuCisgICAgdm9pZCBvbk5lZ290aWF0aW9uRG9uZShpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisK
IHByaXZhdGU6CiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICBjbGFzcyBHZW5lcmF0ZVN0cmVhbVJl
cXVlc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102005</attachid>
            <date>2011-07-26 08:04:44 -0700</date>
            <delta_ts>2011-07-29 07:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110726170441.patch</filename>
            <type>text/plain</type>
            <size>93593</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3NTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmQwZjlh
ZTk2ZWFlOTNlY2Y2ODE1OWQ3YThmZDBiNjMwNDEzOTVmYi4uYThlOGRhNTBiY2JiY2EyNWRkYjg0
YWRhOTExYjJlOTMyZDViZmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMDYsNiArMjAw
Niw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgICAgICBkb20vTWVkaWFTdHJlYW1M
aXN0LmNwcAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICAgICAgZG9tL01l
ZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAorICAgICAgICBkb20vUGVlckNvbm5lY3Rpb24uY3BwCiAg
ICAgICAgIGRvbS9TdHJlYW1FdmVudC5jcHAKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuY3BwCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCkBA
IC0yMDE3LDYgKzIwMTgsOCBAQCBJRiAoRU5BQkxFX01FRElBX1NUUkVBTSkKICAgICAgICAgZG9t
L01lZGlhU3RyZWFtTGlzdC5pZGwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suaWRsCiAg
ICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwKKyAgICAgICAgZG9tL1BlZXJDb25u
ZWN0aW9uLmlkbAorICAgICAgICBkb20vU2lnbmFsaW5nQ2FsbGJhY2suaWRsCiAgICAgICAgIGRv
bS9TdHJlYW1FdmVudC5pZGwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5p
ZGwKICAgICApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE4ODExMTBkMGU0MTU5NzIxODExZDc2NmIzOTU5ZThl
NGQ3MGYyZi4uZjE0MDJhNjk1MmNhZjQ1Yjc3MTczY2M2MmEzNDI5MjI1YjkyNjU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMS0wNy0yNSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0
b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IEltcGxlbWVudCBQ
ZWVyQ29ubmVjdGlvbiBhbmQgU2lnbmFsaW5nQ2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIExheW91dFRlc3QgbW9kaWZpY2F0aW9ucyB3
aWxsIGJlIGluIG15IG5leHQgcGF0Y2gsIHRvZ2V0aGVyIHdpdGggc2V2ZXJhbCB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvZGVHZW5lcmF0b3JzLnByaToK
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
bWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVzZUpTQy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpKU1BlZXJDb25uZWN0aW9uQ29uc3Ry
dWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZl
cnRFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFBl
ZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vRE9NQWxs
SW5PbmUuY3BwOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1BlZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBkb20vUGVl
ckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNo
VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNoVGFzazo6cGVy
Zm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpTaW1wbGVE
aXNwYXRjaFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwYXRjaFRhc2s6OkRpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9u
OjpQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6aW5p
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246Om9uTmVnb3RpYXRpb25TdGFydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uRG9uZSk6
CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c3RyZWFtQWRkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnN0cmVhbVJlbW92ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246Om9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6b25TaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjp0b1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cG9zdFNpZ25hbGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uOjpwb3N0U3RyZWFtQWRkZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cG9zdFN0cmVhbVJlbW92ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdFNpbXBsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAgKiBk
b20vUGVlckNvbm5lY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVm
RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRlcmVmRXZl
bnRUYXJnZXQpOgorICAgICAgICAqIGRvbS9QZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAg
ICAgICAqIGRvbS9TaWduYWxpbmdDYWxsYmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmguCisgICAgICAgIChXZWJDb3JlOjpTaWduYWxpbmdD
YWxsYmFjazo6flNpZ25hbGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBkb20vU2lnbmFsaW5nQ2Fs
bGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAg
ICogcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
TWVkaWFTdHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTWVzc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmFkZFN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpuZXdQZWVyQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNsb3NlUGVl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpz
dGFydE5lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZSk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1
ZXN0Ojppc1NpZ25hbGluZ1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpuZXdQZWVyQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RhcnRO
ZWdvdGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvblJlbW92ZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290
aWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6b25OZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpDbGllbnRCYXNlOjppc1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6UGVlckNvbm5l
Y3Rpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50Ojp+UGVlckNvbm5lY3Rpb25DbGllbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xp
ZW50Ojppc1BlZXJDb25uZWN0aW9uKToKKwogMjAxMS0wNy0yNiAgQWxleGlzIE1lbmFyZCAgPGFs
ZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpIGIv
U291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCmluZGV4IGYyOWY0ZjU5ZTg4OWFhOTA1
ZThlYmY5ZmEyNTA1OTY2NzU4YmIxOTIuLmVkZWZiNzY4YTFmMjUxNmVmY2NhZmYzZmE5ZTJjZWQ3
ZDVjNTFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkKQEAgLTE1OSwxMSArMTU5LDEz
IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgZG9tL05vdGF0aW9uLmlkbCBcCiAgICAgZG9tL092
ZXJmbG93RXZlbnQuaWRsIFwKICAgICBkb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGwgXAorICAg
IGRvbS9QZWVyQ29ubmVjdGlvbi5pZGwgXAogICAgIGRvbS9Qb3BTdGF0ZUV2ZW50LmlkbCBcCiAg
ICAgZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwgXAogICAgIGRvbS9Qcm9ncmVzc0V2ZW50
LmlkbCBcCiAgICAgZG9tL1JhbmdlRXhjZXB0aW9uLmlkbCBcCiAgICAgZG9tL1JhbmdlLmlkbCBc
CisgICAgZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCiAgICAgZG9tL1N0cmVhbUV2ZW50Lmlk
bCBcCiAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmlkbCBcCiAgICAgZG9tL1RleHQuaWRsIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCAzMWEzZTgwOWQ5ZDQyOTI2M2QxMDkxYmJmYjQz
NTAyZTJmYjM2YTEyLi41ZGYzMzBlMGY0NDFmZWM1YjliMzAyODA3MTJjMzAyNDc5YWU5NTg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBAIC0yNTgsNiArMjU4LDcgQEAKICNpbmNsdWRl
ICJKU09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZs
b3dFdmVudC5jcHAiCiAjaW5jbHVkZSAiSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNs
dWRlICJKU1BlZXJDb25uZWN0aW9uLmNwcCIKICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlLmNwcCIK
ICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJm
b3JtYW5jZVRpbWluZy5jcHAiCkBAIC0yNzYsNiArMjc3LDcgQEAKICNpbmNsdWRlICJKU1Njcmlw
dFByb2ZpbGVOb2RlLmNwcCIKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCiAjaW5jbHVk
ZSAiSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCIKKyNpbmNsdWRlICJKU1NpZ25hbGluZ0NhbGxi
YWNrLmNwcCIKICNpbmNsdWRlICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTEV4Y2Vw
dGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuY3BwIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggNjFlYjdmNTllYzAzOTNjZGMxMTU5MTIyZTk0YTFmYTdkMTc5ZjA5
Ni4uNTMxM2E4MjJjNzIxNWU3OGYyYTU0YTQ2YzYxMzE5MjU4YmQyN2UyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC0zMzIsNiArMzMyLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAg
ICAgT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbiBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAg
ICAgUGFnZVRyYW5zaXRpb25FdmVudCBcCisgICAgUGVlckNvbm5lY3Rpb24gXAogICAgIFBlcmZv
cm1hbmNlIFwKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb24gXAogICAgIFBlcmZvcm1hbmNlVGlt
aW5nIFwKQEAgLTM0OSw2ICszNTAsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTaGFyZWRXb3Jr
ZXJDb250ZXh0IFwKICAgICBTY3JpcHRQcm9maWxlIFwKICAgICBTY3JpcHRQcm9maWxlTm9kZSBc
CisgICAgU2lnbmFsaW5nQ2FsbGJhY2sgXAogICAgIFNwZWVjaElucHV0RXZlbnQgXAogICAgIFNw
ZWVjaElucHV0UmVzdWx0IFwKICAgICBTcGVlY2hJbnB1dFJlc3VsdExpc3QgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZDU0YjlkM2NhNmMzZmQ2NzRkYTU0ZGJkYTRlZWM5NWZk
NDkyYzEyMy4uNTVkZGZlZjMzNDNkMWY3MGNmZTlmMDc4ZTQ3OWRjZmQzZWFjNDE1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MTEsNiArNDExLDggQEAgd2ViY29yZV9idWls
dF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UGVyZm9ybWFuY2UuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2Uu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAg
XApAQCAtNDQ3LDYgKzQ0OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdvcmtlckNvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1NoYXJlZFdvcmtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNTaGFyZWRXb3JrZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0Nh
bGxiYWNrLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNr
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0RXZlbnQuaCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0UmVzdWx0LmNwcCBcCkBAIC03ODAsNiArNzg0LDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25D
b25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29u
c3RydWN0b3IuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVu
dEZ1bmN0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgXApAQCAtMTIzNSw2ICsxMjQwLDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29u
bmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vUGVuZGluZ1NjcmlwdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Rv
bS9QZW5kaW5nU2NyaXB0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmNw
cCBcCkBAIC0xMjc3LDYgKzEyODQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAor
CVNvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxpbmdDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQppbmRleCBhYjRiOTEzZmY4ODUxYjBhNjlhYTNiNzU3M2QxZjNk
ZTFkMDI2NzQ5Li5kNDNjZjgzMTIwYWU2YzcyN2Q4NGQzNzNjMmQ1NDc4NTdkYWY3MzFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
VXNlSlNDLmNtYWtlCkBAIC0xMDIsNiArMTAyLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0
cnVjdG9yLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcAogICAgIGJpbmRpbmdz
L2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzk5YmRlNmQw
MjRjYjhhYzQzNGJlZjczODYzM2E4MDdiMzM3NzM3NS4uZTRiYjlhNWZjMWNlMDdjOGRjZDExMzVk
Y2FjODNhODkwMGE0ZTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTE4MiwxMiArMTE4MiwxNCBA
QAogICAgICAgICAgICAgJ2RvbS9Ob3RhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2RvbS9PdmVy
Zmxvd0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRs
JywKKyAgICAgICAgICAgICdkb20vUGVlckNvbm5lY3Rpb24uaWRsJywKICAgICAgICAgICAgICdk
b20vUG9wU3RhdGVFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaWRsJywKICAgICAgICAgICAgICdkb20vUHJvZ3Jlc3NFdmVudC5pZGwnLAogICAgICAg
ICAgICAgJ2RvbS9SYW5nZS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9SYW5nZUV4Y2VwdGlvbi5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5pZGwn
LAorICAgICAgICAgICAgJ2RvbS9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAg
J2RvbS9TdHJlYW1FdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9TdHJpbmdDYWxsYmFjay5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmlkbCcsCkBAIC0xODc3LDYgKzE4NzksNyBAQAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKQEAgLTIxNzgsNiArMjE4
MSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3Vz
dG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rp
b25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3Jt
YW5jZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0
YXRlRXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhT
UUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0yNTYwLDYgKzI1NjQsOCBAQAogICAg
ICAgICAgICAgJ2RvbS9PdmVyZmxvd0V2ZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJh
bnNpdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQu
aCcsCisgICAgICAgICAgICAnZG9tL1BlZXJDb25uZWN0aW9uLmNwcCcsCisgICAgICAgICAgICAn
ZG9tL1BlZXJDb25uZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9QZW5kaW5nU2NyaXB0LmNw
cCcsCiAgICAgICAgICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuY3BwJywKICAgICAgICAgICAgICdk
b20vUG9wU3RhdGVFdmVudC5oJywKQEAgLTI1OTgsNiArMjYwNCw3IEBACiAgICAgICAgICAgICAn
ZG9tL1NoYWRvd1Jvb3QuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKICAg
ICAgICAgICAgICdkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9T
aWduYWxpbmdDYWxsYmFjay5oJywKICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oJywKICAg
ICAgICAgICAgICdkb20vU3RhdGljTm9kZUxpc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDg4
ZTJmZTY4M2RjYTc0ZjBhMjAzMjI2YjQ3YTY1NWJjNmIwNzExMS4uOGQxODEwZmMyODhiMzU0YTQ4
ZDgxNjljMDFlOTlhYWVkYThkMmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMyMzMsNiArMzIzMyw4
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBk
b20vTWVkaWFTdHJlYW1MaXN0LmggXAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5oIFwK
ICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmggXAorICAgICAgICBkb20vUGVlckNv
bm5lY3Rpb24uaCBcCisgICAgICAgIGRvbS9TaWduYWxpbmdDYWxsYmFjay5oIFwKICAgICAgICAg
ZG9tL1N0cmVhbUV2ZW50LmggXAogICAgICAgICBwYWdlL0NhbGxiYWNrVGFzay5oIFwKICAgICAg
ICAgcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIFwKQEAgLTMyNDgsMTMgKzMyNTAsMTkgQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAgICAgIGRvbS9NZWRp
YVN0cmVhbUxpc3QuY3BwIFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suY3BwIFwKICAg
ICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcCBcCisgICAgICAgIGRvbS9QZWVyQ29u
bmVjdGlvbi5jcHAgXAogICAgICAgICBkb20vU3RyZWFtRXZlbnQuY3BwIFwKICAgICAgICAgcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5jcHAKIAogICAgIHY4IHsKICAgICAgICAgU09VUkNFUyArPSBcCi0gICAg
ICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAg
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAgICAg
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAorICAgIH0g
ZWxzZSB7CisgICAgICAgIFNPVVJDRVMgKz0gXAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNO
YXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5l
Y3Rpb25DdXN0b20uY3BwCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDEzMmM3YTY2MDUwNzQ0N2UyNDVlNjdhZGJkOGUyMWJj
ZWJhMmMxODYuLmM0YTZlOGQyYWRhZGZlZTE1OGEyYjQzNDU5YWU3ZDQ5YjJkY2YyYjUgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0xMjM5MCw2
ICsxMjM5MCw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlcmZvcm1hbmNl
LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC0xMzI4Niw2ICsxMzM0Miw2
MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTaWduYWxp
bmdDYWxsYmFjay5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJp
dmVkU291cmNlc1xKU1NpZ25hbGluZ0NhbGxiYWNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxFcnJvci5jcHAiCiAJCQkJPgogCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgpAQCAtNDcxNzQsNiArNDcyODYsNjIgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9uLmNw
cCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBy
b2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cZG9tXFBlZXJDb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQZW5kaW5nU2NyaXB0LmNwcCIKIAkJCQk+CiAJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCkBAIC00ODI3MCw2ICs0ODQzOCwxMCBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2lnbmFsaW5nQ2FsbGJh
Y2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFNwYWNlU3BsaXRTdHJpbmcuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
QEAgLTYzMTMzLDYgKzYzMzA1LDU4IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BlZXJDb25uZWN0aW9uQ3VzdG9t
LmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJl
bGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAJCQkJCT4KIAkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmFhNzhjMjdiYjlmNzkyZTFhYmI3ZDRmZmJiMDNl
MDY1MzdjMjA4NS4uMDBiYjFlYzVmY2QyYTM0OGJlOThjNTYyYjg4MjJjNGEwMzU3MjJiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTE0NCw2ICsxMTQ0LDE0IEBACiAJCTQ5QTg1QjZDMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJl
YW1FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlBODVCNjkxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmggKi87IH07CiAJCTQ5QTg1
Qjc3MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTg1Qjc1MTM4RDU4RUUwMEVDQjdCMyAv
KiBKU1N0cmVhbUV2ZW50LmNwcCAqLzsgfTsKIAkJNDlBODVCNzgxMzhENThFRTAwRUNCN0IzIC8q
IEpTU3RyZWFtRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QTg1Qjc2MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi87IH07
CisJCTQ5QkUzMEQyMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQx
MTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
NDlCRTMwRDgxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQzMTNEOTc0QzkwMDM4
MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTQ5QkUzMEQ5MTNEOTc0QzkwMDM4
MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDlCRTMwRDQxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9u
LmggKi87IH07CisJCTQ5QkUzMERCMTNEOTc0QzkwMDM4MDhBOSAvKiBTaWduYWxpbmdDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMw
RDYxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi87IH07CisJCTQ5QkUz
MEYzMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhB
OSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgw
OEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0
aW9uLmggKi87IH07CisJCTQ5QkUzMEY1MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0Nh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLzsg
fTsKKwkJNDlCRTMwRjYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYyMTNE
OTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggKi87IH07CiAJCTQ5QzdCOTkz
MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAvKiBK
U1dlYkdMQnVmZmVyLmNwcCAqLzsgfTsKIAkJNDlDN0I5OTQxMDQyRDJEMzAwMDlENDQ3IC8qIEpT
V2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QzdCOTgxMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmggKi87IH07CiAJ
CTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0
NDcgLyogSlNJbnQ4QXJyYXkuY3BwICovOyB9OwpAQCAtNzY5Niw2ICs3NzA0LDE2IEBACiAJCTQ5
QTg1QjZBMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gU3RyZWFtRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUE4NUI3NTEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmVhbUV2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNzYxMzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJlYW1FdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBEMTEzRDk3NDdCMDAzODA4QTkgLyog
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDlCRTMwRDMxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlZXJDb25uZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDQxM0Q5NzRDOTAwMzgwOEE5IC8q
IFBlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlZXJD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEQ1MTNEOTc0
QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UGVlckNvbm5lY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBE
NjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2lnbmFsaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDlCRTMwRDcxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNr
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaWduYWxpbmdDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UGVlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBG
MDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2lnbmFsaW5nQ2Fs
bGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBGMjEzRDk3NjQ2
MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NpZ25hbGluZ0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xCdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNX
ZWJHTEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQnVm
ZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0ludDhBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzI2
OSw2ICsxNzI4Nyw4IEBACiAJCQkJQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxp
c3QuaCAqLywKIAkJCQk2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5jcHAg
Ki8sCiAJCQkJNjVERjMxRUEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uaCAqLywKKwkJ
CQk0OUJFMzBFRjEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCAqLywKIAkJ
CQk1OTgzNjVFMzEzNTVGNjA0MDAxQjE4NUQgLyogSlNQb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywK
IAkJCQk1OTgzNjVEQzEzNTVGNTNDMDAxQjE4NUQgLyogSlNQb3NpdGlvbkNhbGxiYWNrLmggKi8s
CiAJCQkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8s
CkBAIC0xNzI3OSw2ICsxNzI5OSw4IEBACiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8q
IEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYy
RUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCiAJCQkJRTRCNDIzODYwQ0JGQjczQzAwQUYy
RUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5oICovLAorCQkJCTQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhB
OSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLywKKwkJCQk0OUJFMzBGMjEzRDk3NjQ2MDAz
ODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5oICovLAogCQkJCTc1NDE1RDRGMTI5QUIyRDIw
MDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZlbnQuY3BwICovLAogCQkJCTc1NDE1RDUwMTI5QUIy
RDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZlbnQuaCAqLywKIAkJCQk3NTQxNUQ1MTEyOUFC
MkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdC5jcHAgKi8sCkBAIC0xODYyOSw2ICsx
ODY1MSw3IEBACiAJCQkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1
c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJh
dG9yQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2Rl
TGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJNDlCRTMwRDExM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUUxQUQxMkQ1MTI5NUQwQkQwMEFDQTk4OSAv
KiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcy
RkNGMDAwQzRDRDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICovLAogCQkJCTUx
RENFODAxMENBQzlGMUMwMDQ4ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3Bw
ICovLApAQCAtMTk4NDksNiArMTk4NzIsOSBAQAogCQkJCUUxMjg0QUU5MTA0NDdERUUwMEVBRUI1
MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQlFMTI4NEFFMDEwNDQ3RDQ1MDBF
QUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5oICovLAogCQkJCUUxMjg0QUQ5MTA0NDdBRUIw
MEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2ZW50LmlkbCAqLywKKwkJCQk0OUJFMzBEMzEzRDk3
NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ5QkUzMEQ0MTNEOTc0
QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ5QkUzMEQ1MTNEOTc0Qzkw
MDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5pZGwgKi8sCiAJCQkJOEE3Q0M5NkYxMjA3NkY4QTAw
MUQ0NTg4IC8qIFBlbmRpbmdTY3JpcHQuY3BwICovLAogCQkJCThBN0NDOTZBMTIwNzZENzMwMDFE
NDU4OCAvKiBQZW5kaW5nU2NyaXB0LmggKi8sCiAJCQkJNDFCRjcwMEQwRkU4NkY2MTAwNUU4REVD
IC8qIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCAqLywKQEAgLTE5ODk4LDYgKzE5OTI0
LDggQEAKIAkJCQlBNzFDMzBCNzEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuaCAqLywKIAkJCQlBNkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5j
cHAgKi8sCiAJCQkJQTZEMTY5NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywK
KwkJCQk0OUJFMzBENjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLywK
KwkJCQk0OUJFMzBENzEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaWRsICov
LAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAq
LywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICov
LAogCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
Y3BwICovLApAQCAtMjE5NTEsNiArMjE5NzksNyBAQAogCQkJCUE4MjZFOEFFMEExQThGMjMwMENE
MUJCNiAvKiBKU09wdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBENTc0
MTBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMTI4NEJCMTEwNDQ5RkZBMDBFQUVCNTIgLyogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0OUJFMzBGNDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpT
UGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZE
MSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4
ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICov
LApAQCAtMjE5NzEsNiArMjIwMDAsNyBAQAogCQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0Q0Q1NSAv
KiBKU1NjcmlwdFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQwN0E3RjBGRjkz
NUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDE2
OTA2MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ5QkUzMEY2MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxNUQ1NjEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVl
Y2hJbnB1dEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxNUQ1ODEyOUFCMkQyMDAzQUQ2
NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTVENUEx
MjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmggaW4gSGVhZGVycyAq
LywKQEAgLTIyMjM5LDggKzIyMjY5LDggQEAKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEg
LyogbWFya3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIg
LyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQTYyOUMxMTNEMEJF
QzcwMDUwQUM1MiAvKiBNYXJrdXBUb2tlbkJhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTAwQzYw
RTNGMTNENzZEN0UwMDkyQTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwMEM2MEU0MjEzRDc5N0FFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5p
emVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDBDNjBFM0YxM0Q3NkQ3RTAwOTJBMjc1IC8q
IE1hcmt1cFRva2VuaXplcklubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZBQkU3
MkY1MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZBQkU3MkY3MTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxJbmxpbmVD
b250YWluZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIyMzg0LDYgKzIyNDE0LDcgQEAK
IAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5NzEwRDAwQkYyMjAwNzFCNzgyIC8qIFBhdHRlcm5BdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMjc1MzU2NTBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJ
bWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlCRTMwRDkxM0Q5NzRDOTAwMzgwOEE5IC8qIFBl
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTdDQzk2QjEyMDc2RDczMDAxRDQ1
ODggLyogUGVuZGluZ1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE4NDREMDUxMUQzQzE4
RTAwMTQwNjVDIC8qIFBlcmZvcm1hbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QUY0RTU1NjEx
REM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTIyNjY3LDggKzIyNjk4LDggQEAKIAkJCQk0OTg3NzBFOTEyNDJDNTM1MDAyMjI2QkEgLyog
U2hhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyog
U2hhZG93Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0QzJEM0MxMzgxMUUwRDAwRjgzNTcy
IC8qIFNoYWRvd0NvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzFDMzBCOTEz
ODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNUVCOEM0MEU4MjAzMUIwMEIyNTk2NSAvKiBTaGFkb3dEYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBNzFDMzBCOTEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2Vs
ZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2RDE2OTY0MTM0NkI0QzEwMDBFQjc3MCAvKiBT
aGFkb3dSb290LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFODBBMTk4OUNBMDA3RkI4QzUg
LyogU2hhZG93VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQUZGQzk0MEQwMEE1REYwMDMw
MDc0RCAvKiBTaGFwZUFyYWJpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjY3OSw2ICsyMjcxMCw3
IEBACiAJCQkJNDFEMTY4RTgxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlckNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDE2OEVBMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFRTEwMjI2RTg5MDA5
QkM4MjcgLyogU2hhcmVkV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUJFMzBE
QjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyQzNEQTY1MEQwMDZDRDYwMEVGNkYyNiAvKiBTaW1wbGVGb250RGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEzMjdENjAxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQ0QwRUY4NkQ0NzAwOUQwQ0FGIC8qIFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjQ5MjYsNiArMjQ5NTgsOCBAQAogCQkJ
CUE4MjZFQzQ4MEExQjBDQkUwMENEMUJCNiAvKiBKU09wdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpT
UGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUJFMzBGMzEzRDk3
NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
OUJFMzBEMjEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4QTlBNTg3NDExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTlBNTg3MDExRTg0QzM2MDA4QUNGRDEgLyogSlNQ
ZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE5QTU4ODcxMUU4
NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNDk0OSw2ICsyNDk4Myw3IEBACiAJCQkJNDFEMDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpT
U2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRDE2OTA1MTAyMzhCNjYwMDlC
QzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRD
RDhEODIxMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hhcmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ5QkUzMEY1MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDE1RDU1MTI5QUIyRDIwMDNBRDY2OSAvKiBK
U1NwZWVjaElucHV0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTVENTcxMjlBQjJE
MjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NzU0MTVENTkxMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjUzNTYsNiArMjUzOTEsNyBAQAogCQkJCUE4RkE2RTVFMEU0Q0ZE
RUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEEzOEZFMEU1
MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1
NjQwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDlCRTMwRDgxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCThBN0NDOTcwMTIwNzZGOEEwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBODQ0RDA0MTFEM0MxOEUwMDE0MDY1QyAvKiBQZXJm
b3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QUY0RTU1NTExREM1QTM2MDAwRUQzREUg
LyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjU1NzgsOCAr
MjU2MTQsOCBAQAogCQkJCTQ5ODc3MEU4MTI0MkM1MzUwMDIyMjZCQSAvKiBTaGFkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzREQ0NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc2NkNGOEMxMzgxMEUwQzAwMTFBMEIzIC8qIFNoYWRv
d0NvbnRlbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3MUMzMEI4MTM4MTI2NUUw
MERCQzM1MSAvKiBTaGFkb3dJbmNsdXNpb25TZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzVFQjhDMzBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlBNzFDMzBCODEzODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTZEMTY5NjIxMzQ2QjQ5QjAwMEVCNzcwIC8qIFNo
YWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1
IC8qIFNoYWRvd1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYw
MDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmlu
ZGV4IDM0MzJkNzQ0ZjJiZmY4OTVjYzQxMTEyYmQzNzM1ZTAzMGRjNmJlN2IuLjRlODQzNjc4MDA2
NWVmMDRmYzMzNzU0MzBjY2M5ZGU0ZDI5YjQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNDgs
NiArMTQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG1lZGlhU3RyZWFtRW5hYmxlZCgp
IHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWVk
aWFTdHJlYW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTWVkaWFTdHJlYW1FbmFibGVkID0g
aXNFbmFibGVkOyB9CiAgICAgc3RhdGljIGJvb2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCgp
IHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgcGVlckNv
bm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFFVT1RBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggNTlhOTBiZmNlYmM1ZWQ4NGIyZWQ4ZTJkMTFk
NjcyZTdmMzM3ZTQ4YS4uNWUxNTgxNTIxNjdkNzMxNmRhNTM5NDIxYzI0MjExMTcxZTY4ZjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCkBAIC0xMjMsNiArMTIzLDcgQEAKICNpbmNsdWRlICJKU05vZGVJdGVyYXRvckN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNOb2RlTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNPcHRpb25D
b25zdHJ1Y3Rvci5jcHAiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1Byb2Nl
c3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUwMTZmYzg2NmIyZTYwMzc3YTY2
OTNiZWIzZjQyMDEwNTJkYTNiZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDYWxsYmFj
a0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0
aW9uQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rpb24oRXhlY1N0YXRlKiBleGVj
KQoreworICAgIEpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0
YXRpY19jYXN0PEpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsK
KworICAgIFN0cmluZyBjb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIFJlZlB0cjxT
aWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlD
YWxsYmFjazxKU1NpZ25hbGluZ0NhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEp
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01XaW5kb3co
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOworICAgIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIgPSBmcmFtZSA/IGZyYW1lLT5t
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIDogMDsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVj
dGlvbj4gcGVlckNvbm5lY3Rpb247CisgICAgaWYgKGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAg
cGVlckNvbm5lY3Rpb24gPSBmcmFtZUNvbnRyb2xsZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNv
bmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKTsKKworICAgIGlmICghcGVlckNvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAwMzRkNTQ3NTlkNmZmZGM5
Y2NmZTVmN2M3NDhiZDRmOWQzMDQzOGM1Li4wODZhM2EyMTk2MWRjMjgwOWEyMDdjZmJhZTdmNTJk
MDdlM2RmODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJWOE5vZGVGaWx0ZXJDb25kaXRpb24uaCIK
ICNpbmNsdWRlICJWOE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhOb3RpZmljYXRpb24uaCIKKyNp
bmNsdWRlICJWOFBlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1
ZGUgIlY4U2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXJDb250ZXh0Lmgi
CkBAIC00NTQsNiArNDU1LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6
Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKIAogICAgIGlmIChN
ZWRpYVN0cmVhbSogc3RyZWFtID0gdGFyZ2V0LT50b01lZGlhU3RyZWFtKCkpCiAgICAgICAgIHJl
dHVybiB0b1Y4KHN0cmVhbSk7CisKKyAgICBpZiAoUGVlckNvbm5lY3Rpb24qIHBlZXJDb25uZWN0
aW9uID0gdGFyZ2V0LT50b1BlZXJDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiB0b1Y4KHBl
ZXJDb25uZWN0aW9uKTsKICNlbmRpZgogCiAgICAgQVNTRVJUKDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg4M2Y5YjFlZTEwMWVhZmUxZTA1YzViNmM0ODczNzE1ZjYzMGVh
MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgIlY4UGVlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhTaWduYWxpbmdDYWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFBlZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uUGVlckNvbm5lY3Rp
b24uQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJl
IGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIGlu
dCBhcmdMZW5ndGggPSBhcmdzLkxlbmd0aCgpOworICAgIGlmIChhcmdMZW5ndGggIT0gMikKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciB0
YWtlcyB0d28gYXJndW1lbnRzLiIsIFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgIHY4OjpU
cnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIEF0b21pY1N0cmluZyBjb25maWd1cmF0aW9u
ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0tPlRvU3RyaW5nKCkpOworICAgIGlmIChleGNlcHRp
b25DYXRjaGVyLkhhc0NhdWdodCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGNlcHRp
b25DYXRjaGVyLkV4Y2VwdGlvbigpKTsKKworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Cisg
ICAgUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjayA9IGNyZWF0ZUZ1
bmN0aW9uT25seUNhbGxiYWNrPFY4U2lnbmFsaW5nQ2FsbGJhY2s+KGFyZ3NbMV0sIHN1Y2NlZWRl
ZCk7CisgICAgaWYgKCFzdWNjZWVkZWQgfHwgIXNpZ25hbGluZ0NhbGxiYWNrKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIG11c3QgYmUg
Z2l2ZW4gYSBTaWduYWxpbmdDYWxsYmFjayBjYWxsYmFjay4iLCBWOFByb3h5OjpUeXBlRXJyb3Ip
OworCisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZUZvckN1cnJlbnRD
b250ZXh0KCk7CisgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxl
ciA9IGZyYW1lID8gZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgOiAwOworCisg
ICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbjsKKyAgICBpZiAoZnJhbWVD
b250cm9sbGVyKQorICAgICAgICBwZWVyQ29ubmVjdGlvbiA9IGZyYW1lQ29udHJvbGxlci0+Y3Jl
YXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spOworCisg
ICAgaWYgKCFwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
KworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5mbywg
cGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiB0b1Y4KHBlZXJDb25uZWN0aW9uLnJl
bGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNw
cAppbmRleCAzYWQxNTY2ZTY3M2QyN2ZiOTEyMDliZTY2YTRmZDk3MzE5N2E2ZGY3Li41MzQyMzc2
NTcyMmVmYjBiNmE5MTc2ZTZjNjllZmU3MjVmYzdiMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKICNpbmNsdWRlICJPcHRpb25Hcm91cEVsZW1lbnQu
Y3BwIgogI2luY2x1ZGUgIk92ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1ZGUgIlBhZ2VUcmFuc2l0
aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmNwcCIKICNpbmNsdWRlICJQ
ZW5kaW5nU2NyaXB0LmNwcCIKICNpbmNsdWRlICJQb3BTdGF0ZUV2ZW50LmNwcCIKICNpbmNsdWRl
ICJQb3NpdGlvbi5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5ZGQxODM3MGE0ZGQ3
MWY5ZTNjNGQzYmY3MjQzOGZiZmFjNTA4MmZlLi5kODEyM2U4NDBhOWEyMWRmYTkwMDcwMmM1MGQw
MGUwNDdiNWZkYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE4MCw2ICsxODAsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhhdWRpb3Byb2Nlc3MpIFwK
ICAgICBcCisgICAgbWFjcm8oY29ubmVjdGluZykgXAorICAgIG1hY3JvKGFkZHN0cmVhbSkgXAor
ICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkgXAorICAgIFwKKwogLy8gZW5kIG9mIERPTV9FVkVOVF9O
QU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcAppbmRleCBhMjhiZGIxM2QyY2U4MmZhNjkyM2Y5M2IzNmJmYTE3MDdmMzNlMDcw
Li5jYjhkZDJkODZmMGQzYTY3OWQ5Mzg5YjdhZjc4OTVmZjA2YTU5OWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKQEAgLTIxNSw2ICsyMTUsMTEgQEAgTG9jYWxNZWRpYVN0cmVhbSog
RXZlbnRUYXJnZXQ6OnRvTG9jYWxNZWRpYVN0cmVhbSgpCiB7CiAgICAgcmV0dXJuIDA7CiB9CisK
K1BlZXJDb25uZWN0aW9uKiBFdmVudFRhcmdldDo6dG9QZWVyQ29ubmVjdGlvbigpCit7CisgICAg
cmV0dXJuIDA7Cit9CiAjZW5kaWYKIAogYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRl
eCBiY2M3NThjMzAzNzEzNjJmZWJjMTcyN2NiODIyYTk3MWM1ZmJjNDZmLi44MGUxYWY1YzIyZDE4
MDQyNDdmNjkwYjI5MGUzZWQ2NDNkYWRhMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApA
QCAtNTksNiArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBv
cnQ7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CisgICAgY2xhc3Mg
UGVlckNvbm5lY3Rpb247CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwpAQCAtMTUy
LDYgKzE1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQogICAgICAgICB2aXJ0dWFsIE1lZGlhU3RyZWFtKiB0b01lZGlhU3RyZWFtKCk7CiAgICAgICAg
IHZpcnR1YWwgTG9jYWxNZWRpYVN0cmVhbSogdG9Mb2NhbE1lZGlhU3RyZWFtKCk7CisgICAgICAg
IHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24oKTsKICNlbmRpZgogCiAg
ICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU0NmIyODJmMmUwNTFkYzExZmE4M2JiYjE4NGY5ZGEzYmI0ZTNiNmUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsMzc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGVlckNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRl
ICJFcnJvckV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUxpc3Qu
aCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2lnbmFsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdHJl
YW1FdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBEPgorY2xhc3MgU2ltcGxlRGlzcGF0Y2hUYXNrIDogcHVibGljIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoVDo6KkNh
bGxiYWNrKShjb25zdCBEJik7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaW1wbGVEaXNwYXRj
aFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFQ+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNv
bnN0IEQmIGRhdGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNpbXBsZURp
c3BhdGNoVGFzayhvYmplY3QsIGNhbGxiYWNrLCBkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAg
ICAgKG1fb2JqZWN0LmdldCgpLT4qbV9jYWxsYmFjaykobV9kYXRhKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgU2ltcGxlRGlzcGF0Y2hUYXNrKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBDYWxsYmFj
ayBjYWxsYmFjaywgY29uc3QgRCYgZGF0YSkKKyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisg
ICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkgeyB9
CisKKyAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAg
ICBEIG1fZGF0YTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBMSwgdHlw
ZW5hbWUgQTI+CitjbGFzcyBEaXNwYXRjaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChUOjoqQ2FsbGJhY2spKGNv
bnN0IEExJiwgUGFzc1JlZlB0cjxBMj4pOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8RGlzcGF0
Y2hUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxUPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBj
b25zdCBBMSYgYXJnMSwgUGFzc1JlZlB0cjxBMj4gYXJnMikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRGlzcGF0Y2hUYXNrKG9iamVjdCwgY2FsbGJhY2ssIGFyZzEsIGFyZzIp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopCisgICAgeworICAgICAgICAobV9vYmplY3QuZ2V0KCktPiptX2NhbGxiYWNrKSht
X2FyZzEsIG1fYXJnMik7CisgICAgfQorCitwcml2YXRlOgorICAgIERpc3BhdGNoVGFzayhQYXNz
UmVmUHRyPFQ+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IEExJiBhcmcxLCBQYXNz
UmVmUHRyPEEyPiBhcmcyKQorICAgICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgLCBt
X2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fYXJnMShhcmcxKQorICAgICAgICAsIG1f
YXJnMihhcmcyKSB7IH0KKworICAgIFJlZlB0cjxUPiBtX29iamVjdDsKKyAgICBDYWxsYmFjayBt
X2NhbGxiYWNrOworICAgIEExIG1fYXJnMTsKKyAgICBSZWZQdHI8QTI+IG1fYXJnMjsKK307CisK
KworUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rpb246OmNyZWF0ZShNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4g
c2lnbmFsaW5nQ2FsbGJhY2spCit7CisgICAgLy8gVE9ETzogVmVyaWZ5IGNvbmZpZ3VyYXRpb24K
KworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGMgPSBhZG9wdFJlZihuZXcgUGVlckNvbm5l
Y3Rpb24oZnJhbWVDb250cm9sbGVyLCBpZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJh
Y2spKTsKKyAgICBwYy0+aW5pdCgpOworICAgIHJldHVybiBwYzsKK30KKworUGVlckNvbm5lY3Rp
b246OlBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRy
b2xsZXIsIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVm
UHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjaykKKyAgICA6IFBlZXJDb25u
ZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbikKKyAgICAsIG1fcmVhZHlTdGF0ZShORVcpCisgICAgLCBtX3NpZ25hbGlu
Z0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xs
ZXIpOworICAgIG1fbG9jYWxTdHJlYW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKTsK
KyAgICBtX3JlbW90ZVN0cmVhbUxpc3QgPSBNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjppbml0KCkKK3sKKyAgICBpZiAoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCkpCisgICAgICAgIGZyYW1lQ29udHJvbGxlci0+bmV3UGVlckNvbm5lY3Rpb24obV9jbGllbnRJ
ZCwgbV9jb25maWd1cmF0aW9uKTsKKworICAgIHBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpOwor
fQorCitQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkKK3sKK30KKworUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUxpc3Q+IFBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMoKQoreworICAg
IHJldHVybiBtX2xvY2FsU3RyZWFtTGlzdDsKK30KKworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUxp
c3Q+IFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKCkKK3sKKyAgICByZXR1cm4gbV9yZW1v
dGVTdHJlYW1MaXN0OworfQorCisvLyBTZW5kcyB0aGUgbWVzc2FnZSBkb3duIHRvIHRoZSB1c2Vy
IGFnZW50IGltcGxlbWVudGF0aW9uLgordm9pZCBQZWVyQ29ubmVjdGlvbjo6cHJvY2Vzc1NpZ25h
bGluZ01lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKCktPnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKG1fY2xpZW50SWQsIG1lc3NhZ2UpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpzZW5kKGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIENTdHJpbmcgdXRmOCA9IHRleHQuc3RyaW5nKCkudXRmOCgpOworICAgIGlmICh1dGY4Lmxl
bmd0aCgpID4gNTA0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkp
CisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPm1lc3NhZ2UobV9jbGllbnRJ
ZCwgdGV4dCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3Jl
YWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBUaGUgU3RyZWFtIG9iamVjdCBpcyBndWFy
YW50ZWVkIHRvIGV4aXN0IHNpbmNlIFN0cmljdFR5cGVDaGVja2luZyBpcyBzZXQgaW4gdGhlIGlk
bC4KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gcyA9IHN0cmVhbTsKKworICAgIGlmIChtX2xv
Y2FsU3RyZWFtTGlzdC0+Y29udGFpbnMocykpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9j
YWxTdHJlYW1MaXN0LT5hZGQocyk7CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+YWRkU3RyZWFtKG1f
Y2xpZW50SWQsIHMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3Qg
aXMgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGlu
IHRoZSBpZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisKKyAgICBp
ZiAoIW1fbG9jYWxTdHJlYW1MaXN0LT5jb250YWlucyhzKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9sb2NhbFN0cmVhbUxpc3QtPnJlbW92ZShzKTsKKworICAgIGlmIChtZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5y
ZW1vdmVTdHJlYW0obV9jbGllbnRJZCwgcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmNs
b3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VE
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgbWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+Y2xvc2VQZWVyQ29ubmVjdGlvbihtX2NsaWVudElk
KTsKKworICAgIG1fcmVhZHlTdGF0ZSA9IENMT1NFRDsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQoKQoreworICAgIG1fcmVhZHlTdGF0ZSA9IE5FR09USUFU
SU5HOworCisgICAgcG9zdFNpbXBsZUV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0aW5nRXZlbnQp
OworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uRG9uZSgpCit7CisgICAg
bV9yZWFkeVN0YXRlID0gQUNUSVZFOworCisgICAgcG9zdFNpbXBsZUV2ZW50KGV2ZW50TmFtZXMo
KS5vcGVuRXZlbnQpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpzdHJlYW1BZGRlZChQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBz
ID0gc3RyZWFtOworICAgIG1fcmVtb3RlU3RyZWFtTGlzdC0+YWRkKHMpOworICAgIHBvc3RTdHJl
YW1BZGRlZEV2ZW50KHMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpzdHJlYW1SZW1vdmVk
KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgQVNTRVJUKG1fcmVtb3Rl
U3RyZWFtTGlzdC0+Y29udGFpbnMoc3RyZWFtTGFiZWwpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtID0gbV9yZW1vdGVTdHJlYW1MaXN0LT5nZXQoc3RyZWFtTGFiZWwpOworICAg
IG1fcmVtb3RlU3RyZWFtTGlzdC0+cmVtb3ZlKHN0cmVhbSk7CisgICAgcG9zdFN0cmVhbVJlbW92
ZWRFdmVudChzdHJlYW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UoY29u
c3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlRXZlbnQobWVzc2Fn
ZSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9uU2lnbmFsaW5nTWVzc2FnZShjb25zdCBB
dG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcG9zdFNpZ25hbGluZ0V2ZW50KG1lc3NhZ2Up
OworfQorCitQZWVyQ29ubmVjdGlvbiogUGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5lY3Rpb24o
KQoreworICAgIHJldHVybiB0aGlzOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVy
Q29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgPyBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgOiAwOworfQorCitFdmVudFRhcmdldERhdGEq
IFBlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb246OmVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30K
Kwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRl
eHRUaHJlYWQoKSk7CisKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobWVzc2FnZSk7CisgICAgc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIGludCwg
U2VyaWFsaXplZFNjcmlwdFZhbHVlPjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hNZXNzYWdlRXZlbnQsIDAsIGRhdGEpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6
cG9zdFNpZ25hbGluZ0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soU2ltcGxlRGlzcGF0Y2hUYXNrPFBlZXJD
b25uZWN0aW9uLCBBdG9taWNTdHJpbmc+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpk
aXNwYXRjaFNpZ25hbGluZ0V2ZW50LCBtZXNzYWdlKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b246OnBvc3RTdHJlYW1BZGRlZEV2ZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkK
K3sKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
KworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnBvc3RUYXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgQXRvbWlj
U3RyaW5nLCBNZWRpYVN0cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3Bh
dGNoU3RyZWFtRXZlbnQsIGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgcykpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+IHN0cmVhbSkKK3sKKyAgICAvLyBEaXNwYXRjaCBhIGNsb3NlIGV2ZW50IGFzeW5j
aHJvbm91c2x5LiBEb24ndCBhc3NlcnQgc2luY2UgdGhpcyBtYXkgYmUgY2FsbGVkIGR1cmluZyBz
aHV0ZG93biwKKyAgICAvLyBhbmQgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWF5IGJlIG5v
dCBhdmFpbGFibGUgaW4gdGhlIE1lZGlhIFN0cmVhbSBjYXNlLgorICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBzID0gc3RyZWFtOworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
RGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBBdG9taWNTdHJpbmcsIE1lZGlhU3RyZWFtPjo6
Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudCwgZXZlbnRO
YW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBzKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246
OnBvc3RTaW1wbGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICAv
LyBEaXNwYXRjaCBhIGNsb3NlIGV2ZW50IGFzeW5jaHJvbm91c2x5LiBEb24ndCBhc3NlcnQgc2lu
Y2UgdGhpcyBtYXkgYmUgY2FsbGVkIGR1cmluZyBzaHV0ZG93biwKKyAgICAvLyBhbmQgdGhlIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgbWF5IGJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIE1lZGlhIFN0
cmVhbSBjYXNlLgorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhy
ZWFkKCkpOworCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhTaW1wbGVE
aXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIEF0b21pY1N0cmluZz46OmNyZWF0ZSh0aGlzLCAm
UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2ltcGxlRXZlbnQsIGV2ZW50TmFtZSkpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKQoreworICAgIC8v
IERpc3BhdGNoIGEgY2xvc2UgZXZlbnQgYXN5bmNocm9ub3VzbHkuIERvbid0IGFzc2VydCBzaW5j
ZSB0aGlzIG1heSBiZSBjYWxsZWQgZHVyaW5nIHNodXRkb3duLAorICAgIC8vIGFuZCB0aGUgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCBtYXkgYmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgTWVkaWEgU3Ry
ZWFtIGNhc2UuCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJl
YWQoKSk7CisKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFNpbXBsZURp
c3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgaW50Pjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzaywgMCkpOworfQorCit2b2lkIFBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkID0gZGF0YTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KGFkb3B0UHRyPE1lc3NhZ2VQb3J0QXJyYXk+KDApLCBkKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246OmRpc3BhdGNoU2lnbmFsaW5nRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIG1fc2lnbmFsaW5nQ2FsbGJhY2stPmhhbmRsZUV2ZW50KG1lc3NhZ2UsIHRoaXMp
OworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbUV2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQoreworICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBkaXNwYXRjaEV2ZW50KFN0cmVh
bUV2ZW50OjpjcmVhdGUobmFtZSwgZmFsc2UsIGZhbHNlLCBzKSk7Cit9CisKK3ZvaWQgUGVlckNv
bm5lY3Rpb246OmRpc3BhdGNoU2ltcGxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUpCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2Us
IGZhbHNlKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RhcnROZWdvdGlh
dGlvblRhc2soY29uc3QgaW50JikKK3sKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+c3RhcnROZWdvdGlh
dGlvbihtX2NsaWVudElkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
ZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmE3MTJlNWI1ZGZmYmIzNjk1MjlhODhhNDc0YzYwNjMzNTY4ZjkwYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAg
KzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBlZXJDb25uZWN0aW9uX2gKKyNkZWZp
bmUgUGVlckNvbm5lY3Rpb25faAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKKyNpbmNsdWRlICJN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1MaXN0
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTsKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrOworCitjbGFzcyBQZWVyQ29ubmVjdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPiwKKyAgICBwdWJsaWMgRXZlbnRUYXJn
ZXQsCisgICAgcHVibGljIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlv
bkNsaWVudCB7CitwdWJsaWM6CisgICAgLy8gTXVzdCBtYXRjaCB0aGUgY29uc3RhbnRzIGluIHRo
ZSAuaWRsIGZpbGUuCisgICAgZW51bSB7CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09U
SUFUSU5HID0gMSwKKyAgICAgICAgQUNUSVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAg
IH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZp
Z3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIH5Q
ZWVyQ29ubmVjdGlvbigpOworCisgICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IGxvY2Fs
U3RyZWFtcygpOworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0PiByZW1vdGVTdHJlYW1z
KCk7CisKKyAgICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkeVN0YXRlOyB9CisKKyAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0
b21pY1N0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChjb25z
dCBBdG9taWNTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVh
bShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVt
b3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAg
dm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGNvbm5lY3RpbmcpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIob3Blbik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CisgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAgLy8gRXZl
bnRUYXJnZXQKKyAgICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7
CisKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAg
IC8vIENhbGxiYWNrcworICAgIHZvaWQgb25NZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVz
c2FnZSk7CisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2UoY29uc3QgQXRvbWljU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25TdGFydGVkKCk7CisgICAgdm9pZCBvbk5l
Z290aWF0aW9uRG9uZSgpOworICAgIHZvaWQgc3RyZWFtQWRkZWQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4pOworICAgIHZvaWQgc3RyZWFtUmVtb3ZlZChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVh
bUxhYmVsKTsKKworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24+OjpyZWY7Cisg
ICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OmRlcmVmOworCitwcm90ZWN0ZWQ6
CisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKworcHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlv
bihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPik7CisgICAgdm9p
ZCBpbml0KCk7CisKKyAgICB2b2lkIHBvc3RTaW1wbGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50TmFtZSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0U2lnbmFsaW5nRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RTdHJlYW1BZGRlZEV2ZW50KFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHBvc3RTdHJlYW1SZW1vdmVkRXZlbnQoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgcG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKCk7CisK
KyAgICB2b2lkIGRpc3BhdGNoU2ltcGxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5h
bWUpOworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hTaWduYWxp
bmdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwYXRj
aFN0cmVhbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4pOworICAgIHZvaWQgZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzayhjb25zdCBpbnQm
KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIHsgZGVyZWYoKTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJn
ZXREYXRhOworCisgICAgQXRvbWljU3RyaW5nIG1fY29uZmlndXJhdGlvbjsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBtX3JlYWR5U3RhdGU7CisgICAgUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBtX3Np
Z25hbGluZ0NhbGxiYWNrOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJl
YW1MaXN0OworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFtTGlzdDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJD
b25uZWN0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzVlMWNiYWQxMDkxMjU5MDAzNmU4ZjBkODY5NjZl
NGU3ODYwMDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25u
ZWN0aW9uLmlkbApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisg
ICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisgICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9u
LAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgVjhDdXN0b21Db25z
dHJ1Y3RvciwKKyAgICAgICAgRXZlbnRUYXJnZXQKKyAgICBdIFBlZXJDb25uZWN0aW9uIHsKKyAg
ICAgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSkK
KyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE5FVyA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFU
SU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0xPU0VEID0gMzsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgdm9pZCBzZW5kKGlu
IERPTVN0cmluZyB0ZXh0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0
cmVhbSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0
VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxvY2FsU3RyZWFtczsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIE1lZGlhU3RyZWFtTGlzdCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xv
c2UoKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbm9wZW47CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2Fn
ZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07CisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOworCisgICAgICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1
c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmlu
ZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVu
dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaWduYWxpbmdDYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YTMwZTcxMjY3
NTRhNTFjMzI4YjI4NzQ3NjI2MGFiZDhmYzRiODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNpZ25hbGluZ0NhbGxiYWNrX2gKKyNkZWZpbmUgU2lnbmFsaW5nQ2Fs
bGJhY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVlckNvbm5lY3Rpb247
CisKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8U2lnbmFsaW5n
Q2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TaWduYWxpbmdDYWxsYmFjaygpIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcmLCBQZWVyQ29ubmVj
dGlvbiopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBTaWduYWxpbmdDYWxsYmFja19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTg4YTY0ZDBj
ZjI3ODI5Y2JlMTQxNjM1ZWY4OTA4NGRhM2ZlNWIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApAQCAtMCwwICsxLDMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCittb2R1bGUgY29yZSB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHkKKyAgICBd
IFNpZ25hbGluZ0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBET01T
dHJpbmcgbWVzc2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICB9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMGYzMTYyZjFkNzgxYzExM2M5N2VjNGQ0Zjk3
M2VkYjMzZDk1NmU3MS4uNWUzOTIxZmZlYjM1YzE4NTdmZmNiMWM0NTEyNzk2YjQ4MTk1ODVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMzM3LDYgKzMzNyw4IEBAIG1vZHVsZSB3
aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElP
TixFbmFibGVkQXRSdW50aW1lXSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q29uc3RydWN0b3IgRGV2
aWNlT3JpZW50YXRpb25FdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJ
Q0VfT1JJRU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbmRldmljZW9y
aWVudGF0aW9uOwogCisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
LEVuYWJsZWRBdFJ1bnRpbWVdIFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IgUGVlckNvbm5lY3Rp
b247CisKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgICAgIFtDdXN0b21d
IHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAppbmRleCAwM2RlZGZkODhjNGZkMzE4YTc4
MDMxNjVhZDE5MTE5ZWNmY2I1Y2M5Li5iZjhhYzEwMGVhMTRiNjhiMDE4OTQwYWFiNzBjZWQwMTNi
NWQ5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCkBAIC01NSw2
ICs1NSwyNyBAQCBwdWJsaWM6CiAgICAgLy8gRW5hYmxlL2Rpc2FibGUgYW4gdHJhY2suCiAgICAg
dmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKGNvbnN0IFN0cmluZyYgdHJh
Y2tJZCwgYm9vbCBlbmFibGVkKSA9IDA7CiAKKyAgICAvLyBTaWduYWxpbmcgbWVzc2FnZSBmcm9t
IHBlZXIgY29ubmVjdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3Nh
Z2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworCisg
ICAgLy8gTWVzc2FnZSBmcm9tIHBlZXIgY29ubmVjdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgbWVz
c2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisK
KyAgICAvLyBBZGQgYSBzdHJlYW0gdG8gYSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmlydHVhbCB2
b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCkgPSAwOworCisgICAgLy8gUmVtb3ZlIGEgc3RyZWFtIGZyb20gYSBwZWVyIGNvbm5lY3Rp
b24uCisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAwOworCisgICAgLy8gQSBQZWVyQ29ubmVjdGlv
biBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgbmV3UGVlckNvbm5l
Y3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbikg
PSAwOworCisgICAgLy8gUGVlciBjb25uZWN0aW9uIGlzIGJlaW5nIGNsb3NlZC4KKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkgPSAwOwor
CisgICAgLy8gU3RhcnQgbmVnb3RpYXRpb24uCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TmVnb3Rp
YXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfk1lZGlhU3RyZWFtQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCmluZGV4IGFhZGNmNjBmMjczNWE0ZWE3MzVjMWE4OTQ1
NDdlYzZkODA5YzMxYWQuLmJjMmEyZjE0NGM5ZmE3MGM3ZTdiOTNjOTRlNDVmNjA4YTZlNDcyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKQEAg
LTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBUT0RPOiBUaGlzIGlz
IHVzZWQgZm9yIGhvbGRpbmcgbGlzdCBvZiBQZWVyQ29ubmVjdGlvbiBhcyB3ZWxsLAorLy8gc28g
cmVuYW1lIGNsYXNzIGlzIGluIG9yZGVyLgogY2xhc3MgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpS
ZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBSZXF1ZXN0KCkKQEAgLTU1LDYgKzU3LDcgQEAgcHJpdmF0
ZToKIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKE1lZGlhU3Ry
ZWFtQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX25leHRH
bG9iYWxSZXF1ZXN0SWQoMSkKKyAgICAsIG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQoMSkK
IHsKIH0KIApAQCAtODksNiArOTIsOCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5y
ZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcgogCiAgICAg
Zm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBmcmFtZVN0cmVhbXMuYmVnaW4oKTsg
aXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgpOyArK2l0KQogICAgICAgICBtX3N0cmVhbXMucmVtb3Zl
KCppdCk7CisKKyAgICAvLyBUT0RPOiBBZGQgZm9yIHBlZXIgY29ubmVjdGlvbgogfQogCiBpbnQg
TWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsSWQsIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIpCkBAIC0xNTIsNiArMTU3LDEz
MCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFtRmFpbGVkKGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpCiAgICAgICAgIG1fc3RyZWFtcy5nZXQoc3RyZWFtTGFiZWwpLT5zdHJl
YW1GYWlsZWQoc3RyZWFtTGFiZWwpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
b25TaWduYWxpbmdNZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUg
ZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAgICBpZiAobV9wZWVy
Q29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAg
ICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0
KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0
aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250
cm9sbGVyKCktPm9uU2lnbmFsaW5nTWVzc2FnZShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIG1l
c3NhZ2UpOworICAgIH0KK30KKworaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZnJhbWVUb1Bh
Z2VQZWVyQ29ubmVjdGlvbklkKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRy
b2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29u
bmVjdGlvbklkKC0xKTsKKyAgICAvLyBUT0RPOiBCZXR0ZXIgd2F5IHRvIGZpbmQgdGhlIGdsb2Jh
bCBJRCBpbiB0aGUgbWFwPworICAgIGZvciAoUmVxdWVzdE1hcDo6aXRlcmF0b3IgaXQgPSBtX3Bl
ZXJDb25uZWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3BlZXJDb25uZWN0aW9ucy5lbmQoKTsgKytp
dCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5mcmFtZUNvbnRyb2xsZXIoKSA9PSBmcmFtZUNv
bnRyb2xsZXIgJiYgaXQtPnNlY29uZC5sb2NhbElkKCkgPT0gZnJhbWVQZWVyQ29ubmVjdGlvbklk
KSB7CisgICAgICAgICAgICBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGl0LT5maXJzdDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYWdlUGVlckNvbm5l
Y3Rpb25JZDsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGlu
dCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9u
SWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdl
UGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPnByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Om1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZy
YW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IGZyYW1lVG9Q
YWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25J
ZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9IC0xKQorICAgICAgICBtX2NsaWVu
dC0+bWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1Db250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0
IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAg
aWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklk
KSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5l
Y3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChw
ZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9u
LmZyYW1lQ29udHJvbGxlcigpLT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBt
ZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRTdHJl
YW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1l
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAg
ICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQo
ZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVl
ckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPmFkZFN0cmVhbShwYWdlUGVl
ckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6b25BZGRTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBB
dG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0
PiB0cmFja3MpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9s
bGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICBjb25zdCBSZXF1
ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVl
ckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRy
b2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vbkFk
ZFN0cmVhbShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIHN0cmVhbUxhYmVsLCB0cmFja3MpOwor
ICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVhbShNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIGludCBw
YWdlUGVlckNvbm5lY3Rpb25JZCA9IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNv
bnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVj
dGlvbklkICE9IC0xKQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlU3RyZWFtKHBhZ2VQZWVyQ29u
bmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVy
OjpvblJlbW92ZVN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRo
ZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVl
ckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAg
ICAgICAvLyBUT0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAg
ICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5n
ZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5l
Y3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNv
bnRyb2xsZXIoKS0+b25SZW1vdmVTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJl
YW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bmV3UGVl
ckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwg
aW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0
aW9uKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IG1fbmV4dEdsb2JhbFBlZXJD
b25uZWN0aW9uSWQrKzsKKyAgICBtX3BlZXJDb25uZWN0aW9ucy5hZGQocGFnZVBlZXJDb25uZWN0
aW9uSWQsIFJlcXVlc3QoZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBmcmFtZUNvbnRyb2xsZXIpKTsK
KworICAgIG1fY2xpZW50LT5uZXdQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCwg
Y29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpjbG9zZVBl
ZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIs
IGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlv
bklkID0gZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQ
ZWVyQ29ubmVjdGlvbklkKTsKKyAgICBpZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisg
ICAgICAgIG1fY2xpZW50LT5jbG9zZVBlZXJDb25uZWN0aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklk
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0YXJ0TmVnb3RpYXRpb24oTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNv
bm5lY3Rpb25JZCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFn
ZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQp
OworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQt
PnN0YXJ0TmVnb3RpYXRpb24ocGFnZVBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29u
dHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9u
cy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3Qg
UmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxl
clBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVD
b250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+
b25OZWdvdGlhdGlvblN0YXJ0ZWQocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpKTsKKyAgICB9Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZShpbnQgY29u
dHJvbGxlclBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRo
ZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVl
ckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAg
ICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdl
dChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVj
dGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29u
dHJvbGxlcigpLT5vbk5lZ290aWF0aW9uRG9uZShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCkpOwor
ICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1D
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5o
CmluZGV4IDEwYWM0Y2VmMTFjOTNjZmZkMTk0NjIyZjQ3NjM3Njk2NTJkM2FiMTAuLjAwZDFjZjBm
YTczMjBhY2MxNTkyYTgxMzI5MzgyZjA3NTJjNzE1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaApAQCAtNjAsMTkgKzYwLDQwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7CiAgICAgdm9pZCBzdHJlYW1GYWlsZWQoY29uc3QgU3Ry
aW5nJiBzdHJlYW1MYWJlbCk7CiAKKyAgICAvKiBKUyAtPiBVQSAqLworICAgIHZvaWQgbmV3UGVl
ckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24pOworICAgIHZvaWQg
c3RhcnROZWdvdGlhdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBl
ZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgbWVzc2FnZShNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdm9pZCBhZGRTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVh
bUxhYmVsKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFt
TGFiZWwpOworICAgIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLyogVUEgLT4gSlMg
Ki8KKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbk1lc3NhZ2Uo
aW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3Nh
Z2UpOworICAgIHZvaWQgb25BZGRTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklk
LCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tMaXN0PiB0cmFja3MpOworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oaW50IGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAg
ICB2b2lkIG9uTmVnb3RpYXRpb25TdGFydGVkKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25J
ZCk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uRG9uZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQpOworCiBwcml2YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsUmVx
dWVzdElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciopOwogICAgIHZvaWQgcmVnaXN0ZXJT
dHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIqKTsKIAorICAgIGludCBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKwogICAgIGNsYXNz
IFJlcXVlc3Q7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVxdWVzdD4gUmVxdWVzdE1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcio+
IFN0cmVhbU1hcDsKIAogICAgIFJlcXVlc3RNYXAgbV9yZXF1ZXN0czsKICAgICBTdHJlYW1NYXAg
bV9zdHJlYW1zOworICAgIFJlcXVlc3RNYXAgbV9wZWVyQ29ubmVjdGlvbnM7CiAKICAgICBNZWRp
YVN0cmVhbUNsaWVudCogbV9jbGllbnQ7CiAgICAgaW50IG1fbmV4dEdsb2JhbFJlcXVlc3RJZDsK
KyAgICBpbnQgbV9uZXh0R2xvYmFsUGVlckNvbm5lY3Rpb25JZDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlci5jcHAKaW5kZXggOTIwNTMzOGQwMDc3Y2IzZDE2YjFiYzFhOGQ5ZTBjOWU2Y2U0
ZTMzOS4uNDIwZDZhNDgyZGY5ZmM4YzYwMTAzYTFmMDk4Nzg0ZDRlZDlmMTIyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKQEAg
LTM2LDcgKzM2LDkgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDYgKzUxLDcg
QEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZVN0cmVhbVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlY29yZGVkRGF0YVJlcXVlc3QoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NpZ25hbGluZ1JlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogCkBA
IC0zNjAsNiArMzYzLDEyNiBAQCB2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJl
YW1GYWlsZWQoY29uc3QgU3RyaW5nJiBsYWJlbCkKICAgICBnZXRTdHJlYW1Gcm9tTGFiZWwobGFi
ZWwpLT5zdHJlYW1FbmRlZCgpOwogfQogCitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3QgQXRvbWlj
U3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWdu
YWxpbmdDYWxsYmFjaykKK3sKKyAgICBpbnQgY2xpZW50SWQgPSBtX2NsaWVudHMuZ2V0TmV4dElk
KCk7CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IFBlZXJDb25u
ZWN0aW9uOjpjcmVhdGUodGhpcywgY2xpZW50SWQsIGNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0Nh
bGxiYWNrKTsKKyAgICBpZiAocGVlckNvbm5lY3Rpb24pCisgICAgICAgIG1fY2xpZW50cy5hZGQo
Y2xpZW50SWQsIHBlZXJDb25uZWN0aW9uLmdldCgpKTsKKyAgICByZXR1cm4gcGVlckNvbm5lY3Rp
b247Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om5ld1BlZXJDb25uZWN0
aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVy
KCktPm5ld1BlZXJDb25uZWN0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIGNvbmZpZ3VyYXRp
b24pOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjbG9zZVBlZXJDb25u
ZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigp
KQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5jbG9zZVBlZXJDb25uZWN0aW9uKHRoaXMsIHBl
ZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpz
dGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChwYWdlQ29u
dHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5zdGFydE5lZ290aWF0aW9uKHRo
aXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAg
ICAgICBwYWdlQ29udHJvbGxlcigpLT5wcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSh0aGlzLCBwZWVy
Q29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6bWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJv
bGxlcigpLT5tZXNzYWdlKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2
b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0
aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8
TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJlZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNv
bnRhaW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisg
ICAgICAgIHBhZ2VDb250cm9sbGVyKCktPmFkZFN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlvbklk
LCBzdHJlYW0tPmxhYmVsKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpyZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVh
bVJlZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbS0+bGFiZWwoKSkpOwor
CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnJl
bW92ZVN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW0tPmxhYmVsKCkpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IHBlZXJDb25u
ZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9j
bGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRz
LmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0
cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVj
dGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5l
Y3Rpb24tPm9uTWVzc2FnZShtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6b25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyZWFtTGFiZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNr
cykKK3sKKyAgICBBU1NFUlQoIXN0cmVhbUxhYmVsLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9j
bGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRz
LmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSh0aGlzLCBzdHJlYW1M
YWJlbCwgdHJhY2tzKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rp
b24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5l
Y3Rpb25JZCkpOworICAgIHBlZXJDb25uZWN0aW9uLT5zdHJlYW1BZGRlZChzdHJlYW0pOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvblJlbW92ZVN0cmVhbShpbnQgcGVl
ckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBB
U1NFUlQoIXN0cmVhbUxhYmVsLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRh
aW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29u
bmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVj
dGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xp
ZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworICAgIHBlZXJDb25uZWN0aW9uLT5zdHJlYW1S
ZW1vdmVkKHN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6b25TaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29u
bmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkt
PmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJD
b25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBl
ZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25TaWduYWxpbmdNZXNzYWdl
KG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290
aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBUT0RPOiBBc3Nl
cnQgb3Igbm90PworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25J
ZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJD
b25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVj
dGlvbklkKSk7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25OZWdvdGlhdGlvblN0YXJ0ZWQoKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUo
aW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gVE9ETzogQXNzZXJ0IG9yIG5vdD8KKyAg
ICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NF
UlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsK
KworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2Fz
dDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisg
ICAgcGVlckNvbm5lY3Rpb24tPm9uTmVnb3RpYXRpb25Eb25lKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKaW5kZXggYjU1ZTBk
MDVhYTc5YjM5MDc5MTYxYzI0NTQyMDdhMGU5ODdiNzI1MC4uNzZjOWE4M2M5N2U2YjQ1YWUyYmI4
N2FhMmVmZjEzOGNlZWI4N2UzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3MgTWVkaWFTdHJl
YW1UcmFja0xpc3Q7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwogY2xh
c3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFnZTsKK2NsYXNz
IFBlZXJDb25uZWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOworY2xhc3MgU2lnbmFsaW5nQ2FsbGJhY2s7CiAKIGNsYXNzIE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcik7CkBAIC02OSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCBib29sIGlzTWVkaWFTdHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2NhbE1lZGlhU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzR2VuZXJpY0NsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1BlZXJDb25uZWN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgZnJhbWUgY29u
dHJvbGxlciBpcyBiZWluZyBkaXNjb25uZWN0ZWQgdG8gdGhlIE1lZGlhU3RyZWFtQ2xpZW50IGVt
YmVkZGVyLgogICAgICAgICAvLyBDbGllbnRzIHNob3VsZCBvdmVycmlkZSB0aGlzIHRvIHNlbmQg
YW55IHJlcXVpcmVkIHNodXRkb3duIG1lc3NhZ2VzLgpAQCAtMTM3LDYgKzE0MCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyKCkgeyB1bnJlZ2lzdGVyQ2xpZW50
KHRoaXMpOyB9CiAgICAgfTsKIAorICAgIGNsYXNzIFBlZXJDb25uZWN0aW9uQ2xpZW50IDogcHVi
bGljIEdlbmVyaWNDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGVlckNvbm5lY3Rpb25D
bGllbnQoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGlk
KSA6IEdlbmVyaWNDbGllbnQoZnJhbWVDb250cm9sbGVyLCBpZCkgeyB9CisgICAgICAgIHZpcnR1
YWwgflBlZXJDb25uZWN0aW9uQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Bl
ZXJDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CisKICAgICBNZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSopOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKCk7CiAKQEAgLTE2MCw2ICsxNzAsMzAgQEAgcHVibGljOgogICAgIC8v
IEVuYWJsZS9kaXNhYmxlIGFuIHRyYWNrLgogICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1UcmFja0Vu
YWJsZWQoY29uc3QgU3RyaW5nJiB0cmFja0lkLCBib29sIGVuYWJsZWQpOwogCisgICAgLy8gQ3Jl
YXRlcyBhIG5ldyBQZWVyQ29ubmVjdGlvbiBvYmplY3QuCisgICAgUGFzc1JlZlB0cjxQZWVyQ29u
bmVjdGlvbj4gY3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1
cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPik7CisKKyAgICAvLyBUZWxscyB0
aGUgdXNlciBhZ2VudCB0aGF0IGEgUGVlckNvbm5lY3Rpb24gb2JqZWN0IGhhcyBiZWVuIGNyZWF0
ZWQuCisgICAgdm9pZCBuZXdQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uKTsKKworICAgIC8vIFRlbGxzIHRoZSB1c2Vy
IGFnZW50IHRvIHN0YXJ0IHRoZSBuZWdvdGlhdGlvbi4KKyAgICB2b2lkIHN0YXJ0TmVnb3RpYXRp
b24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLy8gU2lnbmFsaW5nIG1lc3NhZ2UKKyAg
ICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgLy8gVGV4dCBtZXNzYWdlCisgICAgdm9p
ZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3Nh
Z2UpOworCisgICAgLy8gU3RhcnQgc2VuZCBhIHN0cmVhbSB0byB0aGUgb3RoZXIgcGVlcgorICAg
IHZvaWQgYWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPik7CisKKyAgICAvLyBTdG9wIHNlbmQgYSBzdHJlYW0gdG8gdGhlIG90aGVyIHBlZXIKKyAg
ICB2b2lkIHJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4pOworCisgICAgLy8gQ2xvc2UgZG93biBhbGwgYWN0aXZpdHkgaW4gdGhlIFBlZXJD
b25uZWN0aW9uIG9iamVjdC4KKyAgICB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJD
b25uZWN0aW9uSWQpOworCiAgICAgLy8gLS0tIENhbGxzIGNvbWluZyBiYWNrIGZyb20gdGhlIGNv
bnRyb2xsZXIuIC0tLSAvLwogCiAgICAgLy8gUmVwb3J0IHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3
IGxvY2FsIHN0cmVhbS4KQEAgLTE3MSw2ICsyMDUsMjQgQEAgcHVibGljOgogICAgIC8vIFJlcG9y
dCB0aGUgZW5kIG9mIGEgc3RyZWFtIGZvciBleHRlcm5hbCByZWFzb25zLgogICAgIHZvaWQgc3Ry
ZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgLy8gU2lnbmFsaW5n
IG1lc3NhZ2UKKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIC8vIFRleHQgbWVzc2FnZQor
ICAgIHZvaWQgb25NZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJp
bmcmIG1lc3NhZ2UpOworCisgICAgLy8gSW5mb3JtcyB0aGF0IHRoZSBvdGhlciBwZWVyIGhhcyBz
dGFydGVkIHNlbmRpbmcgYSBzdHJlYW0gdG8gdXMKKyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MpOworCisgICAgLy8gSW5mb3JtcyB0aGF0
IHRoZSBvdGhlciBwZWVyIGhhcyBzdG9wcGVkIHNlbmRpbmcgYSBzdHJlYW0gdG8gdXMKKyAgICB2
b2lkIG9uUmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmVhbUxhYmVsKTsKKworICAgIC8vIElDRS9TVFVOL1RVUk4gZXRjIG5lZ290aWF0aW9u
IHN0YXJ0ZWQuCisgICAgdm9pZCBvbk5lZ290aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rp
b25JZCk7CisKKyAgICAvLyBJQ0UvU1RVTi9UVVJOIGV0YyBuZWdvdGlhdGlvbiBkb25lLgorICAg
IHZvaWQgb25OZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpOworCiBwcml2YXRl
OgogICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgY2xhc3MgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102012</attachid>
            <date>2011-07-26 08:41:48 -0700</date>
            <delta_ts>2011-08-02 02:22:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110726174146.patch</filename>
            <type>text/plain</type>
            <size>94455</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE3NTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDQxNjk3NGNmN2Q5YWZkYjAwNzc4ZTk0ZDM1ZTcxMzI4
Yjk1Zjg1MmMuLjU1NjM3MTNiYmU1MTdkZTdlYTI5ODM0ZjRjMjBiZTI4OTk3NDU1NTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMjkzLDYg
KzI5Myw4IEBAIFBBU1MgaW5uZXIuT3ZlcmZsb3dFdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIuT3ZlcmZsb3dFdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5u
ZXIuUGFnZVRyYW5zaXRpb25FdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuUGFnZVRy
YW5zaXRpb25FdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuUGVl
ckNvbm5lY3Rpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlBlZXJDb25uZWN0aW9uLmNv
bnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5QbHVnaW4uaXNJbm5lciBpcyB0
cnVlCiBQQVNTIGlubmVyLlBsdWdpbi5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIuUGx1Z2luQXJyYXkuaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDZkMGY5YWU5NmVhZTkzZWNmNjgxNTlkN2E4ZmQwYjYzMDQxMzk1ZmIuLmE4ZThkYTUwYmNiYmNh
MjVkZGI4NGFkYTkxMWIyZTkzMmQ1YmZmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDA2
LDYgKzIwMDYsNyBAQCBJRiAoRU5BQkxFX01FRElBX1NUUkVBTSkKICAgICAgICAgZG9tL01lZGlh
U3RyZWFtTGlzdC5jcHAKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suY3BwCiAgICAgICAg
IGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKKyAgICAgICAgZG9tL1BlZXJDb25uZWN0aW9u
LmNwcAogICAgICAgICBkb20vU3RyZWFtRXZlbnQuY3BwCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmNwcAogICAgICAgICBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmNwcApAQCAtMjAxNyw2ICsyMDE4LDggQEAgSUYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCiAgICAg
ICAgIGRvbS9NZWRpYVN0cmVhbUxpc3QuaWRsCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNr
LmlkbAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCisgICAgICAgIGRvbS9Q
ZWVyQ29ubmVjdGlvbi5pZGwKKyAgICAgICAgZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbAogICAg
ICAgICBkb20vU3RyZWFtRXZlbnQuaWRsCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3IuaWRsCiAgICAgKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYxODgxMTEwZDBlNDE1OTcyMTgxMWQ3NjZi
Mzk1OWU4ZTRkNzBmMmYuLmYxNDAyYTY5NTJjYWY0NWI3NzE3M2NjNjJhMzQyOTIyNWI5MjY1ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjUgQEAKKzIwMTEtMDctMjUgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBs
ZW1lbnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBMYXlvdXRUZXN0IG1vZGlmaWNh
dGlvbnMgd2lsbCBiZSBpbiBteSBuZXh0IHBhdGNoLCB0b2dldGhlciB3aXRoIHNldmVyYWwgdGVz
dHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb2RlR2VuZXJhdG9y
cy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBV
c2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUu
cHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnBlZXJDb25uZWN0aW9uRW5hYmxlZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFn
ZS9NZWRpYVN0cmVhbUNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6SlNQZWVyQ29ubmVjdGlv
bkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVy
Ojpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VjhQZWVyQ29ubmVjdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAq
IGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9Q
ZWVyQ29ubmVjdGlvbik6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICog
ZG9tL1BlZXJDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVE
aXNwYXRjaFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVEaXNwYXRjaFRh
c2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNoVGFzazo6
U2ltcGxlRGlzcGF0Y2hUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BhdGNoVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BhdGNoVGFzazo6cGVyZm9ybVRhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpEaXNwYXRjaFRhc2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9u
U3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25OZWdvdGlhdGlv
bkRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnN0cmVhbUFkZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzdHJlYW1SZW1vdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb246Om9uU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnBvc3RTaWduYWxpbmdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6cG9zdFN0cmVhbUFkZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnBvc3RTdHJlYW1SZW1vdmVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb246OnBvc3RTaW1wbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzayk6CisgICAg
ICAgICogZG9tL1BlZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBkb20vUGVlckNvbm5lY3Rpb24uaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vU2lnbmFsaW5nQ2FsbGJhY2suaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6U2ln
bmFsaW5nQ2FsbGJhY2s6On5TaWduYWxpbmdDYWxsYmFjayk6CisgICAgICAgICogZG9tL1NpZ25h
bGluZ0NhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgor
ICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpmcmFtZVRvUGFnZVBlZXJDb25uZWN0
aW9uSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpwcm9jZXNz
U2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpv
bk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbkFkZFN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlbW92ZVN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uUmVtb3Zl
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bmV3UGVl
ckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpj
bG9zZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6c3RhcnROZWdvdGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAqIHBhZ2UvTWVk
aWFTdHJlYW1Db250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6UmVxdWVzdDo6aXNTaWduYWxpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bmV3UGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNsb3NlUGVlckNv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OnN0YXJ0TmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25NZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbkFkZFN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5n
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
b25OZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6Q2xpZW50QmFzZTo6aXNQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5lY3Rpb25DbGllbnQ6OlBl
ZXJDb25uZWN0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6flBlZXJDb25uZWN0aW9uQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVj
dGlvbkNsaWVudDo6aXNQZWVyQ29ubmVjdGlvbik6CisKIDIwMTEtMDctMjYgIEFsZXhpcyBNZW5h
cmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kcmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3Jz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQppbmRleCBmMjlmNGY1OWU4
ODlhYTkwNWU4ZWJmOWZhMjUwNTk2Njc1OGJiMTkyLi5lZGVmYjc2OGExZjI1MTZlZmNjYWZmM2Zh
OWUyY2VkN2Q1YzUxYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9y
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCkBAIC0xNTksMTEg
KzE1OSwxMyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIGRvbS9Ob3RhdGlvbi5pZGwgXAogICAg
IGRvbS9PdmVyZmxvd0V2ZW50LmlkbCBcCiAgICAgZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRs
IFwKKyAgICBkb20vUGVlckNvbm5lY3Rpb24uaWRsIFwKICAgICBkb20vUG9wU3RhdGVFdmVudC5p
ZGwgXAogICAgIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaWRsIFwKICAgICBkb20vUHJvZ3Jl
c3NFdmVudC5pZGwgXAogICAgIGRvbS9SYW5nZUV4Y2VwdGlvbi5pZGwgXAogICAgIGRvbS9SYW5n
ZS5pZGwgXAorICAgIGRvbS9TaWduYWxpbmdDYWxsYmFjay5pZGwgXAogICAgIGRvbS9TdHJlYW1F
dmVudC5pZGwgXAogICAgIGRvbS9TdHJpbmdDYWxsYmFjay5pZGwgXAogICAgIGRvbS9UZXh0Lmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMzFhM2U4MDlkOWQ0MjkyNjNkMTA5
MWJiZmI0MzUwMmUyZmIzNmExMi4uNWRmMzMwZTBmNDQxZmVjNWI5YjMwMjgwNzEyYzMwMjQ3OWFl
OTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjU4LDYgKzI1OCw3IEBACiAj
aW5jbHVkZSAiSlNPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJK
U092ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAi
CisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5j
ZS5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIgogI2luY2x1ZGUg
IkpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIgpAQCAtMjc2LDYgKzI3Nyw3IEBACiAjaW5jbHVkZSAi
SlNTY3JpcHRQcm9maWxlTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuY3BwIgog
I2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5jcHAiCisjaW5jbHVkZSAiSlNTaWduYWxp
bmdDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNTUUxFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNT
UUxFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDYxZWI3ZjU5ZWMwMzkzY2RjMTE1OTEyMmU5NGExZmE3
ZDE3OWYwOTYuLjUzMTNhODIyYzcyMTVlNzhmMmE1NGE0NmM2MTMxOTI1OGJkMjdlMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzMyLDYgKzMzMiw3IEBAIERPTV9DTEFTU0VT
ID0gXAogICAgIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24gXAogICAgIE92ZXJmbG93RXZl
bnQgXAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAorICAgIFBlZXJDb25uZWN0aW9uIFwKICAg
ICBQZXJmb3JtYW5jZSBcCiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIFwKICAgICBQZXJmb3Jt
YW5jZVRpbWluZyBcCkBAIC0zNDksNiArMzUwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgU2hh
cmVkV29ya2VyQ29udGV4dCBcCiAgICAgU2NyaXB0UHJvZmlsZSBcCiAgICAgU2NyaXB0UHJvZmls
ZU5vZGUgXAorICAgIFNpZ25hbGluZ0NhbGxiYWNrIFwKICAgICBTcGVlY2hJbnB1dEV2ZW50IFwK
ICAgICBTcGVlY2hJbnB1dFJlc3VsdCBcCiAgICAgU3BlZWNoSW5wdXRSZXN1bHRMaXN0IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ1NGI5ZDNjYTZjM2ZkNjc0ZGE1NGRiZGE0
ZWVjOTVmZDQ5MmMxMjMuLjU1ZGRmZWYzMzQzZDFmNzBjZmU5ZjA3OGU0NzlkY2ZkM2VhYzQxNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDExLDYgKzQxMSw4IEBAIHdlYmNv
cmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93
RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1BlcmZvcm1hbmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZv
cm1hbmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRp
b24uY3BwIFwKQEAgLTQ0Nyw2ICs0NDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTU2hhcmVkV29ya2VyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaWdu
YWxpbmdDYWxsYmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaWduYWxpbmdD
YWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3BlZWNoSW5wdXRFdmVudC5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dEV2ZW50LmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dFJlc3VsdC5jcHAgXApAQCAtNzgwLDYg
Kzc4NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
T3B0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09w
dGlvbkNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bs
dWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIFwKQEAgLTEyMzUsNiArMTI0MCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20v
UGVlckNvbm5lY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vUGVuZGluZ1NjcmlwdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVF
dmVudC5jcHAgXApAQCAtMTI3Nyw2ICsxMjg0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAJU291cmNl
L1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
U3BhY2VTcGxpdFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggYWI0YjkxM2ZmODg1MWIwYTY5YWEzYjc1
NzNkMWYzZGUxZDAyNjc0OS4uZDQzY2Y4MzEyMGFlNmM3MjdkODRkMzczYzJkNTQ3ODU3ZGFmNzMx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMTAyLDYgKzEwMiw3IEBAIExJU1QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNPcHRp
b25Db25zdHJ1Y3Rvci5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDM5
OWJkZTZkMDI0Y2I4YWM0MzRiZWY3Mzg2MzNhODA3YjMzNzczNzUuLmU0YmI5YTVmYzFjZTA3Yzhk
Y2QxMTM1ZGNhYzgzYTg5MDBhNGU3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExODIsMTIgKzEx
ODIsMTQgQEAKICAgICAgICAgICAgICdkb20vTm90YXRpb24uaWRsJywKICAgICAgICAgICAgICdk
b20vT3ZlcmZsb3dFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlvbkV2
ZW50LmlkbCcsCisgICAgICAgICAgICAnZG9tL1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAg
ICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9tL1Byb2dyZXNzRXZlbnQuaWRsJywK
ICAgICAgICAgICAgICdkb20vUmFuZ2UuaWRsJywKICAgICAgICAgICAgICdkb20vUmFuZ2VFeGNl
cHRpb24uaWRsJywKICAgICAgICAgICAgICdkb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2suaWRsJywKKyAgICAgICAgICAgICdkb20vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKICAgICAg
ICAgICAgICdkb20vU3RyZWFtRXZlbnQuaWRsJywKICAgICAgICAgICAgICdkb20vU3RyaW5nQ2Fs
bGJhY2suaWRsJywKICAgICAgICAgICAgICdkb20vVGV4dC5pZGwnLApAQCAtMTg3Nyw2ICsxODc5
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0yMTc4
LDYgKzIxODEsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNl
bnRlckN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
UGVyZm9ybWFuY2VDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20v
VjhQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLApAQCAtMjU2MCw2ICsyNTY0LDgg
QEAKICAgICAgICAgICAgICdkb20vT3ZlcmZsb3dFdmVudC5oJywKICAgICAgICAgICAgICdkb20v
UGFnZVRyYW5zaXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9QYWdlVHJhbnNpdGlv
bkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9QZWVyQ29ubmVjdGlvbi5jcHAnLAorICAgICAg
ICAgICAgJ2RvbS9QZWVyQ29ubmVjdGlvbi5oJywKICAgICAgICAgICAgICdkb20vUGVuZGluZ1Nj
cmlwdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Qb3BTdGF0ZUV2ZW50LmNwcCcsCiAgICAgICAg
ICAgICAnZG9tL1BvcFN0YXRlRXZlbnQuaCcsCkBAIC0yNTk4LDYgKzI2MDQsNyBAQAogICAgICAg
ICAgICAgJ2RvbS9TaGFkb3dSb290LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3Qu
aCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwJywKKyAgICAgICAgICAg
ICdkb20vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3Qu
aCcsCiAgICAgICAgICAgICAnZG9tL1N0YXRpY05vZGVMaXN0LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IGQ4OGUyZmU2ODNkY2E3NGYwYTIwMzIyNmI0N2E2NTViYzZiMDcxMTEuLjhkMTgxMGZjMjg4
YjM1NGE0OGQ4MTY5YzAxZTk5YWFlZGE4ZDJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMjMzLDYg
KzMyMzMsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAg
ICAgICAgZG9tL01lZGlhU3RyZWFtTGlzdC5oIFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJh
Y2suaCBcCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwKKyAgICAgICAgZG9t
L1BlZXJDb25uZWN0aW9uLmggXAorICAgICAgICBkb20vU2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAg
ICAgICAgIGRvbS9TdHJlYW1FdmVudC5oIFwKICAgICAgICAgcGFnZS9DYWxsYmFja1Rhc2suaCBc
CiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCkBAIC0zMjQ4LDEzICszMjUwLDE5
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBk
b20vTWVkaWFTdHJlYW1MaXN0LmNwcCBcCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cCBcCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgXAorICAgICAgICBkb20v
UGVlckNvbm5lY3Rpb24uY3BwIFwKICAgICAgICAgZG9tL1N0cmVhbUV2ZW50LmNwcCBcCiAgICAg
ICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBcCiAgICAgICAgIHBhZ2UvTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCiAKICAgICB2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0g
XAotICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcAor
ICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcCBcCisg
ICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAK
KyAgICB9IGVsc2UgeworICAgICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgICAgIGJpbmRpbmdz
L2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1Bl
ZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxMzJjN2E2NjA1MDc0NDdlMjQ1ZTY3YWRi
ZDhlMjFiY2ViYTJjMTg2Li5jNGE2ZThkMmFkYWRmZWUxNThhMmI0MzQ1OWFlN2Q0OWIyZGNmMmI1
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAt
MTIzOTAsNiArMTIzOTAsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQZXJm
b3JtYW5jZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMTMyODYsNiAr
MTMzNDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpT
U2lnbmFsaW5nQ2FsbGJhY2suY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdlYkNv
cmVcRGVyaXZlZFNvdXJjZXNcSlNTaWduYWxpbmdDYWxsYmFjay5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTU1FMRXJyb3IuY3BwIgogCQkJCT4K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTQ3MTc0LDYgKzQ3Mjg2LDYyIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQZWVyQ29ubmVj
dGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxQZWVyQ29ubmVjdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUGVuZGluZ1NjcmlwdC5jcHAiCiAJCQkJ
PgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNDgyNzAsNiArNDg0MzgsMTAgQEAKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFNpZ25hbGlu
Z0NhbGxiYWNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxTcGFjZVNwbGl0U3RyaW5nLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkBAIC02MzEzMyw2ICs2MzMwNSw1OCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVj
dGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJhYTc4YzI3YmI5Zjc5MmUxYWJiN2Q0
ZmZiYjAzZTA2NTM3YzIwODUuLjAwYmIxZWM1ZmNkMmEzNDhiZTk4YzU2MmI4ODIyYzRhMDM1NzIy
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTExNDQsNiArMTE0NCwxNCBAQAogCQk0OUE4NUI2QzEzOEQ1NzNBMDBFQ0I3QjMg
LyogU3RyZWFtRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QTg1QjY5MTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oICovOyB9Owog
CQk0OUE4NUI3NzEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE4NUI3NTEzOEQ1OEVFMDBF
Q0I3QjMgLyogSlNTdHJlYW1FdmVudC5jcHAgKi87IH07CiAJCTQ5QTg1Qjc4MTM4RDU4RUUwMEVD
QjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUE4NUI3NjEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5o
ICovOyB9OworCQk0OUJFMzBEMjEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUJFMzBEMTEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87
IH07CisJCTQ5QkUzMEQ4MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMzEzRDk3
NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk0OUJFMzBEOTEzRDk3
NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQ0MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29u
bmVjdGlvbi5oICovOyB9OworCQk0OUJFMzBEQjEzRDk3NEM5MDAzODA4QTkgLyogU2lnbmFsaW5n
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5QkUzMEQ2MTNEOTc0QzkwMDM4MDhBOSAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovOyB9Owor
CQk0OUJFMzBGMzEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBFRjEzRDk3NjQ2
MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTQ5QkUzMEY0MTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVy
Q29ubmVjdGlvbi5oICovOyB9OworCQk0OUJFMzBGNTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWdu
YWxpbmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OUJFMzBGMTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5j
cHAgKi87IH07CisJCTQ5QkUzMEY2MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJF
MzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5oICovOyB9OwogCQk0
OUM3Qjk5MzEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3Qjk4MDEwNDJEMkQzMDAwOUQ0
NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgKi87IH07CiAJCTQ5QzdCOTk0MTA0MkQyRDMwMDA5RDQ0
NyAvKiBKU1dlYkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICov
OyB9OwogCQk0OUM3Qjk5NTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5ODIxMDQyRDJE
MzAwMDlENDQ3IC8qIEpTSW50OEFycmF5LmNwcCAqLzsgfTsKQEAgLTc2OTYsNiArNzcwNCwxNiBA
QAogCQk0OUE4NUI2QTEzOEQ1NzNBMDBFQ0I3QjMgLyogU3RyZWFtRXZlbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFN0cmVhbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDlBODVCNzUxMzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJlYW1FdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1Qjc2MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0
cmVhbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyZWFtRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDExM0Q5NzQ3QjAwMzgw
OEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5QkUzMEQzMTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQZWVyQ29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEQ0MTNEOTc0QzkwMDM4
MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBE
NTEzRDk3NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFBlZXJDb25uZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDlCRTMwRDYxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpZ25hbGluZ0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEQ3MTNEOTc0QzkwMDM4MDhBOSAvKiBTaWduYWxpbmdD
YWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2lnbmFsaW5nQ2FsbGJhY2suaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBFRjEzRDk3NjQ2MDAzODA4QTkg
LyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1BlZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OUJFMzBGMTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdD
YWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NpZ25h
bGluZ0NhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRjIx
M0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNTaWduYWxpbmdDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OUM3Qjk4MDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQnVmZmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNX
ZWJHTEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3Qjk4MjEwNDJE
MkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJbnQ4QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTcyNjksNiArMTcyODcsOCBAQAogCQkJCUJDRDlDMkJGMEMxN0I2OUUwMDVDOTBBMiAvKiBK
U05vZGVMaXN0LmggKi8sCiAJCQkJNjVERjMxRTkwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRp
b24uY3BwICovLAogCQkJCTY1REYzMUVBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmgg
Ki8sCisJCQkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3Bw
ICovLAorCQkJCTQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNTk4MzY1RTMxMzU1RjYwNDAwMUIxODVEIC8qIEpTUG9zaXRpb25DYWxsYmFjay5j
cHAgKi8sCiAJCQkJNTk4MzY1REMxMzU1RjUzQzAwMUIxODVEIC8qIEpTUG9zaXRpb25DYWxsYmFj
ay5oICovLAogCQkJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
Y3BwICovLApAQCAtMTcyNzksNiArMTcyOTksOCBAQAogCQkJCTY1REYzMUVDMDlEMUNDNjAwMDBC
RTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAogCQkJCUU0QjQyMzg1MENCRkI3
M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuY3BwICovLAogCQkJCUU0QjQyMzg2MENCRkI3
M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuaCAqLywKKwkJCQk0OUJFMzBGMTEzRDk3NjQ2
MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5jcHAgKi8sCisJCQkJNDlCRTMwRjIxM0Q5
NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCAqLywKIAkJCQk3NTQxNUQ0RjEy
OUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCAqLywKIAkJCQk3NTQxNUQ1
MDEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2ZW50LmggKi8sCiAJCQkJNzU0MTVE
NTExMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHQuY3BwICovLApAQCAtMTg2
MjksNiArMTg2NTEsNyBAQAogCQkJCUJDQjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVG
aWx0ZXJDdXN0b20uY3BwICovLAogCQkJCTFBNzUwREQzMEE5MEU3MjkwMDBGRjIxNSAvKiBKU05v
ZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8q
IEpTTm9kZUxpc3RDdXN0b20uY3BwICovLAorCQkJCTQ5QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAv
KiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTJENTEyOTVEMEJEMDBB
Q0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwICovLAogCQkJCTlGQTM3
RUU2MTE3MkZDRjAwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCAqLywK
IAkJCQk1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcCAqLywKQEAgLTE5ODQ5LDYgKzE5ODcyLDkgQEAKIAkJCQlFMTI4NEFFOTEwNDQ3REVF
MDBFQUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgKi8sCiAJCQkJRTEyODRBRTAxMDQ0
N0Q0NTAwRUFFQjUyIC8qIFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCAqLywKIAkJCQlFMTI4NEFEOTEw
NDQ3QUVCMDBFQUVCNTIgLyogUGFnZVRyYW5zaXRpb25FdmVudC5pZGwgKi8sCisJCQkJNDlCRTMw
RDMxM0Q5NzRDOTAwMzgwOEE5IC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0OUJFMzBE
NDEzRDk3NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uaCAqLywKKwkJCQk0OUJFMzBENTEz
RDk3NEM5MDAzODA4QTkgLyogUGVlckNvbm5lY3Rpb24uaWRsICovLAogCQkJCThBN0NDOTZGMTIw
NzZGOEEwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmNwcCAqLywKIAkJCQk4QTdDQzk2QTEyMDc2
RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oICovLAogCQkJCTQxQkY3MDBEMEZFODZGNjEw
MDVFOERFQyAvKiBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAgKi8sCkBAIC0xOTg5OCw2
ICsxOTkyNCw4IEBACiAJCQkJQTcxQzMwQjcxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmggKi8sCiAJCQkJQTZEMTY5NjExMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRv
d1Jvb3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290
LmggKi8sCisJCQkJNDlCRTMwRDYxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNr
LmggKi8sCisJCQkJNDlCRTMwRDcxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNr
LmlkbCAqLywKIAkJCQlEMDFBMjdBQjEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmlu
Zy5jcHAgKi8sCiAJCQkJRDAxQTI3QUMxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJp
bmcuaCAqLywKIAkJCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmNwcCAqLywKQEAgLTIxOTUxLDYgKzIxOTc5LDcgQEAKIAkJCQlBODI2RThBRTBBMUE4
RjIzMDBDRDFCQjYgLyogSlNPcHRpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUEwRDU3NDEwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTEyODRCQjExMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlCRTMwRjQxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODc1MTFFODRDODEwMDhBQ0ZE
MSAvKiBKU1BlcmZvcm1hbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3MTExRTg0QzM2
MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CThBOUE1ODg4MTFFODRGMzcwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmggaW4gSGVh
ZGVycyAqLywKQEAgLTIxOTcxLDYgKzIyMDAwLDcgQEAKIAkJCQk5RkEzN0VGRDExNzJGREE2MDBD
NENENTUgLyogSlNTY3JpcHRQcm9maWxlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMDdB
N0YwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUQxNjkwNjEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKKwkJCQk0OUJFMzBGNjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTVENTYxMjlBQjJEMjAwM0FENjY5IC8q
IEpTU3BlZWNoSW5wdXRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTVENTgxMjlBQjJE
MjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1
NDE1RDVBMTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0TGlzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjIzOSw4ICsyMjI2OSw4IEBACiAJCQkJOTMzMDlERjgwOTlFNjQ5MjAw
NTZFNTgxIC8qIG1hcmt1cC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyOEMzMTQxMjY4RTQzOTAw
NDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEE2MjlD
MTEzRDBCRUM3MDA1MEFDNTIgLyogTWFya3VwVG9rZW5CYXNlLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwMEM2MEUzRjEzRDc2RDdFMDA5MkEyNzUgLyogTWFya3VwVG9rZW5pemVySW5saW5lTWV0aG9k
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBDNjBFNDIxM0Q3OTdBRTAwOTJBMjc1IC8qIE1hcmt1
cFRva2VuaXplckJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTAwQzYwRTNGMTNENzZEN0UwMDky
QTI3NSAvKiBNYXJrdXBUb2tlbml6ZXJJbmxpbmVNZXRob2RzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGQUJFNzJGNTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGQUJFNzJGNzEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM4NCw2ICsyMjQx
NCw3IEBACiAJCQkJQThGQTZFNUQwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3OTcxMEQwMEJGMjIwMDcxQjc4MiAvKiBQYXR0ZXJuQXR0cmlidXRl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjUwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRv
Y3VtZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkUzMEQ5MTNEOTc0QzkwMDM4MDhB
OSAvKiBQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE3Q0M5NkIxMjA3NkQ3
MzAwMUQ0NTg4IC8qIFBlbmRpbmdTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0RDA1
MTFEM0MxOEUwMDE0MDY1QyAvKiBQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFG
NEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMjY2Nyw4ICsyMjY5OCw4IEBACiAJCQkJNDk4NzcwRTkxMjQyQzUzNTAwMjIy
NkJBIC8qIFNoYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzREQ0NTAxMkY1RUExQjAwMEQ5
MTkwIC8qIFNoYWRvd0JsdXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NEMyRDNDMTM4MTFFMEQw
MEY4MzU3MiAvKiBTaGFkb3dDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTcx
QzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lvblNlbGVjdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTcxQzMwQjkxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1
c2lvblNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNkQxNjk2NDEzNDZCNEMxMDAwRUI3
NzAgLyogU2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZDRTgwQTE5ODlDQTAw
N0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkFGRkM5NDBEMDBB
NURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuaCBpbiBIZWFkZXJzICovLApAQCAtMjI2NzksNiAr
MjI3MTAsNyBAQAogCQkJCTQxRDE2OEU4MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJD
b250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFQTEwMjI2RTg5MDA5QkM4MjcgLyog
U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMTY4RUUxMDIy
NkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDlCRTMwREIxM0Q5NzRDOTAwMzgwOEE5IC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RTkxMUNEMEVGODZENDcwMDlEMENBRiAvKiBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTI2LDYgKzI0OTU4LDgg
QEAKIAkJCQlBODI2RUM0ODBBMUIwQ0JFMDBDRDFCQjYgLyogSlNPcHRpb25Db25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBENTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVy
Zmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QkIyMTA0NDlGRkEwMEVBRUI1
MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlCRTMw
RjMxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNDlCRTMwRDIxM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE5QTU4NzQxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE5QTU4NzAxMUU4NEMzNjAwOEFDRkQx
IC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBOUE1
ODg3MTFFODRGMzcwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjQ5NDksNiArMjQ5ODMsNyBAQAogCQkJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1RURD
RSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxNjkwNTEwMjM4
QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0Q0Q4RDgyMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0OUJFMzBGNTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxp
bmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTQxNUQ1NTEyOUFCMkQyMDAzQUQ2
NjkgLyogSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDE1RDU3
MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTc1NDE1RDU5MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1MzU2LDYgKzI1MzkxLDcgQEAKIAkJCQlBOEZBNkU1
RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBB
MzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNzUzNTY0MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQ5QkUzMEQ4MTNEOTc0QzkwMDM4MDhBOSAvKiBQZWVyQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTdDQzk3MDEyMDc2RjhBMDAxRDQ1ODggLyogUGVuZGlu
Z1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMg
LyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFGNEU1NTUxMURDNUEzNjAw
MEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1
NTc4LDggKzI1NjE0LDggQEAKIAkJCQk0OTg3NzBFODEyNDJDNTM1MDAyMjI2QkEgLyogU2hhZGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0RENDRGMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFk
b3dCbHVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3NjZDRjhDMTM4MTBFMEMwMDExQTBCMyAv
KiBTaGFkb3dDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzFDMzBCODEz
ODEyNjVFMDBEQkMzNTEgLyogU2hhZG93SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM1RUI4QzMwRTgyMDMxQjAwQjI1OTY1IC8qIFNoYWRvd0RhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQTcxQzMwQjgxMzgxMjY1RTAwREJDMzUxIC8qIFNoYWRvd0luY2x1c2lv
blNlbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE2RDE2OTYyMTM0NkI0OUIwMDBFQjc3
MCAvKiBTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0Y0MEExOTg5Q0Ew
MDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkFGRkM5MzBE
MDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuYyBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaAppbmRleCAzNDMyZDc0NGYyYmZmODk1Y2M0MTExMmJkMzczNWUwMzBkYzZiZTdiLi40ZTg0
MzY3ODAwNjVlZjA0ZmMzMzc1NDMwY2NjOWRlNGQyOWI0MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApA
QCAtMTQ4LDYgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVu
YWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogICAgIHN0YXRpYyB2b2lk
IHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVu
YWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29s
IHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDU5YTkwYmZjZWJjNWVkODRiMmVk
OGUyZDExZDY3MmU3ZjMzN2U0OGEuLjVlMTU4MTUyMTY3ZDczMTZkYTUzOTQyMWMyNDIxMTE3MWU2
OGY0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcApAQCAtMTIzLDYgKzEyMyw3IEBACiAjaW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
T3B0aW9uQ29uc3RydWN0b3IuY3BwIgorI2luY2x1ZGUgIkpTUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAi
SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0
U2V0Um93TGlzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMDE2ZmM4NjZiMmU2
MDM3N2E2NjkzYmViM2Y0MjAxMDUyZGEzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAi
Q2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKKyNpbmNsdWRlICJKU1NpZ25h
bGluZ0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQZWVy
Q29ubmVjdGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0
b3IgPSBzdGF0aWNfY2FzdDxKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IqPihleGVjLT5jYWxs
ZWUoKSk7CisKKyAgICBTdHJpbmcgY29uZmlndXJhdGlvbiA9IHVzdHJpbmdUb1N0cmluZyhleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBS
ZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1
bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBhc0pTRE9N
V2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKTsKKyAg
ICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0gZnJhbWUgPyBm
cmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA6IDA7CisKKyAgICBSZWZQdHI8UGVl
ckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uOworICAgIGlmIChmcmFtZUNvbnRyb2xsZXIpCisg
ICAgICAgIHBlZXJDb25uZWN0aW9uID0gZnJhbWVDb250cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVj
dGlvbihjb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjayk7CisKKyAgICBpZiAoIXBlZXJD
b25uZWN0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywganNDb25zdHJ1
Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIHBlZXJDb25uZWN0aW9uLmdldCgpKSkpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMDM0ZDU0NzU5
ZDZmZmRjOWNjZmU1ZjdjNzQ4YmQ0ZjlkMzA0MzhjNS4uMDg2YTNhMjE5NjFkYzI4MDlhMjA3Y2Zi
YWU3ZjUyZDA3ZTNkZjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0
aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlY4Tm90aWZpY2F0aW9u
LmgiCisjaW5jbHVkZSAiVjhQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIK
ICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlY4U2hhcmVkV29ya2VyQ29u
dGV4dC5oIgpAQCAtNDU0LDYgKzQ1NSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdy
YXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoRXZlbnRUYXJnZXQqIHRhCiAKICAg
ICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdldC0+dG9NZWRpYVN0cmVhbSgpKQogICAg
ICAgICByZXR1cm4gdG9WOChzdHJlYW0pOworCisgICAgaWYgKFBlZXJDb25uZWN0aW9uKiBwZWVy
Q29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVyQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4g
dG9WOChwZWVyQ29ubmVjdGlvbik7CiAjZW5kaWYKIAogICAgIEFTU0VSVCgwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0
aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODNmOWIxZWUxMDFlYWZlMWUwNWM1YjZjNDg3Mzcx
NWY2MzBlYTM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJWOFBlZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cu
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBlZXJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2lu
Y2x1ZGUgIlY4U2lnbmFsaW5nQ2FsbGJhY2suaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQZWVyQ29ubmVjdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlBlZXJD
b25uZWN0aW9uLkNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxs
KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNh
bm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisK
KyAgICBpbnQgYXJnTGVuZ3RoID0gYXJncy5MZW5ndGgoKTsKKyAgICBpZiAoYXJnTGVuZ3RoICE9
IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gY29uc3Ry
dWN0b3IgdGFrZXMgdHdvIGFyZ3VtZW50cy4iLCBWOFByb3h5OjpTeW50YXhFcnJvcik7CisKKyAg
ICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKKyAgICBBdG9taWNTdHJpbmcgY29uZmln
dXJhdGlvbiA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdLT5Ub1N0cmluZygpKTsKKyAgICBpZiAo
ZXhjZXB0aW9uQ2F0Y2hlci5IYXNDYXVnaHQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhjZXB0aW9uQ2F0Y2hlci5FeGNlcHRpb24oKSk7CisKKyAgICBib29sIHN1Y2NlZWRlZCA9IGZh
bHNlOworICAgIFJlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2sgPSBj
cmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxWOFNpZ25hbGluZ0NhbGxiYWNrPihhcmdzWzFdLCBz
dWNjZWVkZWQpOworICAgIGlmICghc3VjY2VlZGVkIHx8ICFzaWduYWxpbmdDYWxsYmFjaykKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoIlRoZSBQZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciBt
dXN0IGJlIGdpdmVuIGEgU2lnbmFsaW5nQ2FsbGJhY2sgY2FsbGJhY2suIiwgVjhQcm94eTo6VHlw
ZUVycm9yKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JD
dXJyZW50Q29udGV4dCgpOworICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNv
bnRyb2xsZXIgPSBmcmFtZSA/IGZyYW1lLT5tZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpIDog
MDsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb247CisgICAgaWYg
KGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgcGVlckNvbm5lY3Rpb24gPSBmcmFtZUNvbnRyb2xs
ZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNr
KTsKKworICAgIGlmICghcGVlckNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CisKKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwg
JmluZm8sIHBlZXJDb25uZWN0aW9uLmdldCgpKTsKKyAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVj
dGlvbi5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJ
bk9uZS5jcHAKaW5kZXggM2FkMTU2NmU2NzNkMjdmYjkxMjA5YmU2NmE0ZmQ5NzMxOTdhNmRmNy4u
NTM0MjM3NjU3MjJlZmIwYjZhOTE3NmU2YzY5ZWZlNzI1ZmM3YjJkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NQWxsSW5PbmUuY3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSAiT3B0aW9uR3JvdXBF
bGVtZW50LmNwcCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmNwcCIKICNpbmNsdWRlICJQYWdl
VHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5jcHAiCiAjaW5j
bHVkZSAiUGVuZGluZ1NjcmlwdC5jcHAiCiAjaW5jbHVkZSAiUG9wU3RhdGVFdmVudC5jcHAiCiAj
aW5jbHVkZSAiUG9zaXRpb24uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOWRkMTgz
NzBhNGRkNzFmOWUzYzRkM2JmNzI0MzhmYmZhYzUwODJmZS4uZDgxMjNlODQwYTlhMjFkZmE5MDA3
MDJjNTBkMDBlMDQ3YjVmZGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xODAsNiAr
MTgwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8oYXVkaW9wcm9j
ZXNzKSBcCiAgICAgXAorICAgIG1hY3JvKGNvbm5lY3RpbmcpIFwKKyAgICBtYWNybyhhZGRzdHJl
YW0pIFwKKyAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKKyAgICBcCisKIC8vIGVuZCBvZiBET01f
RVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNsYXNzIEV2ZW50TmFtZXMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKaW5kZXggYTI4YmRiMTNkMmNlODJmYTY5MjNmOTNiMzZiZmExNzA3
ZjMzZTA3MC4uY2I4ZGQyZDg2ZjBkM2E2NzlkOTM4OWI3YWY3ODk1ZmYwNmE1OTlkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0yMTUsNiArMjE1LDExIEBAIExvY2FsTWVkaWFT
dHJlYW0qIEV2ZW50VGFyZ2V0Ojp0b0xvY2FsTWVkaWFTdHJlYW0oKQogewogICAgIHJldHVybiAw
OwogfQorCitQZWVyQ29ubmVjdGlvbiogRXZlbnRUYXJnZXQ6OnRvUGVlckNvbm5lY3Rpb24oKQor
eworICAgIHJldHVybiAwOworfQogI2VuZGlmCiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmgKaW5kZXggYmNjNzU4YzMwMzcxMzYyZmViYzE3MjdjYjgyMmE5NzFjNWZiYzQ2Zi4uODBlMWFm
NWMyMmQxODA0MjQ3ZjY5MGIyOTBlM2VkNjQzZGFkYTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTU5LDYgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1l
c3NhZ2VQb3J0OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uOworICAg
IGNsYXNzIFBlZXJDb25uZWN0aW9uOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAg
ICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsK
QEAgLTE1Miw2ICsxNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKICAgICAgICAgdmlydHVhbCBNZWRpYVN0cmVhbSogdG9NZWRpYVN0cmVhbSgpOwog
ICAgICAgICB2aXJ0dWFsIExvY2FsTWVkaWFTdHJlYW0qIHRvTG9jYWxNZWRpYVN0cmVhbSgpOwor
ICAgICAgICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7CiAjZW5k
aWYKIAogICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNDZiMjgyZjJlMDUxZGMxMWZhODNiYmIxODRmOWRhM2JiNGUzYjZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtMCwwICsxLDM3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRXJyb3JFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW1MaXN0LmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNpZ25hbGluZ0NhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiU3RyZWFtRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRD4KK2NsYXNzIFNpbXBsZURpc3BhdGNoVGFzayA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQg
KFQ6OipDYWxsYmFjaykoY29uc3QgRCYpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8U2ltcGxl
RGlzcGF0Y2hUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxUPiBvYmplY3QsIENhbGxiYWNrIGNhbGxi
YWNrLCBjb25zdCBEJiBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
aW1wbGVEaXNwYXRjaFRhc2sob2JqZWN0LCBjYWxsYmFjaywgZGF0YSkpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7
CisgICAgICAgIChtX29iamVjdC5nZXQoKS0+Km1fY2FsbGJhY2spKG1fZGF0YSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFNpbXBsZURpc3BhdGNoVGFzayhQYXNzUmVmUHRyPFQ+IG9iamVjdCwg
Q2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IEQmIGRhdGEpCisgICAgICAgIDogbV9vYmplY3Qob2Jq
ZWN0KQorICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV9kYXRhKGRh
dGEpIHsgfQorCisgICAgUmVmUHRyPFQ+IG1fb2JqZWN0OworICAgIENhbGxiYWNrIG1fY2FsbGJh
Y2s7CisgICAgRCBtX2RhdGE7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
QTEsIHR5cGVuYW1lIEEyPgorY2xhc3MgRGlzcGF0Y2hUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoVDo6KkNhbGxi
YWNrKShjb25zdCBBMSYsIFBhc3NSZWZQdHI8QTI+KTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRy
PERpc3BhdGNoVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBDYWxsYmFjayBjYWxs
YmFjaywgY29uc3QgQTEmIGFyZzEsIFBhc3NSZWZQdHI8QTI+IGFyZzIpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IERpc3BhdGNoVGFzayhvYmplY3QsIGNhbGxiYWNrLCBhcmcx
LCBhcmcyKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgKG1fb2JqZWN0LmdldCgpLT4qbV9jYWxs
YmFjaykobV9hcmcxLCBtX2FyZzIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBEaXNwYXRjaFRh
c2soUGFzc1JlZlB0cjxUPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBBMSYgYXJn
MSwgUGFzc1JlZlB0cjxBMj4gYXJnMikKKyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAg
ICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2FyZzEoYXJnMSkKKyAgICAg
ICAgLCBtX2FyZzIoYXJnMikgeyB9CisKKyAgICBSZWZQdHI8VD4gbV9vYmplY3Q7CisgICAgQ2Fs
bGJhY2sgbV9jYWxsYmFjazsKKyAgICBBMSBtX2FyZzE7CisgICAgUmVmUHRyPEEyPiBtX2FyZzI7
Cit9OworCisKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IFBlZXJDb25uZWN0aW9uOjpjcmVh
dGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGlkLCBj
b25zdCBBdG9taWNTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIC8vIFRPRE86IFZlcmlmeSBjb25maWd1
cmF0aW9uCisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBjID0gYWRvcHRSZWYobmV3IFBl
ZXJDb25uZWN0aW9uKGZyYW1lQ29udHJvbGxlciwgaWQsIGNvbmZpZ3VyYXRpb24sIHNpZ25hbGlu
Z0NhbGxiYWNrKSk7CisgICAgcGMtPmluaXQoKTsKKyAgICByZXR1cm4gcGM7Cit9CisKK1BlZXJD
b25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwg
UGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgOiBQ
ZWVyQ29ubmVjdGlvbkNsaWVudChmcmFtZUNvbnRyb2xsZXIsIGlkKQorICAgICwgbV9jb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pCisgICAgLCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9z
aWduYWxpbmdDYWxsYmFjayhzaWduYWxpbmdDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoZnJhbWVD
b250cm9sbGVyKTsKKyAgICBtX2xvY2FsU3RyZWFtTGlzdCA9IE1lZGlhU3RyZWFtTGlzdDo6Y3Jl
YXRlKCk7CisgICAgbV9yZW1vdGVTdHJlYW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUo
KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6aW5pdCgpCit7CisgICAgaWYgKE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIgPSBtZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcigpKQorICAgICAgICBmcmFtZUNvbnRyb2xsZXItPm5ld1BlZXJDb25uZWN0aW9uKG1f
Y2xpZW50SWQsIG1fY29uZmlndXJhdGlvbik7CisKKyAgICBwb3N0U3RhcnROZWdvdGlhdGlvblRh
c2soKTsKK30KKworUGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigpCit7Cit9CisKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0PiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkK
K3sKKyAgICByZXR1cm4gbV9sb2NhbFN0cmVhbUxpc3Q7Cit9CisKK1Bhc3NSZWZQdHI8TWVkaWFT
dHJlYW1MaXN0PiBQZWVyQ29ubmVjdGlvbjo6cmVtb3RlU3RyZWFtcygpCit7CisgICAgcmV0dXJu
IG1fcmVtb3RlU3RyZWFtTGlzdDsKK30KKworLy8gU2VuZHMgdGhlIG1lc3NhZ2UgZG93biB0byB0
aGUgdXNlciBhZ2VudCBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nl
c3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcigpLT5wcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShtX2NsaWVudElkLCBtZXNzYWdl
KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c2VuZChjb25zdCBBdG9taWNTdHJpbmcmIHRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VE
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBDU3RyaW5nIHV0ZjggPSB0ZXh0LnN0cmluZygpLnV0ZjgoKTsKKyAgICBpZiAo
dXRmOC5sZW5ndGgoKSA+IDUwNCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5tZXNzYWdlKG1f
Y2xpZW50SWQsIHRleHQpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3Qg
aXMgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGlu
IHRoZSBpZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisKKyAgICBp
ZiAobV9sb2NhbFN0cmVhbUxpc3QtPmNvbnRhaW5zKHMpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2xvY2FsU3RyZWFtTGlzdC0+YWRkKHMpOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0
cmVhbShtX2NsaWVudElkLCBzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZSBTdHJlYW0g
b2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gZXhpc3Qgc2luY2UgU3RyaWN0VHlwZUNoZWNraW5nIGlz
IHNldCBpbiB0aGUgaWRsLgorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzID0gc3RyZWFtOwor
CisgICAgaWYgKCFtX2xvY2FsU3RyZWFtTGlzdC0+Y29udGFpbnMocykpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbG9jYWxTdHJlYW1MaXN0LT5yZW1vdmUocyk7CisKKyAgICBpZiAobWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIoKS0+cmVtb3ZlU3RyZWFtKG1fY2xpZW50SWQsIHMpOworfQorCit2b2lkIFBlZXJDb25uZWN0
aW9uOjpjbG9zZShFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09
IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAg
ICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmNsb3NlUGVlckNvbm5lY3Rpb24obV9j
bGllbnRJZCk7CisKKyAgICBtX3JlYWR5U3RhdGUgPSBDTE9TRUQ7Cit9CisKK3ZvaWQgUGVlckNv
bm5lY3Rpb246Om9uTmVnb3RpYXRpb25TdGFydGVkKCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBO
RUdPVElBVElORzsKKworICAgIHBvc3RTaW1wbGVFdmVudChldmVudE5hbWVzKCkuY29ubmVjdGlu
Z0V2ZW50KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6b25OZWdvdGlhdGlvbkRvbmUoKQor
eworICAgIG1fcmVhZHlTdGF0ZSA9IEFDVElWRTsKKworICAgIHBvc3RTaW1wbGVFdmVudChldmVu
dE5hbWVzKCkub3BlbkV2ZW50KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c3RyZWFtQWRk
ZWQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQoreworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBtX3JlbW90ZVN0cmVhbUxpc3QtPmFkZChzKTsKKyAgICBw
b3N0U3RyZWFtQWRkZWRFdmVudChzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6c3RyZWFt
UmVtb3ZlZChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIEFTU0VSVCht
X3JlbW90ZVN0cmVhbUxpc3QtPmNvbnRhaW5zKHN0cmVhbUxhYmVsKSk7CisKKyAgICBSZWZQdHI8
TWVkaWFTdHJlYW0+IHN0cmVhbSA9IG1fcmVtb3RlU3RyZWFtTGlzdC0+Z2V0KHN0cmVhbUxhYmVs
KTsKKyAgICBtX3JlbW90ZVN0cmVhbUxpc3QtPnJlbW92ZShzdHJlYW0pOworICAgIHBvc3RTdHJl
YW1SZW1vdmVkRXZlbnQoc3RyZWFtKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6b25NZXNz
YWdlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2FnZUV2ZW50
KG1lc3NhZ2UpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvblNpZ25hbGluZ01lc3NhZ2Uo
Y29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIHBvc3RTaWduYWxpbmdFdmVudCht
ZXNzYWdlKTsKK30KKworUGVlckNvbm5lY3Rpb24qIFBlZXJDb25uZWN0aW9uOjp0b1BlZXJDb25u
ZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gdGhpczsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAg
IHJldHVybiBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpID8gbWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIDogMDsKK30KKworRXZlbnRUYXJn
ZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9u
OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERh
dGE7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1lc3NhZ2UpOworICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9u
LCBpbnQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCAwLCBkYXRhKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246OnBvc3RTaWduYWxpbmdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisK
KyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNoVGFz
azxQZWVyQ29ubmVjdGlvbiwgQXRvbWljU3RyaW5nPjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudCwgbWVzc2FnZSkpOworfQorCit2b2lkIFBlZXJD
b25uZWN0aW9uOjpwb3N0U3RyZWFtQWRkZWRFdmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBz
dHJlYW0pCit7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJl
YWQoKSk7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24s
IEF0b21pY1N0cmluZywgTWVkaWFTdHJlYW0+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9u
OjpkaXNwYXRjaFN0cmVhbUV2ZW50LCBldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIHMpKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbVJlbW92ZWRFdmVudChQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7CisgICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVu
dCBhc3luY2hyb25vdXNseS4gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBk
dXJpbmcgc2h1dGRvd24sCisgICAgLy8gYW5kIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1h
eSBiZSBub3QgYXZhaWxhYmxlIGluIHRoZSBNZWRpYSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbT4gcyA9IHN0cmVhbTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBv
c3RUYXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgQXRvbWljU3RyaW5nLCBNZWRpYVN0
cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQs
IGV2ZW50TmFtZXMoKS5yZW1vdmVzdHJlYW1FdmVudCwgcykpOworfQorCit2b2lkIFBlZXJDb25u
ZWN0aW9uOjpwb3N0U2ltcGxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpCit7
CisgICAgLy8gRGlzcGF0Y2ggYSBjbG9zZSBldmVudCBhc3luY2hyb25vdXNseS4gRG9uJ3QgYXNz
ZXJ0IHNpbmNlIHRoaXMgbWF5IGJlIGNhbGxlZCBkdXJpbmcgc2h1dGRvd24sCisgICAgLy8gYW5k
IHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG1heSBiZSBub3QgYXZhaWxhYmxlIGluIHRoZSBN
ZWRpYSBTdHJlYW0gY2FzZS4KKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29u
dGV4dFRocmVhZCgpKTsKKworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
U2ltcGxlRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBBdG9taWNTdHJpbmc+OjpjcmVhdGUo
dGhpcywgJlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50LCBldmVudE5hbWUpKTsK
K30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKCkKK3sK
KyAgICAvLyBEaXNwYXRjaCBhIGNsb3NlIGV2ZW50IGFzeW5jaHJvbm91c2x5LiBEb24ndCBhc3Nl
cnQgc2luY2UgdGhpcyBtYXkgYmUgY2FsbGVkIGR1cmluZyBzaHV0ZG93biwKKyAgICAvLyBhbmQg
dGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWF5IGJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIE1l
ZGlhIFN0cmVhbSBjYXNlLgorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAg
ICAgICByZXR1cm47CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOworCisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhT
aW1wbGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIGludD46OmNyZWF0ZSh0aGlzLCAmUGVl
ckNvbm5lY3Rpb246OmRpc3BhdGNoU3RhcnROZWdvdGlhdGlvblRhc2ssIDApKTsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCit7CisgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZCA9IGRhdGE7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShhZG9wdFB0cjxNZXNzYWdlUG9ydEFycmF5PigwKSwgZCkpOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBtX3NpZ25hbGluZ0NhbGxiYWNrLT5oYW5kbGVFdmVudChtZXNzYWdl
LCB0aGlzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkK
K3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgZGlzcGF0Y2hFdmVu
dChTdHJlYW1FdmVudDo6Y3JlYXRlKG5hbWUsIGZhbHNlLCBmYWxzZSwgcykpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUs
IGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0YXJ0
TmVnb3RpYXRpb25UYXNrKGNvbnN0IGludCYpCit7CisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPnN0YXJ0
TmVnb3RpYXRpb24obV9jbGllbnRJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9QZWVyQ29ubmVjdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJhNzEyZTViNWRmZmJiMzY5NTI5YTg4YTQ3NGM2MDYzMzU2OGY5MGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGVlckNvbm5lY3Rpb24uaApA
QCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9o
CisjZGVmaW5lIFBlZXJDb25uZWN0aW9uX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisK
KyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3Ry
ZWFtTGlzdDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjazsKKworY2xhc3MgUGVlckNvbm5l
Y3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj4sCisgICAgcHVibGljIEV2
ZW50VGFyZ2V0LAorICAgIHB1YmxpYyBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNv
bm5lY3Rpb25DbGllbnQgeworcHVibGljOgorICAgIC8vIE11c3QgbWF0Y2ggdGhlIGNvbnN0YW50
cyBpbiB0aGUgLmlkbCBmaWxlLgorICAgIGVudW0geworICAgICAgICBORVcgPSAwLAorICAgICAg
ICBORUdPVElBVElORyA9IDEsCisgICAgICAgIEFDVElWRSA9IDIsCisgICAgICAgIENMT1NFRCA9
IDMKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0
ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPik7CisgICAgdmly
dHVhbCB+UGVlckNvbm5lY3Rpb24oKTsKKworICAgIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1MaXN0
PiBsb2NhbFN0cmVhbXMoKTsKKyAgICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gcmVtb3Rl
U3RyZWFtcygpOworCisgICAgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShj
b25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNl
bmQoY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBh
ZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHJlbW92ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihjb25uZWN0aW5nKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKG9wZW4pOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobWVz
c2FnZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGRzdHJlYW0pOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3Zlc3RyZWFtKTsKKworICAg
IC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBQZWVyQ29ubmVjdGlvbiogdG9QZWVyQ29ubmVj
dGlvbigpOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CisKKyAgICAvLyBDYWxsYmFja3MKKyAgICB2b2lkIG9uTWVzc2FnZShjb25zdCBBdG9taWNTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25TaWduYWxpbmdNZXNzYWdlKGNvbnN0IEF0b21pY1N0
cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uU3RhcnRlZCgpOworICAgIHZv
aWQgb25OZWdvdGlhdGlvbkRvbmUoKTsKKyAgICB2b2lkIHN0cmVhbUFkZGVkKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHN0cmVhbVJlbW92ZWQoY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJlYW1MYWJlbCk7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKKworcHJv
dGVjdGVkOgorICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKK3ByaXZhdGU6CisgICAgUGVlckNv
bm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgaWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOwor
ICAgIHZvaWQgaW5pdCgpOworCisgICAgdm9pZCBwb3N0U2ltcGxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcG9zdFNpZ25hbGluZ0V2ZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0U3RyZWFtQWRkZWRFdmVudChQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHBvc3RTdGFydE5lZ290aWF0aW9uVGFz
aygpOworCisgICAgdm9pZCBkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnROYW1lKTsKKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IGludCYsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICB2b2lkIGRpc3BhdGNo
U2lnbmFsaW5nRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQg
ZGlzcGF0Y2hTdHJlYW1FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIGRpc3BhdGNoU3RhcnROZWdvdGlhdGlvblRhc2soY29u
c3QgaW50Jik7CisKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKKworICAgIEF0b21pY1N0cmluZyBtX2NvbmZpZ3VyYXRpb247CisgICAg
dW5zaWduZWQgc2hvcnQgbV9yZWFkeVN0YXRlOworICAgIFJlZlB0cjxTaWduYWxpbmdDYWxsYmFj
az4gbV9zaWduYWxpbmdDYWxsYmFjazsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1MaXN0PiBtX2xv
Y2FsU3RyZWFtTGlzdDsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1MaXN0PiBtX3JlbW90ZVN0cmVh
bUxpc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUGVlckNvbm5lY3Rpb25faApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9QZWVyQ29ubmVjdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTM1ZTFjYmFkMTA5MTI1OTAwMzZlOGYw
ZDg2OTY2ZTRlNzg2MDAwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
ZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxl
IGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBDdXN0b21Db25zdHJ1Y3RG
dW5jdGlvbiwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCisgICAgICAgIFY4Q3Vz
dG9tQ29uc3RydWN0b3IsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBQZWVyQ29ubmVjdGlv
biB7CisgICAgICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW4gRE9NU3RyaW5nIG1l
c3NhZ2UpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBORVcgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBO
RUdPVElBVElORyA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFDVElWRSA9IDI7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENMT1NFRCA9IDM7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIHZvaWQg
c2VuZChpbiBET01TdHJpbmcgdGV4dCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBNZWRpYVN0
cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
W1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJlYW0gc3Ry
ZWFtKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAgICAgICB2
b2lkIGNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bm1lc3NhZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkc3RyZWFtOwor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXN0cmVhbTsKKworICAgICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworCisgICAgfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2lnbmFsaW5nQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGEz
MGU3MTI2NzU0YTUxYzMyOGIyODc0NzYyNjBhYmQ4ZmM0YjgxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmgKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTaWduYWxpbmdDYWxsYmFja19oCisjZGVmaW5lIFNpZ25h
bGluZ0NhbGxiYWNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBlZXJDb25u
ZWN0aW9uOworCitjbGFzcyBTaWduYWxpbmdDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNp
Z25hbGluZ0NhbGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2lnbmFsaW5nQ2FsbGJh
Y2soKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwgUGVl
ckNvbm5lY3Rpb24qKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gU2lnbmFsaW5nQ2FsbGJhY2tf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxpbmdDYWxsYmFjay5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjE4
OGE2NGQwY2YyNzgyOWNiZTE0MTYzNWVmODkwODRkYTNmZTViMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaWduYWxpbmdDYWxsYmFjay5pZGwKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworICAgIGludGVyZmFjZSBbCisgICAgICAg
IENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5
CisgICAgXSBTaWduYWxpbmdDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQo
aW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFBlZXJDb25uZWN0aW9uIHNvdXJjZSk7CisgICAgfTsK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDBmMzE2MmYxZDc4MWMxMTNjOTdl
YzRkNGY5NzNlZGIzM2Q5NTZlNzEuLjVlMzkyMWZmZWIzNWMxODU3ZmZjYjFjNDUxMjc5NmI0ODE5
NTg1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTMzNyw2ICszMzcsOCBAQCBt
b2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJQ0VfT1JJ
RU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRGV2aWNlT3JpZW50YXRpb25FdmVudENvbnN0cnVj
dG9yIERldmljZU9yaWVudGF0aW9uRXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9u
YWw9REVWSUNFX09SSUVOVEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb25k
ZXZpY2VvcmllbnRhdGlvbjsKIAorICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTSxFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIFBlZXJD
b25uZWN0aW9uOworCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBb
Q3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggMDNkZWRmZDg4YzRm
ZDMxOGE3ODAzMTY1YWQxOTExOWVjZmNiNWNjOS4uYmY4YWMxMDBlYTE0YjY4YjAxODk0MGFhYjcw
Y2VkMDEzYjVkOWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaApA
QCAtNTUsNiArNTUsMjcgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZS9kaXNhYmxlIGFuIHRyYWNr
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChjb25zdCBTdHJp
bmcmIHRyYWNrSWQsIGJvb2wgZW5hYmxlZCkgPSAwOwogCisgICAgLy8gU2lnbmFsaW5nIG1lc3Nh
Z2UgZnJvbSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0g
MDsKKworICAgIC8vIE1lc3NhZ2UgZnJvbSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmlydHVhbCB2
b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOworCisgICAgLy8gQWRkIGEgc3RyZWFtIHRvIGEgcGVlciBjb25uZWN0aW9uLgorICAgIHZp
cnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYg
c3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIFJlbW92ZSBhIHN0cmVhbSBmcm9tIGEgcGVlciBj
b25uZWN0aW9uLgorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIEEgUGVlckNv
bm5lY3Rpb24gb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQuCisgICAgdmlydHVhbCB2b2lkIG5ld1Bl
ZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3Vy
YXRpb24pID0gMDsKKworICAgIC8vIFBlZXIgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9zZWQuCisg
ICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQp
ID0gMDsKKworICAgIC8vIFN0YXJ0IG5lZ290aWF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBzdGFy
dE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKSA9IDA7CisKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAppbmRleCBhYWRjZjYwZjI3MzVhNGVhNzM1
YzFhODk0NTQ3ZWM2ZDgwOWMzMWFkLi5iYzJhMmYxNDRjOWZhNzBjN2U3YjkzYzk0ZTQ1ZjYwOGE2
ZTQ3MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIu
Y3BwCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gVE9ETzog
VGhpcyBpcyB1c2VkIGZvciBob2xkaW5nIGxpc3Qgb2YgUGVlckNvbm5lY3Rpb24gYXMgd2VsbCwK
Ky8vIHNvIHJlbmFtZSBjbGFzcyBpcyBpbiBvcmRlci4KIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6UmVxdWVzdCB7CiBwdWJsaWM6CiAgICAgUmVxdWVzdCgpCkBAIC01NSw2ICs1Nyw3IEBA
IHByaXZhdGU6CiBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcihN
ZWRpYVN0cmVhbUNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9uZXh0R2xvYmFsUmVxdWVzdElkKDEpCisgICAgLCBtX25leHRHbG9iYWxQZWVyQ29ubmVjdGlv
bklkKDEpCiB7CiB9CiAKQEAgLTg5LDYgKzkyLDggQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIK
IAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZnJhbWVTdHJlYW1zLmJl
Z2luKCk7IGl0ICE9IGZyYW1lU3RyZWFtcy5lbmQoKTsgKytpdCkKICAgICAgICAgbV9zdHJlYW1z
LnJlbW92ZSgqaXQpOworCisgICAgLy8gVE9ETzogQWRkIGZvciBwZWVyIGNvbm5lY3Rpb24KIH0K
IAogaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbElk
LCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQpAQCAtMTUyLDYg
KzE1NywxMzAgQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUZhaWxlZChjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsKQogICAgICAgICBtX3N0cmVhbXMuZ2V0KHN0cmVhbUxhYmVs
KS0+c3RyZWFtRmFpbGVkKHN0cmVhbUxhYmVsKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2lu
Y2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQuCisgICAgaWYg
KG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkg
eworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rp
b25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVy
Q29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZy
YW1lQ29udHJvbGxlcigpLT5vblNpZ25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJ
ZCgpLCBtZXNzYWdlKTsKKyAgICB9Cit9CisKK2ludCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmZy
YW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBwYWdl
UGVlckNvbm5lY3Rpb25JZCgtMSk7CisgICAgLy8gVE9ETzogQmV0dGVyIHdheSB0byBmaW5kIHRo
ZSBnbG9iYWwgSUQgaW4gdGhlIG1hcD8KKyAgICBmb3IgKFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9wZWVyQ29ubmVjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9wZWVyQ29ubmVjdGlvbnMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZnJhbWVDb250cm9sbGVyKCkgPT0g
ZnJhbWVDb250cm9sbGVyICYmIGl0LT5zZWNvbmQubG9jYWxJZCgpID09IGZyYW1lUGVlckNvbm5l
Y3Rpb25JZCkgeworICAgICAgICAgICAgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBpdC0+Zmlyc3Q7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcGFnZVBl
ZXJDb25uZWN0aW9uSWQ7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpwcm9jZXNz
U2lnbmFsaW5nTWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9s
bGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29u
bmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBp
ZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5wcm9jZXNz
U2lnbmFsaW5nTWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjptZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBm
cmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25u
ZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVlckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAg
bV9jbGllbnQtPm1lc3NhZ2UocGFnZVBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2
b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25NZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERvbid0
IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3ll
ZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5l
Y3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3Bl
ZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBB
U1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29u
bmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25NZXNzYWdlKHBlZXJDb25uZWN0aW9uLmxvY2Fs
SWQoKSwgbWVzc2FnZSk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
YWRkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGlu
dCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwp
Cit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJhbWVUb1BhZ2VQZWVyQ29ubmVj
dGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICBpZiAo
cGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1fY2xpZW50LT5hZGRTdHJlYW0o
cGFnZVBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrTGlzdD4gdHJhY2tzKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUg
Y29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0
aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29u
c3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJv
bGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJh
bWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIo
KS0+b25BZGRTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCwgdHJh
Y2tzKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZW1vdmVTdHJl
YW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1l
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAg
ICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQo
ZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIGlmIChwYWdlUGVl
ckNvbm5lY3Rpb25JZCAhPSAtMSkKKyAgICAgICAgbV9jbGllbnQtPnJlbW92ZVN0cmVhbShwYWdl
UGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6b25SZW1vdmVTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBBdG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIC8vIERvbid0IGFzc2VydCBz
aW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlm
IChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkp
IHsKKyAgICAgICAgLy8gVE9ETzogQmV0dGVyIG5hbWUgb2YgcGVlckNvbm5lY3Rpb24gdmFyaWFi
bGU/CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVj
dGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBl
ZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24u
ZnJhbWVDb250cm9sbGVyKCktPm9uUmVtb3ZlU3RyZWFtKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQo
KSwgc3RyZWFtTGFiZWwpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
Om5ld1BlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRy
b2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBtX25leHRHbG9i
YWxQZWVyQ29ubmVjdGlvbklkKys7CisgICAgbV9wZWVyQ29ubmVjdGlvbnMuYWRkKHBhZ2VQZWVy
Q29ubmVjdGlvbklkLCBSZXF1ZXN0KGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgZnJhbWVDb250cm9s
bGVyKSk7CisKKyAgICBtX2NsaWVudC0+bmV3UGVlckNvbm5lY3Rpb24ocGFnZVBlZXJDb25uZWN0
aW9uSWQsIGNvbmZpZ3VyYXRpb24pOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
Y2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBwYWdlUGVlckNv
bm5lY3Rpb25JZCA9IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIs
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisgICAgaWYgKHBhZ2VQZWVyQ29ubmVjdGlvbklkICE9
IC0xKQorICAgICAgICBtX2NsaWVudC0+Y2xvc2VQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5l
Y3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdGFydE5lZ290aWF0
aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFt
ZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gZnJh
bWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVj
dGlvbklkKTsKKyAgICBpZiAocGFnZVBlZXJDb25uZWN0aW9uSWQgIT0gLTEpCisgICAgICAgIG1f
Y2xpZW50LT5zdGFydE5lZ290aWF0aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKGludCBjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZy
YW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29u
bmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAg
IGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNv
bnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9u
LmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9s
bGVyKCktPm9uTmVnb3RpYXRpb25TdGFydGVkKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSk7Cisg
ICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUo
aW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIERvbid0IGFzc2VydCBz
aW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlm
IChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkp
IHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0
aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVl
ckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5m
cmFtZUNvbnRyb2xsZXIoKS0+b25OZWdvdGlhdGlvbkRvbmUocGVlckNvbm5lY3Rpb24ubG9jYWxJ
ZCgpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaAppbmRleCAxMGFjNGNlZjExYzkzY2ZmZDE5NDYyMmY0NzYzNzY5NjUyZDNhYjEwLi4w
MGQxY2YwZmE3MzIwYWNjMTU5MmE4MTMyOTM4MmYwNzUyYzcxNTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAgLTYwLDE5ICs2MCw0MCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUpOwogICAgIHZvaWQgc3RyZWFtRmFpbGVkKGNv
bnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgLyogSlMgLT4gVUEgKi8KKyAgICB2b2lk
IG5ld1BlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1l
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25maWd1cmF0aW9uKTsKKyAg
ICB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdl
KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG1lc3NhZ2UoTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgYWRkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKworICAgIC8qIFVB
IC0+IEpTICovCisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25N
ZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKTsKKyAgICB2b2lkIG9uUmVtb3ZlU3RyZWFtKGludCBj
b250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJl
bCk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uU3RhcnRlZChpbnQgY29udHJvbGxlclBlZXJDb25u
ZWN0aW9uSWQpOworICAgIHZvaWQgb25OZWdvdGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkKTsKKwogcHJpdmF0ZToKICAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGludCBs
b2NhbFJlcXVlc3RJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKICAgICB2b2lkIHJl
Z2lzdGVyU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKik7CiAKKyAgICBpbnQgZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCk7CisKICAg
ICBjbGFzcyBSZXF1ZXN0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlcXVlc3Q+IFJlcXVl
c3RNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqPiBTdHJlYW1NYXA7CiAKICAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CiAgICAgU3Ry
ZWFtTWFwIG1fc3RyZWFtczsKKyAgICBSZXF1ZXN0TWFwIG1fcGVlckNvbm5lY3Rpb25zOwogCiAg
ICAgTWVkaWFTdHJlYW1DbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX25leHRHbG9iYWxSZXF1
ZXN0SWQ7CisgICAgaW50IG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIuY3BwCmluZGV4IDkyMDUzMzhkMDA3N2NiM2QxNmIxYmMxYThkOWUw
YzllNmNlNGUzMzkuLjQyMGQ2YTQ4MmRmOWZjOGM2MDEwM2ExZjA5ODc4NGQ0ZWQ5ZjEyMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
Y3BwCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjay5oIgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2lnbmFsaW5nQ2FsbGJhY2suaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw2
ICs1MSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9
CiAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTaWduYWxpbmdSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0g
MDsKIApAQCAtMzYwLDYgKzM2MywxMjYgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6c3RyZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgZ2V0U3RyZWFtRnJvbUxh
YmVsKGxhYmVsKS0+c3RyZWFtRW5kZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlv
bj4gTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0
IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFj
az4gc2lnbmFsaW5nQ2FsbGJhY2spCit7CisgICAgaW50IGNsaWVudElkID0gbV9jbGllbnRzLmdl
dE5leHRJZCgpOworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIGNsaWVudElkLCBjb25maWd1cmF0aW9uLCBzaWdu
YWxpbmdDYWxsYmFjayk7CisgICAgaWYgKHBlZXJDb25uZWN0aW9uKQorICAgICAgICBtX2NsaWVu
dHMuYWRkKGNsaWVudElkLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIHBlZXJD
b25uZWN0aW9uOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpuZXdQZWVy
Q29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBjb25m
aWd1cmF0aW9uKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29u
dHJvbGxlcigpLT5uZXdQZWVyQ29ubmVjdGlvbih0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBjb25m
aWd1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y2xvc2VQ
ZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpZiAocGFnZUNvbnRy
b2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+Y2xvc2VQZWVyQ29ubmVjdGlvbih0
aGlzLCBwZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcjo6c3RhcnROZWdvdGlhdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpZiAo
cGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+c3RhcnROZWdvdGlh
dGlvbih0aGlzLCBwZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIo
KSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UodGhp
cywgcGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6Om1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFn
ZUNvbnRyb2xsZXIoKS0+bWVzc2FnZSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6YWRkU3RyZWFtKGludCBwZWVy
Q29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW1SZWYpCit7CisgICAg
UmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBzdHJlYW1SZWY7CisgICAgQVNTRVJUKG1fc3Ry
ZWFtcy5jb250YWlucyhzdHJlYW0tPmxhYmVsKCkpKTsKKworICAgIGlmIChwYWdlQ29udHJvbGxl
cigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5hZGRTdHJlYW0odGhpcywgcGVlckNvbm5l
Y3Rpb25JZCwgc3RyZWFtLT5sYWJlbCgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6cmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBzdHJlYW1SZWYpCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0g
PSBzdHJlYW1SZWY7CisgICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhzdHJlYW0tPmxhYmVs
KCkpKTsKKworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxl
cigpLT5yZW1vdmVTdHJlYW0odGhpcywgcGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtLT5sYWJlbCgp
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25NZXNzYWdlKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBBdG9taWNTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAg
ICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVl
ckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKworICAgIHBl
ZXJDb25uZWN0aW9uLT5vbk1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBB
dG9taWNTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0
PiB0cmFja3MpCit7CisgICAgQVNTRVJUKCFzdHJlYW1MYWJlbC5pc051bGwoKSk7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUodGhpcywg
c3RyZWFtTGFiZWwsIHRyYWNrcyk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJD
b25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBl
ZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3RyZWFtQWRkZWQoc3RyZWFt
KTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0o
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyZWFtTGFiZWwpCit7
CisgICAgQVNTRVJUKCFzdHJlYW1MYWJlbC5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50
cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQo
cGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVl
ckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24q
PihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+
c3RyZWFtUmVtb3ZlZChzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
cGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0
aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9u
PiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRz
LmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPm9uU2lnbmFsaW5n
TWVzc2FnZShtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
b25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gVE9E
TzogQXNzZXJ0IG9yIG5vdD8KKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25u
ZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+
aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNv
bm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVl
ckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm9uTmVnb3RpYXRpb25TdGFy
dGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRp
b25Eb25lKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIFRPRE86IEFzc2VydCBvciBu
b3Q/CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rp
b24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQp
KTsKKworICAgIHBlZXJDb25uZWN0aW9uLT5vbk5lZ290aWF0aW9uRG9uZSgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCmluZGV4
IGI1NWUwZDA1YWE3OWIzOTA3OTE2MWMyNDU0MjA3YTBlOTg3YjcyNTAuLjc2YzlhODNjOTdlNmI0
NWFlMmJiODdhYTJlZmYxMzhjZWViODdlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKQEAgLTQ1LDggKzQ1LDEwIEBAIGNsYXNzIE1l
ZGlhU3RyZWFtVHJhY2tMaXN0OwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFj
azsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKIGNsYXNzIFBhZ2U7
CitjbGFzcyBQZWVyQ29ubmVjdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrOwogCiBjbGFzcyBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIpOwpAQCAtNjksNiArNzEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYWxNZWRpYVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyaWNDbGllbnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQZWVyQ29ubmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIGZy
YW1lIGNvbnRyb2xsZXIgaXMgYmVpbmcgZGlzY29ubmVjdGVkIHRvIHRoZSBNZWRpYVN0cmVhbUNs
aWVudCBlbWJlZGRlci4KICAgICAgICAgLy8gQ2xpZW50cyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0
byBzZW5kIGFueSByZXF1aXJlZCBzaHV0ZG93biBtZXNzYWdlcy4KQEAgLTEzNyw2ICsxNDAsMTMg
QEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlcigpIHsgdW5yZWdpc3Rl
ckNsaWVudCh0aGlzKTsgfQogICAgIH07CiAKKyAgICBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVu
dCA6IHB1YmxpYyBHZW5lcmljQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBlZXJDb25u
ZWN0aW9uQ2xpZW50KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIs
IGludCBpZCkgOiBHZW5lcmljQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpIHsgfQorICAgICAg
ICB2aXJ0dWFsIH5QZWVyQ29ubmVjdGlvbkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNQZWVyQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworCiAg
ICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoRnJhbWUqKTsKICAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcigpOwogCkBAIC0xNjAsNiArMTcwLDMwIEBAIHB1YmxpYzoK
ICAgICAvLyBFbmFibGUvZGlzYWJsZSBhbiB0cmFjay4KICAgICB2b2lkIHNldE1lZGlhU3RyZWFt
VHJhY2tFbmFibGVkKGNvbnN0IFN0cmluZyYgdHJhY2tJZCwgYm9vbCBlbmFibGVkKTsKIAorICAg
IC8vIENyZWF0ZXMgYSBuZXcgUGVlckNvbm5lY3Rpb24gb2JqZWN0LgorICAgIFBhc3NSZWZQdHI8
UGVlckNvbm5lY3Rpb24+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYg
Y29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOworCisgICAgLy8g
VGVsbHMgdGhlIHVzZXIgYWdlbnQgdGhhdCBhIFBlZXJDb25uZWN0aW9uIG9iamVjdCBoYXMgYmVl
biBjcmVhdGVkLgorICAgIHZvaWQgbmV3UGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IEF0b21pY1N0cmluZyYgY29uZmlndXJhdGlvbik7CisKKyAgICAvLyBUZWxscyB0
aGUgdXNlciBhZ2VudCB0byBzdGFydCB0aGUgbmVnb3RpYXRpb24uCisgICAgdm9pZCBzdGFydE5l
Z290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKworICAgIC8vIFNpZ25hbGluZyBtZXNz
YWdlCisgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgQXRvbWljU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIC8vIFRleHQgbWVzc2FnZQor
ICAgIHZvaWQgbWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5n
JiBtZXNzYWdlKTsKKworICAgIC8vIFN0YXJ0IHNlbmQgYSBzdHJlYW0gdG8gdGhlIG90aGVyIHBl
ZXIKKyAgICB2b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4pOworCisgICAgLy8gU3RvcCBzZW5kIGEgc3RyZWFtIHRvIHRoZSBvdGhlciBw
ZWVyCisgICAgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+KTsKKworICAgIC8vIENsb3NlIGRvd24gYWxsIGFjdGl2aXR5IGluIHRo
ZSBQZWVyQ29ubmVjdGlvbiBvYmplY3QuCisgICAgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGlu
dCBwZWVyQ29ubmVjdGlvbklkKTsKKwogICAgIC8vIC0tLSBDYWxscyBjb21pbmcgYmFjayBmcm9t
IHRoZSBjb250cm9sbGVyLiAtLS0gLy8KIAogICAgIC8vIFJlcG9ydCB0aGUgZ2VuZXJhdGlvbiBv
ZiBhIG5ldyBsb2NhbCBzdHJlYW0uCkBAIC0xNzEsNiArMjA1LDI0IEBAIHB1YmxpYzoKICAgICAv
LyBSZXBvcnQgdGhlIGVuZCBvZiBhIHN0cmVhbSBmb3IgZXh0ZXJuYWwgcmVhc29ucy4KICAgICB2
b2lkIHN0cmVhbUZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKIAorICAgIC8vIFNp
Z25hbGluZyBtZXNzYWdlCisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25u
ZWN0aW9uSWQsIGNvbnN0IEF0b21pY1N0cmluZyYgbWVzc2FnZSk7CisKKyAgICAvLyBUZXh0IG1l
c3NhZ2UKKyAgICB2b2lkIG9uTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIC8vIEluZm9ybXMgdGhhdCB0aGUgb3RoZXIgcGVl
ciBoYXMgc3RhcnRlZCBzZW5kaW5nIGEgc3RyZWFtIHRvIHVzCisgICAgdm9pZCBvbkFkZFN0cmVh
bShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJlYW1MYWJlbCwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKTsKKworICAgIC8vIEluZm9y
bXMgdGhhdCB0aGUgb3RoZXIgcGVlciBoYXMgc3RvcHBlZCBzZW5kaW5nIGEgc3RyZWFtIHRvIHVz
CisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisKKyAgICAvLyBJQ0UvU1RVTi9UVVJOIGV0YyBuZWdv
dGlhdGlvbiBzdGFydGVkLgorICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IHBlZXJD
b25uZWN0aW9uSWQpOworCisgICAgLy8gSUNFL1NUVU4vVFVSTiBldGMgbmVnb3RpYXRpb24gZG9u
ZS4KKyAgICB2b2lkIG9uTmVnb3RpYXRpb25Eb25lKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKwog
cHJpdmF0ZToKICAgICBjbGFzcyBSZXF1ZXN0OwogICAgIGNsYXNzIEdlbmVyYXRlU3RyZWFtUmVx
dWVzdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102362</attachid>
            <date>2011-07-29 08:00:13 -0700</date>
            <delta_ts>2011-08-02 05:03:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110729170010.patch</filename>
            <type>text/plain</type>
            <size>95912</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE5OTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4MjA5NDI1ODkxMzE0NmRmZGE3MmY5
NzEyNWQwNWNiZDExM2E5MGEzLi42ZGI1MjQxM2NkYjcyZjNhODFiZWQ0YjZjZTNkYjdhMzkyMTQ2
ZTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjkgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1l
bnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dFRlc3RzIHdpbGwgYmUgcHJvdmlk
ZWQgYnkgYSBmb2xsb3ctdXAgQ0wsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDctMjkgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3
ZWQgZ2FyZGVuaW5nIGFmdGVyIHI5MTk4NgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0
YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNDE2OTc0Y2Y3ZDlhZmRiMDA3NzhlOTRkMzVlNzEzMjhi
OTVmODUyYy4uNTU2MzcxM2JiZTUxN2RlN2VhMjk4MzRmNGMyMGJlMjg5OTc0NTU1MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWlu
aGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0CkBAIC0yOTMsNiAr
MjkzLDggQEAgUEFTUyBpbm5lci5PdmVyZmxvd0V2ZW50LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBp
bm5lci5PdmVyZmxvd0V2ZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5l
ci5QYWdlVHJhbnNpdGlvbkV2ZW50LmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5QYWdlVHJh
bnNpdGlvbkV2ZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5QZWVy
Q29ubmVjdGlvbi5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuUGVlckNvbm5lY3Rpb24uY29u
c3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLlBsdWdpbi5pc0lubmVyIGlzIHRy
dWUKIFBBU1MgaW5uZXIuUGx1Z2luLmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBp
bm5lci5QbHVnaW5BcnJheS5pc0lubmVyIGlzIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ODcxOWRjM2FlN2FkMzhkYmU4ZjI2MzZiM2I1YzJlMTcyMGM0ODRlOC4uZDQ1MGI1ZmZjZWI1YmY1
ZGEzMTMwMzYwYTZiOTVhZTI4OWVlNWM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIwMTAs
NiArMjAxMCw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgICAgICBkb20vTWVkaWFT
dHJlYW1UcmFjay5jcHAKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAogICAg
ICAgICBkb20vU3RyZWFtRXZlbnQuY3BwCisgICAgICAgIHAycC9QZWVyQ29ubmVjdGlvbi5jcHAK
ICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCiAgICAgICAgIHBhZ2UvTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCiAgICAgKQpAQCAtMjAyMSw2ICsyMDIyLDggQEAg
SUYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrLmlk
bAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCiAgICAgICAgIGRvbS9TdHJl
YW1FdmVudC5pZGwKKyAgICAgICAgcDJwL1BlZXJDb25uZWN0aW9uLmlkbAorICAgICAgICBwMnAv
U2lnbmFsaW5nQ2FsbGJhY2suaWRsCiAgICAgICAgIHBhZ2UvTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3IuaWRsCiAgICAgKQogRU5ESUYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZTMzZTYxNDg1YjRhNTRkNDQw
Y2NjMTE0ZGU3MmJjMzI0NGMzODljLi5mZGRhOWI1MGExZTcxZTY4ZDg2MGI3MDY2ZTU1YmIyMWRj
NWE2OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTA3LTI5ICBUb21teSBX
aWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQ
STogSW1wbGVtZW50IFBlZXJDb25uZWN0aW9uIGFuZCBTaWduYWxpbmdDYWxsYmFjaworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUxMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXlvdXRUZXN0cyB3aWxs
IGJlIHByb3ZpZGVkIGJ5IGEgZm9sbG93LXVwIENMLCBzZWUgPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NjU4Nz4uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBDb2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMu
Y3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNv
cmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnBlZXJDb25uZWN0aW9uRW5hYmxlZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6SlNQZWVyQ29ubmVj
dGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFw
cGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VjhQZWVyQ29ubmVjdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICog
ZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OnRvUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIHAycC9EaXNwYXRjaFRhc2suaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVEaXNwYXRjaFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVEaXNwYXRjaFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZURpc3BhdGNoVGFzazo6U2ltcGxlRGlzcGF0Y2hUYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BhdGNoVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BhdGNo
VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpEaXNw
YXRjaFRhc2spOgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246On5Q
ZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6bG9jYWxT
dHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwcm9jZXNzU2lnbmFsaW5nTWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk5l
Z290aWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25O
ZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnN0cmVh
bUFkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzdHJlYW1SZW1vdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246Om9uU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RTaWduYWxpbmdFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbUFkZGVkRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RTdHJlYW1SZW1vdmVkRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RTaW1wbGVFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFz
ayk6CisgICAgICAgICogcDJwL1BlZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25u
ZWN0aW9uOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24u
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oLgorICAgICAgICAoV2Vi
Q29yZTo6U2lnbmFsaW5nQ2FsbGJhY2s6On5TaWduYWxpbmdDYWxsYmFjayk6CisgICAgICAgICog
cDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9ET01XaW5k
b3cuaWRsOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaDoKKyAgICAgICAgKiBw
YWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblNpZ25hbGluZ01lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpmcmFtZVRvUGFnZVBl
ZXJDb25uZWN0aW9uSWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVy
Ojpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9s
bGVyOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVy
OjpvbkFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
Om9uUmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6bmV3UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250
cm9sbGVyOjpjbG9zZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29udHJvbGxlcjo6c3RhcnROZWdvdGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAq
IHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlcjo6UmVxdWVzdDo6aXNTaWduYWxpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bmV3UGVlckNvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNs
b3NlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OnN0YXJ0TmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjptZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25NZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbkFkZFN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25SZW1vdmVT
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9u
U2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKToKKyAgICAgICAgKiBwYWdl
L01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6Q2xpZW50QmFzZTo6aXNQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5lY3Rpb25D
bGllbnQ6OlBlZXJDb25uZWN0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6flBlZXJDb25uZWN0aW9u
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQ
ZWVyQ29ubmVjdGlvbkNsaWVudDo6aXNQZWVyQ29ubmVjdGlvbik6CisKIDIwMTEtMDctMjggIExl
YW5kcm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEZpeCBzcGVlY2ggaW5wdXQgaWNvbiByZWN0IG9uIFJUTCBkaXJlY3Rpb25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpIGIvU291cmNlL1dlYkNvcmUvQ29k
ZUdlbmVyYXRvcnMucHJpCmluZGV4IGYyOWY0ZjU5ZTg4OWFhOTA1ZThlYmY5ZmEyNTA1OTY2NzU4
YmIxOTIuLjI0OTZmMTJkNmNkNGY2NjZmODczYmI0NjRlYzA1YTA1ZmEyMGRlN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Db2RlR2VuZXJhdG9ycy5wcmkKQEAgLTMyNyw2ICszMjcsOCBAQCBJRExfQklORElOR1MgKz0g
XAogICAgIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCBcCiAgICAgbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsIFwKICAgICBub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkNlbnRlci5pZGwgXAorICAgIHAycC9QZWVyQ29ubmVjdGlvbi5pZGwgXAorICAgIHAycC9T
aWduYWxpbmdDYWxsYmFjay5pZGwgXAogICAgIHBhZ2UvQmFySW5mby5pZGwgXAogICAgIHBhZ2Uv
Q29uc29sZS5pZGwgXAogICAgIHBhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcAppbmRleCAzMWEzZTgwOWQ5ZDQyOTI2M2QxMDkxYmJmYjQzNTAyZTJmYjM2YTEy
Li41ZGYzMzBlMGY0NDFmZWM1YjliMzAyODA3MTJjMzAyNDc5YWU5NTg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCkBAIC0yNTgsNiArMjU4LDcgQEAKICNpbmNsdWRlICJKU09wZXJhdGlv
bk5vdEFsbG93ZWRFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIkpTT3ZlcmZsb3dFdmVudC5jcHAi
CiAjaW5jbHVkZSAiSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmNwcCIKKyNpbmNsdWRlICJKU1BlZXJD
b25uZWN0aW9uLmNwcCIKICNpbmNsdWRlICJKU1BlcmZvcm1hbmNlLmNwcCIKICNpbmNsdWRlICJK
U1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZVRpbWlu
Zy5jcHAiCkBAIC0yNzYsNiArMjc3LDcgQEAKICNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGVOb2Rl
LmNwcCIKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5jcHAiCiAjaW5jbHVkZSAiSlNTaGFyZWRX
b3JrZXJDb250ZXh0LmNwcCIKKyNpbmNsdWRlICJKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCIKICNp
bmNsdWRlICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTEV4Y2VwdGlvbi5jcHAiCiAj
aW5jbHVkZSAiSlNTUUxSZXN1bHRTZXQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNjFlYjdmNTllYzAzOTNjZGMxMTU5MTIyZTk0YTFmYTdkMTc5ZjA5Ni4uZDQ0NjYyYjIz
NGVkMjk3ODdlMGE3YzY3OTYwOTlhOWZiNGZhZjViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC0zOSw2ICszOSw3IEBAIFZQQVRIID0gXAogICAgICQoV2ViQ29yZSkvaW5zcGVj
dG9yIFwKICAgICAkKFdlYkNvcmUpL2xvYWRlci9hcHBjYWNoZSBcCiAgICAgJChXZWJDb3JlKS9u
b3RpZmljYXRpb25zIFwKKyAgICAkKFdlYkNvcmUpL3AycCBcCiAgICAgJChXZWJDb3JlKS9wYWdl
IFwKICAgICAkKFdlYkNvcmUpL3BsdWdpbnMgXAogICAgICQoV2ViQ29yZSkvc3RvcmFnZSBcCkBA
IC0zMzIsNiArMzMzLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgT3BlcmF0aW9uTm90QWxsb3dl
ZEV4Y2VwdGlvbiBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGFnZVRyYW5zaXRpb25FdmVu
dCBcCisgICAgUGVlckNvbm5lY3Rpb24gXAogICAgIFBlcmZvcm1hbmNlIFwKICAgICBQZXJmb3Jt
YW5jZU5hdmlnYXRpb24gXAogICAgIFBlcmZvcm1hbmNlVGltaW5nIFwKQEAgLTM0OSw2ICszNTEs
NyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBTaGFyZWRXb3JrZXJDb250ZXh0IFwKICAgICBTY3Jp
cHRQcm9maWxlIFwKICAgICBTY3JpcHRQcm9maWxlTm9kZSBcCisgICAgU2lnbmFsaW5nQ2FsbGJh
Y2sgXAogICAgIFNwZWVjaElucHV0RXZlbnQgXAogICAgIFNwZWVjaElucHV0UmVzdWx0IFwKICAg
ICBTcGVlY2hJbnB1dFJlc3VsdExpc3QgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMzAyNTdmMmViODYwNjI5ZjBiMzUyNTE4YThmZjhjNjVlNmY0NDk2Ny4uOTkwOWY3MjkxMDU3
ZGQyY2YzOTE3YmVjN2NlNWYxYmJmNDI4MmY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC00MTEsNiArNDExLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQ
ZWVyQ29ubmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZWVyQ29ubmVj
dGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNDQ3LDYgKzQ0OSw4IEBA
IHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1No
YXJlZFdvcmtlckNvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NoYXJlZFdv
cmtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXIuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1NwZWVjaElucHV0RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NwZWVj
aElucHV0UmVzdWx0LmNwcCBcCkBAIC03ODAsNiArNzg0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuaCBcCisJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5j
cHAgXApAQCAtMjE4OCw2ICsyMTkzLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblByZXNlbnRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wMnAvRGlz
cGF0Y2hUYXNrLmggXAorCVNvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
MnAvU2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGFiNGI5MTNmZjg4NTFiMGE2OWFhM2I3
NTczZDFmM2RlMWQwMjY3NDkuLmQ0M2NmODMxMjBhZTZjNzI3ZDg0ZDM3M2MyZDU0Nzg1N2RhZjcz
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEwMiw2ICsxMDIsNyBAQCBMSVNUKEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTT3B0
aW9uQ29uc3RydWN0b3IuY3BwCisgICAgYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCiAgICAg
YmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGlu
Z3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggMWQwMjkxMTU4YWI4NjY4ZGNhMTY5NGU0NDhjOThkY2Q4NTU1
MDU1NS4uOTBlZWNiODkwZTBiYTViOWUyNmEzYWQ4YzFmNjk1OGExODc4MmE4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE2OCw2ICsxNjgsNyBAQAogICAgICAg
Jy4uL2xvYWRlci9pY29uJywKICAgICAgICcuLi9tYXRobWwnLAogICAgICAgJy4uL25vdGlmaWNh
dGlvbnMnLAorICAgICAgJy4uL3AycCcsCiAgICAgICAnLi4vcGFnZScsCiAgICAgICAnLi4vcGFn
ZS9hbmltYXRpb24nLAogICAgICAgJy4uL3BhZ2UvY2hyb21pdW0nLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDQwZjdlNTM1OWE5NjAxZGRjOTNhZTY0NWVmNTgzYTY5ZDIxODliNTIuLjc4NGY2ZDMwYzFh
MWU1NDQ5MDk5MmMxODhmN2RiY2VmMmU4OTYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzNTks
NiArMTM1OSw4IEBACiAgICAgICAgICAgICAnbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuaWRsJywKICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCcsCisg
ICAgICAgICAgICAncDJwL1BlZXJDb25uZWN0aW9uLmlkbCcsCisgICAgICAgICAgICAncDJwL1Np
Z25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9BYnN0cmFjdFZpZXcuaWRs
JywKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaWRsJywKICAgICAgICAgICAgICdwYWdlL0Nv
bnNvbGUuaWRsJywKQEAgLTE4ODIsNiArMTg4NCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNOb2RlTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTT3B0
aW9uQ29uc3RydWN0b3IuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNv
bnN0cnVjdG9yLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5j
dGlvbnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0
Um93TGlzdEN1c3RvbS5jcHAnLApAQCAtMjE4NCw2ICsyMTg3LDcgQEAKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwJywKKyAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwJywKQEAgLTI4NDYsNiArMjg1MCwxMCBAQAogICAgICAgICAgICAgJ25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuaCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25Db250ZW50cy5oJywKKyAgICAgICAgICAgICdwMnAvRGlzcGF0Y2hUYXNrLmgnLAorICAg
ICAgICAgICAgJ3AycC9QZWVyQ29ubmVjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ3AycC9QZWVy
Q29ubmVjdGlvbi5oJywKKyAgICAgICAgICAgICdwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAncGFnZS9CYXJJbmZvLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZv
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ2FsbGJhY2tUYXNrLmgnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRl
eCBiNGZiMDhiNDMxMmMzMjEzMDRkNzdkYzY0NzVkMzgyYzg1ZmNlODY0Li41NzViYzAzZjc4NmNl
NjNhMThhMDg5ZDI4MmVjNmY2NzliZTVmY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzI0MSw2ICsz
MjQxLDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAg
ICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrLmggXAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFj
a0xpc3QuaCBcCiAgICAgICAgIGRvbS9TdHJlYW1FdmVudC5oIFwKKyAgICAgICAgcDJwL1BlZXJD
b25uZWN0aW9uLmggXAorICAgICAgICBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAgICAgICAg
IHBhZ2UvQ2FsbGJhY2tUYXNrLmggXAogICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmgg
XAogICAgICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIFwKQEAgLTMyNTYsMTIgKzMy
NTgsMTggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01FRElBX1NUUkVBTT0xKSB7CiAgICAg
ICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBcCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRy
YWNrTGlzdC5jcHAgXAogICAgICAgICBkb20vU3RyZWFtRXZlbnQuY3BwIFwKKyAgICAgICAgcDJw
L1BlZXJDb25uZWN0aW9uLmNwcCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVy
LmNwcCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCiAKICAg
ICB2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0gXAotICAgICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcAorICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TmF2aWdhdG9yQ3VzdG9tLmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20v
VjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKKyAgICB9IGVsc2UgeworICAgICAgICBTT1VSQ0VT
ICs9IFwKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBcCisg
ICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCAyZDcxZmY3YTU2NDJiYjJiYzU1NmMzNjljYmI1YWQzNDE0ZTA2NDkyLi5mMmU5YjZjOTE0Nzdj
MGNlMjZjZTFiN2M0NGFiNTNkNzQ1OGUwNjUzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMTIzOTAsNiArMTIzOTAsNjIgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlZXJDb25uZWN0aW9u
LmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMy
IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU1BlZXJDb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQZXJmb3JtYW5jZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgpAQCAtMTMyODYsNiArMTMzNDIsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
alxXZWJDb3JlXERlcml2ZWRTb3VyY2VzXEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTaWduYWxpbmdD
YWxsYmFjay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3Vy
Y2VzXEpTU1FMRXJyb3IuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTI1
MTY3LDYgKzI1Mjc5LDI2IEBACiAJCQk8L0ZpbHRlcj4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIK
KwkJCU5hbWU9InAycCIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwMnBc
RGlzcGF0Y2hUYXNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHAycFxQZWVyQ29ubmVjdGlvbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHAycFxQZWVyQ29ubmVjdGlvbi5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2lnbmFsaW5n
Q2FsbGJhY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJ
CQlOYW1lPSJwYWdlIgogCQkJPgogCQkJPEZpbGUKQEAgLTYzMTUzLDYgKzYzMjg1LDU4IEBACiAJ
CQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2Vf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4K
KwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxl
bWVudEZ1bmN0aW9ucy5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OGY3NTQ5OGNmMDRkNDk0ZjE2ODViYmRlMzlhZjhiNTkxMmUwN2FkYS4uZDFlYWQyZWUyOWQ3YTY0
NGVhOTU0N2MxMDMwZjJjNGJlZGVjNWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0MiwxMCArMTE0MiwxOSBAQAogCQk0
OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRUQ0MTI4Q0QzMTQwMEU3
MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovOyB9OwogCQk0OTlCM0VENzEyOENEMzE0MDBF
NzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VENTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXll
ckNBLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDk5QjNFREQxMjhEQjUwMjAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRURDMTI4REI1MDEw
MEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDlBNUE0RkQxM0UyRjAxRTAwQ0ZEQUUwIC8qIERp
c3BhdGNoVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDlBNUE0RjcxM0UyRjAxRTAwQ0ZEQUUwIC8qIERpc3BhdGNoVGFzay5oICovOyB9OworCQk0
OUE1QTRGRTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAxRTAwQ0ZE
QUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNDlBNUE0RkYxM0UyRjAxRTAwQ0ZE
QUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24u
aCAqLzsgfTsKKwkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRG
QjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDlBODVC
NkIxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTg1QjY4MTM4RDU3MzkwMEVDQjdCMyAvKiBT
dHJlYW1FdmVudC5jcHAgKi87IH07CiAJCTQ5QTg1QjZDMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJl
YW1FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlBODVCNjkxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmggKi87IH07CiAJCTQ5QTg1
Qjc3MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTg1Qjc1MTM4RDU4RUUwMEVDQjdCMyAv
KiBKU1N0cmVhbUV2ZW50LmNwcCAqLzsgfTsKIAkJNDlBODVCNzgxMzhENThFRTAwRUNCN0IzIC8q
IEpTU3RyZWFtRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QTg1Qjc2MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi87IH07
CisJCTQ5QkUzMEQyMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQx
MTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
NDlCRTMwRjMxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRUYxM0Q5NzY0NjAw
MzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk0OUJFMzBGNDEzRDk3NjQ2
MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNv
bm5lY3Rpb24uaCAqLzsgfTsKKwkJNDlCRTMwRjUxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFs
aW5nQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDlCRTMwRjExM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suY3Bw
ICovOyB9OworCQk0OUJFMzBGNjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMw
RjIxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDlD
N0I5OTMxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5ODAxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xCdWZmZXIuY3BwICovOyB9OwogCQk0OUM3Qjk5NDEwNDJEMkQzMDAwOUQ0NDcg
LyogSlNXZWJHTEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLzsg
fTsKIAkJNDlDN0I5OTUxMDQyRDJEMzAwMDlENDQ3IC8qIEpTSW50OEFycmF5LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgyMTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgKi87IH07CkBAIC03Njk3LDExICs3NzA2LDIyIEBA
CiAJCTQ5OUIzRUQ0MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmNwcDsgcGF0
aCA9IGNhL0dyYXBoaWNzTGF5ZXJDQS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmg7IHBhdGggPSBjYS9HcmFw
aGljc0xheWVyQ0EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5QjNFREMxMjhE
QjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBwYXRoID0gY2EvUGxhdGZvcm1D
QUFuaW1hdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGNzEzRTJG
MDFFMDBDRkRBRTAgLyogRGlzcGF0Y2hUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERpc3BhdGNoVGFzay5oOyBwYXRoID0gcDJwL0Rpc3BhdGNoVGFzay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGODEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNv
bm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVlckNv
bm5lY3Rpb24uY3BwOyBwYXRoID0gcDJwL1BlZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RjkxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmg7
IHBhdGggPSBwMnAvUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlBNUE0RkExM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBQZWVyQ29ubmVjdGlvbi5pZGw7IHBhdGggPSBwMnAvUGVlckNvbm5l
Y3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGQjEzRTJGMDFF
MDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU2lnbmFsaW5nQ2FsbGJhY2suaDsgcGF0aCA9IHAycC9TaWduYWxpbmdDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGQzEzRTJGMDFFMDBDRkRB
RTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNpZ25h
bGluZ0NhbGxiYWNrLmlkbDsgcGF0aCA9IHAycC9TaWduYWxpbmdDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1QjY4MTM4RDU3MzkwMEVDQjdCMyAvKiBTdHJl
YW1FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1F
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1QjY5MTM4RDU3M0Ew
MEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJlYW1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUE4NUI2QTEz
OEQ1NzNBMDBFQ0I3QjMgLyogU3RyZWFtRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFN0cmVhbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNzUx
MzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJlYW1FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5QTg1Qjc2MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyZWFtRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDExM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQ
ZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BlZXJD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEYxMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OUJFMzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdD
YWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NpZ25hbGluZ0Nh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgwMTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViR0xCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludDhBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjg5OCw2ICsxMjkxOCw3IEBACiAJCQkJQkNC
MTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLywKIAkJCQlGQUJFNzJFQzEwNTlDMUVC
MDBEOTk5REQgLyogbWF0aG1sICovLAogCQkJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBu
b3RpZmljYXRpb25zICovLAorCQkJCTQ5QTVBNEY2MTNFMkVGRTYwMENGREFFMCAvKiBwMnAgKi8s
CiAJCQkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEw
OTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1
M0JDNiAvKiBwbHVnaW5zICovLApAQCAtMTQwMjUsNiArMTQwNDYsMTkgQEAKIAkJCW5hbWUgPSBj
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ5QTVBNEY2MTNFMkVGRTYw
MENGREFFMCAvKiBwMnAgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTQ5QTVBNEY3MTNFMkYwMUUwMENGREFFMCAvKiBEaXNwYXRjaFRhc2suaCAqLywKKwkJ
CQk0OUE1QTRGODEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwICovLAorCQkJ
CTQ5QTVBNEY5MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5oICovLAorCQkJCTQ5
QTVBNEZBMTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5pZGwgKi8sCisJCQkJNDlB
NUE0RkIxM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi8sCisJCQkJNDlB
NUE0RkMxM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmlkbCAqLywKKwkJCSk7
CisJCQluYW1lID0gcDJwOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNDlF
OTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTcyNzcsNiArMTczMTEsOCBAQAogCQkJCUJDRDlD
MkJGMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggKi8sCiAJCQkJNjVERjMxRTkwOUQx
Q0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uY3BwICovLAogCQkJCTY1REYzMUVBMDlEMUNDNjAw
MDBCRTMyNSAvKiBKU05vdGF0aW9uLmggKi8sCisJCQkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5
IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhB
OSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJNTk4MzY1RTMxMzU1RjYwNDAwMUIxODVE
IC8qIEpTUG9zaXRpb25DYWxsYmFjay5jcHAgKi8sCiAJCQkJNTk4MzY1REMxMzU1RjUzQzAwMUIx
ODVEIC8qIEpTUG9zaXRpb25DYWxsYmFjay5oICovLAogCQkJCUZFODBEQTZEMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLApAQCAtMTcyODcsNiArMTczMjMsOCBAQAog
CQkJCTY1REYzMUVDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
ICovLAogCQkJCUU0QjQyMzg1MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuY3Bw
ICovLAogCQkJCUU0QjQyMzg2MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuaCAq
LywKKwkJCQk0OUJFMzBGMTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5j
cHAgKi8sCisJCQkJNDlCRTMwRjIxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJh
Y2suaCAqLywKIAkJCQk3NTQxNUQ0RjEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2
ZW50LmNwcCAqLywKIAkJCQk3NTQxNUQ1MDEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1
dEV2ZW50LmggKi8sCiAJCQkJNzU0MTVENTExMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5w
dXRSZXN1bHQuY3BwICovLApAQCAtMTg2MzcsNiArMTg2NzUsNyBAQAogCQkJCUJDQjc3MzYwMEMx
Nzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovLAogCQkJCTFBNzUwREQz
MEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8sCiAJCQkJQkNE
OUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0b20uY3BwICovLAorCQkJCTQ5
QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLywK
IAkJCQlFMUFEMTJENTEyOTVEMEJEMDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25D
dXN0b20uY3BwICovLAogCQkJCTlGQTM3RUU2MTE3MkZDRjAwMEM0Q0Q1NSAvKiBKU1NjcmlwdFBy
b2ZpbGVOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTggLyog
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCAqLywKQEAgLTIwNjE3LDYgKzIwNjU2LDcg
QEAKIAkJCQk4OTg3ODU1NTEyMkNBMDY0MDAzQUFCREEgLyogRGlyZWN0b3J5UmVhZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVh
ZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODkzQzQ4MDMxMjQ4QkQzQTAwMkIzRDg2IC8q
IERpcmVjdG9yeVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QTVBNEZEMTNFMkYw
MUUwMENGREFFMCAvKiBEaXNwYXRjaFRhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDkx
MTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBE
NzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yMTk2Miw2ICsyMjAwMiw3IEBACiAJCQkJQTgyNkU4QUUwQTFBOEYyMzAwQ0QxQkI2IC8qIEpT
T3B0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEQ1NzQxMEE1Qzc4Njcw
MDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjg0QkIx
MTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ5QkUzMEY0MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5j
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3
MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTk4
Miw2ICsyMjAyMyw3IEBACiAJCQkJOUZBMzdFRkQxMTcyRkRBNjAwQzRDRDU1IC8qIEpTU2NyaXB0
UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDA3QTdGMEZGOTM1Q0EwMDk1RURD
RSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMTY5MDYxMDIzOEI2
NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NDlCRTMwRjYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc1NDE1RDU2MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDE1RDU4MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1Nw
ZWVjaElucHV0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxNUQ1QTEyOUFCMkQyMDAz
QUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMjIz
OTUsNiArMjI0MzcsNyBAQAogCQkJCUE4RkE2RTVEMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3MTBEMDBCRjIyMDA3MUI3ODIgLyogUGF0dGVy
bkF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY1MEIwNTM4MTQwMDJDRTY0
RiAvKiBQREZEb2N1bWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OUE1QTRGRjEzRTJG
MDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCThBN0ND
OTZCMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4QTg0NEQwNTExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCThBRjRFNTU2MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24u
aCBpbiBIZWFkZXJzICovLApAQCAtMjI2OTAsNiArMjI3MzMsNyBAQAogCQkJCTQxRDE2OEU4MTAy
MjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MUQxNjhFQTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDFEMTY4RUUxMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlBNUE1MDExM0UyRjAxRTAwQ0ZEQUUwIC8q
IFNpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREE2NTBEMDA2Q0Q2
MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMzI3RDYw
MTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
RTkxMUNEMEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0OTM5LDYgKzI0OTgzLDggQEAKIAkJCQlBODI2RUM0ODBBMUIwQ0JFMDBD
RDFCQjYgLyogSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTBE
NTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUxMjg0QkIyMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlCRTMwRjMxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlCRTMwRDIxM0Q5NzQ3QjAwMzgw
OEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE5
QTU4NzQxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOEE5QTU4NzAxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBOUE1ODg3MTFFODRGMzcwMDhBQ0ZEMSAvKiBKU1Bl
cmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjQ5NjIsNiArMjUwMDgsNyBA
QAogCQkJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MUQxNjkwNTEwMjM4QjY2MDA5QkM4MjcgLyogSlNTaGFyZWRXb3Jr
ZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Q0Q4RDgyMTA2QjUyOTAwMEE0NkQy
MyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUJFMzBG
NTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3NTQxNUQ1NTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDE1RDU3MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVj
aElucHV0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDE1RDU5MTI5QUIyRDIwMDNB
RDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1
MzY5LDYgKzI1NDE2LDcgQEAKIAkJCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkgLyogUGF0dGVy
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBDQzgyMDBBMjVFQkMgLyogUGF0
dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY0MEIwNTM4MTQwMDJDRTY0RiAv
KiBQREZEb2N1bWVudEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QTVBNEZFMTNFMkYw
MUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTdD
Qzk3MDEyMDc2RjhBMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOEFGNEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggMzQzMmQ3NDRmMmJm
Zjg5NWNjNDExMTJiZDM3MzVlMDMwZGM2YmU3Yi4uNGU4NDM2NzgwMDY1ZWYwNGZjMzM3NTQzMGNj
YzlkZTRkMjliNDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE0OCw2ICsxNDgsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRp
YVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRp
YVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCBwZWVyQ29ubmVjdGlvbkVuYWJsZWQo
KSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
UVVPVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAppbmRleCA1OWE5MGJmY2ViYzVlZDg0YjJlZDhlMmQxMWQ2NzJlN2YzMzdlNDhhLi41
ZTE1ODE1MjE2N2Q3MzE2ZGE1Mzk0MjFjMjQyMTExNzFlNjhmNDc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTEyMyw2ICsx
MjMsNyBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U05vZGVMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU09wdGlvbkNvbnN0cnVjdG9yLmNwcCIK
KyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUHJvY2Vzc2luZ0luc3RydWN0aW9u
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3Vz
dG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZTAxNmZjODY2YjJlNjAzNzdhNjY5M2JlYjNmNDIwMTA1MmRh
M2JkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
IkpTUGVlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTRE9N
V2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNTaWduYWxpbmdDYWxsYmFjay5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rp
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNQZWVy
Q29ubmVjdGlvbkNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNQZWVy
Q29ubmVjdGlvbkNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworCisgICAgU3RyaW5nIGNv
bmZpZ3VyYXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNr
PiBzaWduYWxpbmdDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTU2lnbmFs
aW5nQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gYXNKU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7CisgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IGZyYW1lID8gZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkgOiAwOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVj
dGlvbjsKKyAgICBpZiAoZnJhbWVDb250cm9sbGVyKQorICAgICAgICBwZWVyQ29ubmVjdGlvbiA9
IGZyYW1lQ29udHJvbGxlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbiwgc2ln
bmFsaW5nQ2FsbGJhY2spOworCisgICAgaWYgKCFwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBw
ZWVyQ29ubmVjdGlvbi5nZXQoKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDAzNGQ1NDc1OWQ2ZmZkYzljY2ZlNWY3Yzc0OGJkNGY5
ZDMwNDM4YzUuLjA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFlN2Y1MmQwN2UzZGY4MWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjUsNiArNjUs
NyBAQAogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgogI2luY2x1ZGUgIlY4Tm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJWOE5vdGlmaWNhdGlvbi5oIgorI2luY2x1ZGUgIlY4UGVlckNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3Jr
ZXIuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQuaCIKQEAgLTQ1NCw2ICs0NTUs
OSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJn
ZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0KiB0YQogCiAgICAgaWYgKE1lZGlhU3RyZWFtKiBzdHJl
YW0gPSB0YXJnZXQtPnRvTWVkaWFTdHJlYW0oKSkKICAgICAgICAgcmV0dXJuIHRvVjgoc3RyZWFt
KTsKKworICAgIGlmIChQZWVyQ29ubmVjdGlvbiogcGVlckNvbm5lY3Rpb24gPSB0YXJnZXQtPnRv
UGVlckNvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24pOwog
I2VuZGlmCiAKICAgICBBU1NFUlQoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTJlM2I1MzVlNzQyNTU4OWZiYTU1MzY0NTEwMWU2YmM1MWVlMzYwOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9u
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiVjhQZWVyQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOFNpZ25hbGluZ0NhbGxi
YWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
UGVlckNvbm5lY3Rpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5QZWVyQ29ubmVjdGlvbi5Db25zdHJ1Y3RvciIp
OworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVu
Y3Rpb24uIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgaW50IGFyZ0xlbmd0aCA9IGFy
Z3MuTGVuZ3RoKCk7CisgICAgaWYgKGFyZ0xlbmd0aCAhPSAyKQorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVu
dHMuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlv
bkNhdGNoZXI7CisgICAgU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXS0+VG9TdHJpbmcoKSk7CisgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkp
OworCisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhT
aWduYWxpbmdDYWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkKTsKKyAgICBpZiAoIXN1Y2NlZWRl
ZCB8fCAhc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUg
UGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgbXVzdCBiZSBnaXZlbiBhIFNpZ25hbGluZ0NhbGxi
YWNrIGNhbGxiYWNrLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBGcmFtZSogZnJhbWUg
PSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKTsKKyAgICBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0gZnJhbWUgPyBmcmFtZS0+bWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA6IDA7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rp
b24+IHBlZXJDb25uZWN0aW9uOworICAgIGlmIChmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIHBl
ZXJDb25uZWN0aW9uID0gZnJhbWVDb250cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjayk7CisKKyAgICBpZiAoIXBlZXJDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7
CisgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24ucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDlkZDE4MzcwYTRkZDcxZjllM2M0
ZDNiZjcyNDM4ZmJmYWM1MDgyZmUuLmQ4MTIzZTg0MGE5YTIxZGZhOTAwNzAyYzUwZDAwZTA0N2I1
ZmRhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTgwLDYgKzE4MCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwK
KyAgICBtYWNybyhjb25uZWN0aW5nKSBcCisgICAgbWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFj
cm8ocmVtb3Zlc3RyZWFtKSBcCisgICAgXAorCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZP
Ul9FQUNICiAKICAgICBjbGFzcyBFdmVudE5hbWVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
Y3BwCmluZGV4IGEyOGJkYjEzZDJjZTgyZmE2OTIzZjkzYjM2YmZhMTcwN2YzM2UwNzAuLmNiOGRk
MmQ4NmYwZDNhNjc5ZDkzODliN2FmNzg5NWZmMDZhNTk5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcApAQCAtMjE1LDYgKzIxNSwxMSBAQCBMb2NhbE1lZGlhU3RyZWFtKiBFdmVudFRh
cmdldDo6dG9Mb2NhbE1lZGlhU3RyZWFtKCkKIHsKICAgICByZXR1cm4gMDsKIH0KKworUGVlckNv
bm5lY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0b1BlZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4g
MDsKK30KICNlbmRpZgogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGJjYzc1
OGMzMDM3MTM2MmZlYmMxNzI3Y2I4MjJhOTcxYzVmYmM0NmYuLjgwZTFhZjVjMjJkMTgwNDI0N2Y2
OTBiMjkwZTNlZDY0M2RhZGExOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01OSw2
ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAg
ICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKKyAgICBjbGFzcyBQZWVyQ29u
bmVjdGlvbjsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CkBAIC0xNTIsNiArMTUz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAg
ICAgIHZpcnR1YWwgTWVkaWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKICAgICAgICAgdmlydHVh
bCBMb2NhbE1lZGlhU3RyZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKKyAgICAgICAgdmlydHVh
bCBQZWVyQ29ubmVjdGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKICAgICAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL0Rpc3BhdGNoVGFzay5o
IGIvU291cmNlL1dlYkNvcmUvcDJwL0Rpc3BhdGNoVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMDQzZjUy
ZDQ5Mjg3YjM1ODgyNjE1ODMzNDIzNTQ4ZDQ1ZWE0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wMnAvRGlzcGF0Y2hUYXNrLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBEaXNwYXRjaFRhc2tfaAorI2RlZmluZSBEaXNwYXRjaFRhc2tfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja0NsYXNzLCB0eXBlbmFtZSBTaW1wbGVEYXRh
VHlwZT4KK2NsYXNzIFNpbXBsZURpc3BhdGNoVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKENhbGxiYWNrQ2xhc3M6
OipDYWxsYmFjaykoY29uc3QgU2ltcGxlRGF0YVR5cGUmKTsKKworICAgIHN0YXRpYyBQYXNzT3du
UHRyPFNpbXBsZURpc3BhdGNoVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FsbGJhY2tDbGFzcz4g
b2JqZWN0LCBDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgU2ltcGxlRGF0YVR5cGUmIGRhdGEpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNpbXBsZURpc3BhdGNoVGFzayhvYmpl
Y3QsIGNhbGxiYWNrLCBkYXRhKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgKG1fb2JqZWN0Lmdl
dCgpLT4qbV9jYWxsYmFjaykobV9kYXRhKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2ltcGxl
RGlzcGF0Y2hUYXNrKFBhc3NSZWZQdHI8Q2FsbGJhY2tDbGFzcz4gb2JqZWN0LCBDYWxsYmFjayBj
YWxsYmFjaywgY29uc3QgU2ltcGxlRGF0YVR5cGUmIGRhdGEpCisgICAgICAgIDogbV9vYmplY3Qo
b2JqZWN0KQorICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV9kYXRh
KGRhdGEpIHsgfQorCisgICAgUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG1fb2JqZWN0OworICAgIENh
bGxiYWNrIG1fY2FsbGJhY2s7CisgICAgU2ltcGxlRGF0YVR5cGUgbV9kYXRhOworfTsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIENhbGxiYWNrQ2xhc3MsIHR5cGVuYW1lIFNpbXBsZURhdGFUeXBlLCB0
eXBlbmFtZSBSZWZDb3VudGVkRGF0YVR5cGU+CitjbGFzcyBEaXNwYXRjaFRhc2sgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lk
IChDYWxsYmFja0NsYXNzOjoqQ2FsbGJhY2spKGNvbnN0IFNpbXBsZURhdGFUeXBlJiwgUGFzc1Jl
ZlB0cjxSZWZDb3VudGVkRGF0YVR5cGU+KTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPERpc3Bh
dGNoVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8Q2FsbGJhY2tDbGFzcz4gb2JqZWN0LCBDYWxsYmFj
ayBjYWxsYmFjaywgY29uc3QgU2ltcGxlRGF0YVR5cGUmIGFyZzEsIFBhc3NSZWZQdHI8UmVmQ291
bnRlZERhdGFUeXBlPiBhcmcyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBE
aXNwYXRjaFRhc2sob2JqZWN0LCBjYWxsYmFjaywgYXJnMSwgYXJnMikpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7
CisgICAgICAgIChtX29iamVjdC5nZXQoKS0+Km1fY2FsbGJhY2spKG1fYXJnMSwgbV9hcmcyKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgRGlzcGF0Y2hUYXNrKFBhc3NSZWZQdHI8Q2FsbGJhY2tD
bGFzcz4gb2JqZWN0LCBDYWxsYmFjayBjYWxsYmFjaywgY29uc3QgU2ltcGxlRGF0YVR5cGUmIGFy
ZzEsIFBhc3NSZWZQdHI8UmVmQ291bnRlZERhdGFUeXBlPiBhcmcyKQorICAgICAgICA6IG1fb2Jq
ZWN0KG9iamVjdCkKKyAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1f
YXJnMShhcmcxKQorICAgICAgICAsIG1fYXJnMihhcmcyKSB7IH0KKworICAgIFJlZlB0cjxDYWxs
YmFja0NsYXNzPiBtX29iamVjdDsKKyAgICBDYWxsYmFjayBtX2NhbGxiYWNrOworICAgIFNpbXBs
ZURhdGFUeXBlIG1fYXJnMTsKKyAgICBSZWZQdHI8UmVmQ291bnRlZERhdGFUeXBlPiBtX2FyZzI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjZW5kaWYgLy8gRGlzcGF0Y2hUYXNrX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVy
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmMDA4MjZkZTdmOTUxMmZhMTMwMGVjZjY5OWMy
NzYyYzNlMTAwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkRpc3BhdGNoVGFzay5oIgorI2luY2x1ZGUgIkVycm9yRXZl
bnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgorI2luY2x1ZGUgIlN0cmVhbUV2ZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVl
ckNvbm5lY3Rpb246OmNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxT
aWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFZl
cmlmeSB0aGF0IGNvbmZpZ3VyYXRpb24gZm9sbG93cyB0aGUgc3BlY2lmaWVkIGZvcm1hdCwgaWYg
bm90IHJldHVybiBudWxsLgorCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVj
dGlvbiA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihmcmFtZUNvbnRyb2xsZXIsIGlkLCBj
b25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOworICAgIHBlZXJDb25uZWN0aW9uLT5p
bml0KCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUGVlckNv
bm5lY3Rpb246OlBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVm
UHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjaykKKyAgICA6IFBlZXJDb25u
ZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbikKKyAgICAsIG1fcmVhZHlTdGF0ZShORVcpCisgICAgLCBtX3NpZ25hbGlu
Z0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xs
ZXIpOworICAgIG1fbG9jYWxTdHJlYW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKTsK
KyAgICBtX3JlbW90ZVN0cmVhbUxpc3QgPSBNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjppbml0KCkKK3sKKyAgICBpZiAoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCkpCisgICAgICAgIGZyYW1lQ29udHJvbGxlci0+bmV3UGVlckNvbm5lY3Rpb24obV9jbGllbnRJ
ZCwgbV9jb25maWd1cmF0aW9uKTsKKworICAgIHBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpOwor
fQorCitQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkKK3sKK30KKworTWVkaWFTdHJl
YW1MaXN0KiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkKK3sKKyAgICByZXR1cm4gbV9s
b2NhbFN0cmVhbUxpc3QuZ2V0KCk7Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rp
b246OnJlbW90ZVN0cmVhbXMoKQoreworICAgIHJldHVybiBtX3JlbW90ZVN0cmVhbUxpc3QuZ2V0
KCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5wcm9jZXNzU2lnbmFs
aW5nTWVzc2FnZShtX2NsaWVudElkLCBtZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIHV0ZjggPSB0ZXh0LnV0
ZjgoKTsKKyAgICBpZiAodXRmOC5sZW5ndGgoKSA+IDUwNCkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpLT5tZXNzYWdlKG1fY2xpZW50SWQsIHRleHQpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9u
OjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
VGhlIFN0cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBl
Q2hlY2tpbmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0
cmVhbSA9IHBycFN0cmVhbTsKKworICAgIGlmIChtX2xvY2FsU3RyZWFtTGlzdC0+Y29udGFpbnMo
c3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2NhbFN0cmVhbUxpc3QtPmFkZChz
dHJlYW0pOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAg
IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0cmVhbShtX2NsaWVudElkLCBzdHJl
YW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3QgaXMgZ3Vh
cmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGluIHRoZSBp
ZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKworICAg
IGlmICghbV9sb2NhbFN0cmVhbUxpc3QtPmNvbnRhaW5zKHN0cmVhbSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbG9jYWxTdHJlYW1MaXN0LT5yZW1vdmUoc3RyZWFtKTsKKworICAgIGlmICht
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcigpLT5yZW1vdmVTdHJlYW0obV9jbGllbnRJZCwgc3RyZWFtKTsKK30KKwordm9pZCBQ
ZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5jbG9zZVBlZXJDb25u
ZWN0aW9uKG1fY2xpZW50SWQpOworCisgICAgbV9yZWFkeVN0YXRlID0gQ0xPU0VEOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uU3RhcnRlZCgpCit7CisgICAgbV9yZWFk
eVN0YXRlID0gTkVHT1RJQVRJTkc7CisKKyAgICBwb3N0U2ltcGxlRXZlbnQoZXZlbnROYW1lcygp
LmNvbm5lY3RpbmdFdmVudCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9uTmVnb3RpYXRp
b25Eb25lKCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBBQ1RJVkU7CisKKyAgICBwb3N0U2ltcGxl
RXZlbnQoZXZlbnROYW1lcygpLm9wZW5FdmVudCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246
OnN0cmVhbUFkZGVkKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKK3sKKyAgICBSZWZQ
dHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgbV9yZW1vdGVTdHJlYW1MaXN0LT5hZGQo
cyk7CisgICAgcG9zdFN0cmVhbUFkZGVkRXZlbnQocyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rp
b246OnN0cmVhbVJlbW92ZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBBU1NF
UlQobV9yZW1vdGVTdHJlYW1MaXN0LT5jb250YWlucyhzdHJlYW1MYWJlbCkpOworCisgICAgUmVm
UHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBtX3JlbW90ZVN0cmVhbUxpc3QtPmdldChzdHJlYW1M
YWJlbCk7CisgICAgbV9yZW1vdGVTdHJlYW1MaXN0LT5yZW1vdmUoc3RyZWFtKTsKKyAgICBwb3N0
U3RyZWFtUmVtb3ZlZEV2ZW50KHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9u
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2VFdmVudCht
ZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6b25TaWduYWxpbmdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBwb3N0U2lnbmFsaW5nRXZlbnQobWVzc2FnZSk7
Cit9CisKK1BlZXJDb25uZWN0aW9uKiBQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbigp
Cit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJD
b25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA/IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IDA7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSog
UGVlckNvbm5lY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50
VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobWVzc2FnZSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJl
YWQoKSk7CisgICAgY29udGV4dC0+cG9zdFRhc2soRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9u
LCBpbnQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rp
b246OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCAwLCBkYXRhLnJlbGVhc2UoKSkpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uOjpwb3N0U2lnbmFsaW5nRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhT
aW1wbGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmluZz46OmNyZWF0ZSh0aGlzLCAm
UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2lnbmFsaW5nRXZlbnQsIG1lc3NhZ2UpKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbUFkZGVkRXZlbnQoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4gcHJwU3RyZWFtKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVj
dGlvbiwgU3RyaW5nLCBNZWRpYVN0cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246
OmRpc3BhdGNoU3RyZWFtRXZlbnQsIGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgcHJwU3Ry
ZWFtKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RTdHJlYW1SZW1vdmVkRXZlbnQo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtKQoreworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rp
b24sIFN0cmluZywgTWVkaWFTdHJlYW0+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpk
aXNwYXRjaFN0cmVhbUV2ZW50LCBldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIHBycFN0
cmVhbSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U2ltcGxlRXZlbnQoY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNv
bnRleHQtPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgU3RyaW5n
Pjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudCwgZXZl
bnROYW1lKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RTdGFydE5lZ290aWF0aW9u
VGFzaygpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAg
ICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNvbnRleHQtPnBvc3RU
YXNrKFNpbXBsZURpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgaW50Pjo6Y3JlYXRlKHRoaXMs
ICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzaywgMCkpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKK3sKKyAgICBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkID0gZGF0YTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4oKSwgZCkpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBtX3NpZ25hbGluZ0NhbGxiYWNrLT5oYW5kbGVFdmVudChtZXNzYWdl
LCB0aGlzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudChj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKK3sKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgZGlzcGF0Y2hFdmVudChTdHJl
YW1FdmVudDo6Y3JlYXRlKG5hbWUsIGZhbHNlLCBmYWxzZSwgcykpOworfQorCit2b2lkIFBlZXJD
b25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQor
eworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxz
ZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25U
YXNrKGNvbnN0IGludCYpCit7CisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkp
CisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPnN0YXJ0TmVnb3RpYXRpb24o
bV9jbGllbnRJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2NThjNTU2NzMyMWZhNTNhNGU1ODhiMWM4Y2Q4NmM0M2Y5MGE4YjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEy
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIFBl
ZXJDb25uZWN0aW9uX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJF
dmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVkaWFT
dHJlYW1MaXN0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrOworCitjbGFzcyBQZWVyQ29u
bmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPiwgcHVibGljIEV2ZW50
VGFyZ2V0LCBwdWJsaWMgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9u
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBOYW1lIGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVz
dCBtYXRjaCB0aGUgY29ycmVzc3BvbmRpbmcgY29uc3RhbnRzIGluIHRoZSAuaWRsIGZpbGUuCisg
ICAgZW51bSB7CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5FR09USUFUSU5HID0gMSwKKyAg
ICAgICAgQUNUSVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMworICAgIH07CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiwgaW50IGlkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8
U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIH5QZWVyQ29ubmVjdGlvbigpOworCisg
ICAgTWVkaWFTdHJlYW1MaXN0KiBsb2NhbFN0cmVhbXMoKTsKKyAgICBNZWRpYVN0cmVhbUxpc3Qq
IHJlbW90ZVN0cmVhbXMoKTsKKworICAgIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBz
ZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBy
ZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2Up
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFtKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7CisKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24o
KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisg
ICAgLy8gQ2FsbGJhY2tzCisgICAgdm9pZCBvbk1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
ICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoKTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25E
b25lKCk7CisgICAgdm9pZCBzdHJlYW1BZGRlZChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7Cisg
ICAgdm9pZCBzdHJlYW1SZW1vdmVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworCisgICAg
dXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBFdmVudFRh
cmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSgpOworCitwcml2YXRlOgorICAgIFBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NS
ZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGluaXQoKTsKKworICAgIHZvaWQg
cG9zdFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RTaWduYWxp
bmdFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcG9zdFN0cmVhbUFkZGVk
RXZlbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgcG9zdFN0cmVhbVJlbW92
ZWRFdmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBwb3N0U3RhcnROZWdv
dGlhdGlvblRhc2soKTsKKworICAgIHZvaWQgZGlzcGF0Y2hTaW1wbGVFdmVudChjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQm
LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSk7CisgICAgdm9pZCBkaXNw
YXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIGRp
c3BhdGNoU3RyZWFtRXZlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPik7CisgICAgdm9pZCBkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25UYXNrKGNvbnN0IGludCYp
OworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdl
dERhdGE7CisKKyAgICBTdHJpbmcgbV9jb25maWd1cmF0aW9uOworICAgIHVuc2lnbmVkIHNob3J0
IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IG1fc2lnbmFsaW5n
Q2FsbGJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9sb2NhbFN0cmVhbUxpc3Q7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1MaXN0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2VuZGlmIC8vIFBlZXJDb25uZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3AycC9QZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rp
b24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZjOWExOWRiMGE1OWM1MGIxM2M3ZjBhYTkyMzEzYWFmMmExM2Q5
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24u
aWRsCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBwMnAgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBD
YW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBDdXN0b21Db25zdHJ1Y3RGdW5jdGlvbiwKKyAgICAg
ICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCisgICAgICAgIFY4Q3VzdG9tQ29uc3RydWN0b3Is
CisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBQZWVyQ29ubmVjdGlvbiB7CisgICAgICAgIHZv
aWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW4gRE9NU3RyaW5nIG1lc3NhZ2UpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBORVcgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBORUdPVElBVElORyA9IDE7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFDVElWRSA9IDI7CisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IENMT1NFRCA9IDM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIHZvaWQgc2VuZChpbiBET01TdHJp
bmcgdGV4dCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3Ry
aWN0VHlwZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVj
a2luZ10gdm9pZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJlYW0gc3RyZWFtKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
ZGlhU3RyZWFtTGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBN
ZWRpYVN0cmVhbUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAgICAgICB2b2lkIGNsb3NlKCkKKyAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CisgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkc3RyZWFtOworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXN0cmVhbTsKKworICAgICAgICAvLyBFdmVudFRhcmdl
dCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtvcHRpb25hbF0gYm9vbGVh
biB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0
ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtvcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50
KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAg
ICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE0YTMwZTcxMjY3NTRhNTFjMzI4YjI4NzQ3NjI2MGFiZDhmYzRiODEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2suaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpZ25hbGluZ0NhbGxiYWNrX2gKKyNkZWZpbmUg
U2lnbmFsaW5nQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGVl
ckNvbm5lY3Rpb247CisKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrIDogcHVibGljIFJlZkNvdW50
ZWQ8U2lnbmFsaW5nQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TaWduYWxpbmdD
YWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChjb25zdCBTdHJpbmcm
LCBQZWVyQ29ubmVjdGlvbiopID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBTaWduYWxpbmdDYWxs
YmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wZDMyZmNmMGVjN2RjNTI0OGUwNDE2OGQ3ZjYxY2Q5NGU2OWE4OGE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbApAQCAtMCwwICsx
LDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQ2FsbGJhY2s9RnVuY3Rp
b25Pbmx5CisgICAgXSBTaWduYWxpbmdDYWxsYmFjayB7CisgICAgICAgIGJvb2xlYW4gaGFuZGxl
RXZlbnQoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFBlZXJDb25uZWN0aW9uIHNvdXJjZSk7Cisg
ICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IDBmMzE2MmYxZDc4MWMx
MTNjOTdlYzRkNGY5NzNlZGIzM2Q5NTZlNzEuLjVlMzkyMWZmZWIzNWMxODU3ZmZjYjFjNDUxMjc5
NmI0ODE5NTg1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKQEAgLTMzNyw2ICszMzcs
OCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJ
Q0VfT1JJRU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRGV2aWNlT3JpZW50YXRpb25FdmVudENv
bnN0cnVjdG9yIERldmljZU9yaWVudGF0aW9uRXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29u
ZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVu
ZXIgb25kZXZpY2VvcmllbnRhdGlvbjsKIAorICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTSxFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9y
IFBlZXJDb25uZWN0aW9uOworCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKaW5kZXggMDNkZWRm
ZDg4YzRmZDMxOGE3ODAzMTY1YWQxOTExOWVjZmNiNWNjOS4uYmY4YWMxMDBlYTE0YjY4YjAxODk0
MGFhYjcwY2VkMDEzYjVkOWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRp
YVN0cmVhbUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGll
bnQuaApAQCAtNTUsNiArNTUsMjcgQEAgcHVibGljOgogICAgIC8vIEVuYWJsZS9kaXNhYmxlIGFu
IHRyYWNrLgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChjb25z
dCBTdHJpbmcmIHRyYWNrSWQsIGJvb2wgZW5hYmxlZCkgPSAwOwogCisgICAgLy8gU2lnbmFsaW5n
IG1lc3NhZ2UgZnJvbSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NT
aWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpID0gMDsKKworICAgIC8vIE1lc3NhZ2UgZnJvbSBwZWVyIGNvbm5lY3Rpb24uCisgICAgdmly
dHVhbCB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgPSAwOworCisgICAgLy8gQWRkIGEgc3RyZWFtIHRvIGEgcGVlciBjb25uZWN0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0
cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIFJlbW92ZSBhIHN0cmVhbSBmcm9tIGEg
cGVlciBjb25uZWN0aW9uLgorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKworICAgIC8vIEEg
UGVlckNvbm5lY3Rpb24gb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQuCisgICAgdmlydHVhbCB2b2lk
IG5ld1BlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNv
bmZpZ3VyYXRpb24pID0gMDsKKworICAgIC8vIFBlZXIgY29ubmVjdGlvbiBpcyBiZWluZyBjbG9z
ZWQuCisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0
aW9uSWQpID0gMDsKKworICAgIC8vIFN0YXJ0IG5lZ290aWF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCBzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKSA9IDA7CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAppbmRleCBhYWRjZjYwZjI3MzVh
NGVhNzM1YzFhODk0NTQ3ZWM2ZDgwOWMzMWFkLi41N2M1ODQ4OWM5YmI1YmZmYzJlMTAzNmE3OTE3
NzdmNjllZjllZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8g
RklYTUU6IFRoaXMgaXMgdXNlZCBmb3IgaG9sZGluZyBsaXN0IG9mIFBlZXJDb25uZWN0aW9uIGFz
IHdlbGwsCisvLyBzbyByZW5hbWUgY2xhc3MgaXMgaW4gb3JkZXIuCiBjbGFzcyBNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6OlJlcXVlc3QgewogcHVibGljOgogICAgIFJlcXVlc3QoKQpAQCAtNTUsNiAr
NTcsNyBAQCBwcml2YXRlOgogTWVkaWFTdHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXIoTWVkaWFTdHJlYW1DbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkK
ICAgICAsIG1fbmV4dEdsb2JhbFJlcXVlc3RJZCgxKQorICAgICwgbV9uZXh0R2xvYmFsUGVlckNv
bm5lY3Rpb25JZCgxKQogewogfQogCkBAIC04OSw2ICs5Miw4IEBAIHZvaWQgTWVkaWFTdHJlYW1D
b250cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyCiAKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBpdCA9IGZyYW1lU3Ry
ZWFtcy5iZWdpbigpOyBpdCAhPSBmcmFtZVN0cmVhbXMuZW5kKCk7ICsraXQpCiAgICAgICAgIG1f
c3RyZWFtcy5yZW1vdmUoKml0KTsKKworICAgIC8vIEZJWE1FOiBBZGQgdW5yZWdpc3RlciBmdW5j
dGlvbmFsaXR5IGZvciBwZWVyIGNvbm5lY3Rpb24gb2JqZWN0cy4KIH0KIAogaW50IE1lZGlhU3Ry
ZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbElkLCBNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQpAQCAtMTUyLDYgKzE1NywxMzAgQEAgdm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUZhaWxlZChjb25zdCBTdHJpbmcmIHN0cmVh
bUxhYmVsKQogICAgICAgICBtX3N0cmVhbXMuZ2V0KHN0cmVhbUxhYmVsKS0+c3RyZWFtRmFpbGVk
KHN0cmVhbUxhYmVsKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uU2lnbmFs
aW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xs
ZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQuCisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICBjb25zdCBSZXF1
ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVl
ckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRy
b2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vblNp
Z25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBtZXNzYWdlKTsKKyAgICB9
Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpmcmFtZVRvUGFnZVBlZXJDb25uZWN0
aW9uSWQoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZy
YW1lUGVlckNvbm5lY3Rpb25JZCwgaW50JiBwYWdlUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBw
YWdlUGVlckNvbm5lY3Rpb25JZCA9IC0xOworICAgIC8vIFRPRE86IElzIHRoZXJlIGEgYmV0dGVy
IHdheSB0byBmaW5kIHRoZSBnbG9iYWwgSUQgaW4gdGhlIG1hcD8KKyAgICBmb3IgKFJlcXVlc3RN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9wZWVyQ29ubmVjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9wZWVy
Q29ubmVjdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZnJhbWVD
b250cm9sbGVyKCkgPT0gZnJhbWVDb250cm9sbGVyICYmIGl0LT5zZWNvbmQubG9jYWxJZCgpID09
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCkgeworICAgICAgICAgICAgcGFnZVBlZXJDb25uZWN0aW9u
SWQgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpw
cm9jZXNzU2lnbmFsaW5nTWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVD
b250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOworICAgIGlmIChmcmFtZVRvUGFn
ZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQs
IHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGllbnQtPnByb2Nlc3NTaWduYWxp
bmdNZXNzYWdlKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Om1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZy
YW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVU
b1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlv
bklkLCBwYWdlUGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1fY2xpZW50LT5tZXNzYWdlKHBh
Z2VQZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6Om9uTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNv
bnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlv
bnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIGNvbnN0
IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1l
Q29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkt
Pm9uTWVzc2FnZShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIG1lc3NhZ2UpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmFkZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25J
ZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1f
Y2xpZW50LT5hZGRTdHJlYW0ocGFnZVBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbUxhYmVsKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKGludCBjb250cm9sbGVy
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5j
ZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmICht
X3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsK
KyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9u
cy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNv
bm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFt
ZUNvbnRyb2xsZXIoKS0+b25BZGRTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJl
YW1MYWJlbCwgdHJhY2tzKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVy
OjpyZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxl
ciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkK
K3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQ7CisgICAgaWYgKGZyYW1lVG9QYWdlUGVl
ckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgcGFn
ZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAgICBtX2NsaWVudC0+cmVtb3ZlU3RyZWFtKHBhZ2VQ
ZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250
cm9sbGVyOjpvblJlbW92ZVN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRo
ZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVl
ckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAg
ICAgICAvLyBUT0RPOiBCZXR0ZXIgbmFtZSBvZiBwZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAg
ICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5n
ZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5l
Y3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNv
bnRyb2xsZXIoKS0+b25SZW1vdmVTdHJlYW0ocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJl
YW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bmV3UGVl
ckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwg
aW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKQor
eworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0
aW9uSWQrKzsKKyAgICBtX3BlZXJDb25uZWN0aW9ucy5hZGQocGFnZVBlZXJDb25uZWN0aW9uSWQs
IFJlcXVlc3QoZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBmcmFtZUNvbnRyb2xsZXIpKTsKKworICAg
IG1fY2xpZW50LT5uZXdQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCwgY29uZmln
dXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpjbG9zZVBlZXJDb25u
ZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBm
cmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOwor
ICAgIGlmIChmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFt
ZVBlZXJDb25uZWN0aW9uSWQsIHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGll
bnQtPmNsb3NlUGVlckNvbm5lY3Rpb24ocGFnZVBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RhcnROZWdvdGlhdGlvbihNZWRpYVN0cmVhbUZyYW1l
Q29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQor
eworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVy
Q29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdl
UGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1fY2xpZW50LT5zdGFydE5lZ290aWF0aW9uKHBh
Z2VQZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9u
TmVnb3RpYXRpb25TdGFydGVkKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAg
ICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVl
biBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxl
clBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0
aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsK
KyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAg
ICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uTmVnb3RpYXRpb25TdGFydGVk
KHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlv
bklkKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBj
YW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlu
cyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYg
cGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25u
ZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVy
KCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25OZWdvdGlh
dGlvbkRvbmUocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaAppbmRleCAxMGFjNGNlZjExYzkz
Y2ZmZDE5NDYyMmY0NzYzNzY5NjUyZDNhYjEwLi41NTUzNTg3ZWMzNzYxZGUzYjEwNDg3MTRhZDFj
NWQ4OTA1NjMxNzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFt
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9s
bGVyLmgKQEAgLTYwLDE5ICs2MCw0MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0
aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNv
ZGUpOwogICAgIHZvaWQgc3RyZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwog
CisgICAgLyogSlMgLT4gVUEgKi8KKyAgICB2b2lkIG5ld1BlZXJDb25uZWN0aW9uKE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3Ry
aW5nJiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lk
IHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lk
IG1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVj
dGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgYWRkU3RyZWFtKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcm
IHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKTsKKworICAgIC8qIFVB
IC0+IEpTICovCisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25NZXNzYWdl
KGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4g
dHJhY2tzKTsKKyAgICB2b2lkIG9uUmVtb3ZlU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBvbk5lZ290aWF0
aW9uU3RhcnRlZChpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgb25O
ZWdvdGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKwogcHJpdmF0
ZToKICAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGludCBsb2NhbFJlcXVlc3RJZCwgTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIqKTsKICAgICB2b2lkIHJlZ2lzdGVyU3RyZWFtKGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7CiAKKyAgICBib29s
IGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcios
IGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGludCYgcGFnZVBlZXJDb25uZWN0aW9uSWQpOwor
CiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZXF1ZXN0PiBS
ZXF1ZXN0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKj4gU3RyZWFtTWFwOwogCiAgICAgUmVxdWVzdE1hcCBtX3JlcXVlc3RzOwogICAg
IFN0cmVhbU1hcCBtX3N0cmVhbXM7CisgICAgUmVxdWVzdE1hcCBtX3BlZXJDb25uZWN0aW9uczsK
IAogICAgIE1lZGlhU3RyZWFtQ2xpZW50KiBtX2NsaWVudDsKICAgICBpbnQgbV9uZXh0R2xvYmFs
UmVxdWVzdElkOworICAgIGludCBtX25leHRHbG9iYWxQZWVyQ29ubmVjdGlvbklkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAppbmRleCA5MjA1MzM4ZDAwNzdjYjNkMTZiMWJjMWE4
ZDllMGM5ZTZjZTRlMzM5Li45NWY4Y2QzMjBkOTYwNDVmNmVkY2JhNWJhMzQ3MDM4NWY0MTgwZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyLmNwcApAQCAtMzYsNyArMzYsOSBAQAogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVy
cm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNpZ25hbGluZ0NhbGxiYWNrLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyYXRlU3RyZWFtUmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVjb3JkZWREYXRhUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzU2lnbmFsaW5nUmVx
dWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAKQEAgLTM2MCw2ICszNjMsMTI2IEBAIHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnN0cmVhbUZhaWxlZChjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIGdldFN0cmVhbUZy
b21MYWJlbChsYWJlbCktPnN0cmVhbUVuZGVkKCk7CiB9CiAKK1Bhc3NSZWZQdHI8UGVlckNvbm5l
Y3Rpb24+IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+
IHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIGludCBjbGllbnRJZCA9IG1fY2xpZW50cy5nZXRO
ZXh0SWQoKTsKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVl
ckNvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBjbGllbnRJZCwgY29uZmlndXJhdGlvbiwgc2lnbmFs
aW5nQ2FsbGJhY2spOworICAgIGlmIChwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgbV9jbGllbnRz
LmFkZChjbGllbnRJZCwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiBwZWVyQ29u
bmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
Om5ld1BlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VD
b250cm9sbGVyKCktPm5ld1BlZXJDb25uZWN0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIGNv
bmZpZ3VyYXRpb24pOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpjbG9z
ZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChwYWdlQ29u
dHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5jbG9zZVBlZXJDb25uZWN0aW9u
KHRoaXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlm
IChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5zdGFydE5lZ290
aWF0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQor
ICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5wcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSh0aGlzLCBw
ZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6bWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxl
cigpLT5tZXNzYWdlKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lk
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9u
SWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJlZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRh
aW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAg
ICAgIHBhZ2VDb250cm9sbGVyKCktPmFkZFN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBz
dHJlYW0tPmxhYmVsKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpy
ZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+
IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJl
ZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisg
ICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnJlbW92
ZVN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW0tPmxhYmVsKCkpOworfQorCit2
b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNv
bnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVy
Q29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29u
bmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1f
Y2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm9u
TWVzc2FnZShtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
b25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFi
ZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcykKK3sKKyAgICBBU1NF
UlQoIXN0cmVhbUxhYmVsLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlu
cyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5l
Y3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+
IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUodGhpcywgc3RyZWFtTGFiZWwsIHRyYWNrcyk7
CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nh
c3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAg
ICBwZWVyQ29ubmVjdGlvbi0+c3RyZWFtQWRkZWQoc3RyZWFtLnJlbGVhc2UoKSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFtKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIEFTU0VSVCghc3Ry
ZWFtTGFiZWwuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJD
b25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklk
KS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVl
ckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQo
cGVlckNvbm5lY3Rpb25JZCkpOworICAgIHBlZXJDb25uZWN0aW9uLT5zdHJlYW1SZW1vdmVkKHN0
cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25TaWdu
YWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rp
b24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3Rh
dGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQp
KTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25TaWduYWxpbmdNZXNzYWdlKG1lc3NhZ2UpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290aWF0aW9uU3RhcnRlZChp
bnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBGSVhNRTogQXNzZXJ0IG9yIG5vdD8KKyAg
ICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NF
UlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsK
KworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2Fz
dDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisg
ICAgcGVlckNvbm5lY3Rpb24tPm9uTmVnb3RpYXRpb25TdGFydGVkKCk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKGludCBwZWVyQ29ubmVj
dGlvbklkKQoreworICAgIC8vIEZJWE1FOiBBc3NlcnQgb3Igbm90PworICAgIEFTU0VSVChtX2Ns
aWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMu
Z2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRy
PFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0
aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisKKyAgICBwZWVyQ29ubmVj
dGlvbi0+b25OZWdvdGlhdGlvbkRvbmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaAppbmRleCBiNTVlMGQwNWFhNzliMzkwNzkx
NjFjMjQ1NDIwN2EwZTk4N2I3MjUwLi5lNTE0NzI1YWM2NTAzZjQ5OGNlMzJlNzA4YThiNGU1YjJh
NGU2MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlci5oCkBAIC00NSw4ICs0NSwxMCBAQCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrTGlzdDsK
IGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CiBjbGFzcyBOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CiBjbGFzcyBQYWdlOworY2xhc3MgUGVlckNvbm5lY3Rp
b247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjazsKIAogY2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKTsKQEAgLTY5LDYgKzcxLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZWRpYVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0xvY2FsTWVkaWFTdHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNHZW5lcmljQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGlzUGVlckNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiAgICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBmcmFtZSBjb250cm9sbGVyIGlzIGJl
aW5nIGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFTdHJlYW1DbGllbnQgZW1iZWRkZXIuCiAgICAg
ICAgIC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRlIHRoaXMgdG8gc2VuZCBhbnkgcmVxdWlyZWQg
c2h1dGRvd24gbWVzc2FnZXMuCkBAIC0xMzcsNiArMTQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXIoKSB7IHVucmVnaXN0ZXJDbGllbnQodGhpcyk7IH0KICAg
ICB9OwogCisgICAgY2xhc3MgUGVlckNvbm5lY3Rpb25DbGllbnQgOiBwdWJsaWMgR2VuZXJpY0Ns
aWVudCB7CisgICAgcHVibGljOgorICAgICAgICBQZWVyQ29ubmVjdGlvbkNsaWVudChNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQpIDogR2VuZXJpY0Ns
aWVudChmcmFtZUNvbnRyb2xsZXIsIGlkKSB7IH0KKyAgICAgICAgdmlydHVhbCB+UGVlckNvbm5l
Y3Rpb25DbGllbnQoKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUGVlckNvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKKwogICAgIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKEZyYW1lKik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXIoKTsKIApAQCAtMTQ4LDI5ICsxNTgsMzMgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dEZyYW1lKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRvTmV3UGFnZShQYWdlKik7CiAKLSAgICAvLyBQ
YXJzZSB0aGUgb3B0aW9ucyBzdHJpbmcgcHJvdmlkZWQgdG8gdGhlIGdlbmVyYXRlU3RyZWFtIG1l
dGhvZC4KICAgICBzdGF0aWMgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFncyBwYXJzZUdlbmVyYXRl
U3RyZWFtT3B0aW9ucyhjb25zdCBTdHJpbmcmKTsKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBnZW5l
cmF0ZWQgc3RyZWFtIGFzeW5jaHJvbm91c2x5IHdpdGggdGhlIHByb3ZpZGVkIG9wdGlvbnMuCiAg
ICAgdm9pZCBnZW5lcmF0ZVN0cmVhbShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8
TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgLy8gU3RvcCBh
IGxvY2FsIG1lZGlhIHN0cmVhbS4KICAgICB2b2lkIHN0b3BHZW5lcmF0ZWRTdHJlYW0oY29uc3Qg
U3RyaW5nJiBzdHJlYW1MYWJlbCk7Ci0KLSAgICAvLyBFbmFibGUvZGlzYWJsZSBhbiB0cmFjay4K
ICAgICB2b2lkIHNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCwgYm9vbCBlbmFibGVkKTsKIAorICAgIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0
ZVBlZXJDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxT
aWduYWxpbmdDYWxsYmFjaz4pOworICAgIHZvaWQgbmV3UGVlckNvbm5lY3Rpb24oaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbik7CisgICAgdm9pZCBzdGFy
dE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lkIHByb2Nlc3NTaWdu
YWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgIHZvaWQgbWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICB2b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVj
dGlvbklkLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBjbG9zZVBlZXJDb25u
ZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKwogICAgIC8vIC0tLSBDYWxscyBjb21pbmcg
YmFjayBmcm9tIHRoZSBjb250cm9sbGVyLiAtLS0gLy8KIAotICAgIC8vIFJlcG9ydCB0aGUgZ2Vu
ZXJhdGlvbiBvZiBhIG5ldyBsb2NhbCBzdHJlYW0uCiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQo
aW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKTsKLQotICAgIC8vIFJlcG9ydCBhIGZhaWx1cmUgaW4g
dGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc3RyZWFtLgogICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlv
bkZhaWxlZChpbnQgcmVxdWVzdElkLCBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvcjo6RXJyb3JDb2Rl
KTsKLQotICAgIC8vIFJlcG9ydCB0aGUgZW5kIG9mIGEgc3RyZWFtIGZvciBleHRlcm5hbCByZWFz
b25zLgogICAgIHZvaWQgc3RyZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwog
CisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbkFkZFN0cmVhbShpbnQgcGVl
ckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrTGlzdD4pOworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oaW50IHBlZXJDb25u
ZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgb25OZWdvdGlh
dGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgb25OZWdvdGlhdGlv
bkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpOworCiBwcml2YXRlOgogICAgIGNsYXNzIFJlcXVl
c3Q7CiAgICAgY2xhc3MgR2VuZXJhdGVTdHJlYW1SZXF1ZXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102633</attachid>
            <date>2011-08-02 05:02:59 -0700</date>
            <delta_ts>2011-08-03 01:50:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110802140257.patch</filename>
            <type>text/plain</type>
            <size>97510</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIxNjgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMWM3MzRjMDAwNGI4YTA2MTcyYjNl
OWEwNTYyYTFlY2FiYmViNGVhLi5kMDc1OWYxZjA2YjdmZmM4NDQ5NWFhMThhNDdkZGUxM2Q4OTAz
NDBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMjkgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1l
bnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dFRlc3RzIHdpbGwgYmUgcHJvdmlk
ZWQgYnkgYSBmb2xsb3ctdXAgQ0wsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgtMDEgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGJ1dHRvbiArICJOZXcgc3R5bGUgcnVsZSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJp
dGFuY2UtZXhwZWN0ZWQudHh0CmluZGV4IDQxNjk3NGNmN2Q5YWZkYjAwNzc4ZTk0ZDM1ZTcxMzI4
Yjk1Zjg1MmMuLjU1NjM3MTNiYmU1MTdkZTdlYTI5ODM0ZjRjMjBiZTI4OTk3NDU1NTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL3Byb3RvdHlwZS1p
bmhlcml0YW5jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dApAQCAtMjkzLDYg
KzI5Myw4IEBAIFBBU1MgaW5uZXIuT3ZlcmZsb3dFdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIuT3ZlcmZsb3dFdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5u
ZXIuUGFnZVRyYW5zaXRpb25FdmVudC5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuUGFnZVRy
YW5zaXRpb25FdmVudC5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIuUGVl
ckNvbm5lY3Rpb24uaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlBlZXJDb25uZWN0aW9uLmNv
bnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5QbHVnaW4uaXNJbm5lciBpcyB0
cnVlCiBQQVNTIGlubmVyLlBsdWdpbi5jb25zdHJ1Y3Rvci5pc0lubmVyIGlzIHRydWUKIFBBU1Mg
aW5uZXIuUGx1Z2luQXJyYXkuaXNJbm5lciBpcyB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDUzYmVkYjRiOTQ2ODk3NGQ1NTA1MzJmZWY5ZDcxYTE0MzllYjM4MjYuLmE0MTdhZjlmYzJmNGYx
ZWM0ZGEyYzhjOWY5ZmVmMzJiOGUyYTk4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMDEx
LDYgKzIwMTEsNyBAQCBJRiAoRU5BQkxFX01FRElBX1NUUkVBTSkKICAgICAgICAgZG9tL01lZGlh
U3RyZWFtVHJhY2suY3BwCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKICAg
ICAgICAgZG9tL1N0cmVhbUV2ZW50LmNwcAorICAgICAgICBwMnAvUGVlckNvbm5lY3Rpb24uY3Bw
CiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAogICAgICAgICBwYWdlL01l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAogICAgICkKQEAgLTIwMjIsNiArMjAyMyw4IEBA
IElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5p
ZGwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbAogICAgICAgICBkb20vU3Ry
ZWFtRXZlbnQuaWRsCisgICAgICAgIHAycC9QZWVyQ29ubmVjdGlvbi5pZGwKKyAgICAgICAgcDJw
L1NpZ25hbGluZ0NhbGxiYWNrLmlkbAogICAgICAgICBwYWdlL05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yLmlkbAogICAgICkKIEVORElGICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjM0ODRiMmViOTM5ZWZkYjY3
NDZhMTcxZmEwMGFjYjcxMjcxODBlMC4uZTA5MzM4YjUwMmRiODU4NTllNzFkNDk5ZjMwZTAwMTU0
NjQyYmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNiBAQAorMjAxMS0wNy0yOSAgVG9tbXkg
V2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBB
UEk6IEltcGxlbWVudCBQZWVyQ29ubmVjdGlvbiBhbmQgU2lnbmFsaW5nQ2FsbGJhY2sKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1MTAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGF5b3V0VGVzdHMgd2ls
bCBiZSBwcm92aWRlZCBieSBhIGZvbGxvdy11cCBDTCwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY1ODc+LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogQ29kZUdlbmVyYXRvcnMucHJpOgorICAgICAgICAqIERlcml2ZWRTb3VyY2Vz
LmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVXNlSlNDLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpwZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkpTUGVlckNvbm5l
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3Jh
cHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlY4UGVlckNvbm5lY3Rpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAq
IGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBwMnAvRGlzcGF0Y2hUYXNrLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVEaXNwYXRjaFRhc2s6OlNpbXBsZURpc3BhdGNoVGFzayk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwYXRjaFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwYXRj
aFRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BhdGNoVGFzazo6RGlz
cGF0Y2hUYXNrKToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb246OlBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjp+
UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmxvY2Fs
U3RyZWFtcyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVtb3RlU3RyZWFt
cyk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cHJvY2Vzc1NpZ25hbGluZ01l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnNlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25O
ZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246Om9u
TmVnb3RpYXRpb25Eb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzdHJl
YW1BZGRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c3RyZWFtUmVtb3Zl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25NZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvblNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0U2lnbmFsaW5nRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RTdHJlYW1BZGRlZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0U2ltcGxlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGVlckNvbm5lY3Rpb246OnBvc3RTdGFydE5lZ290aWF0aW9uVGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2lnbmFsaW5nRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2ltcGxlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RhcnROZWdvdGlhdGlvblRh
c2spOgorICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogcDJwL1BlZXJDb25uZWN0aW9u
LmlkbDogQWRkZWQuCisgICAgICAgICogcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlNpZ25hbGluZ0NhbGxiYWNrOjp+U2lnbmFsaW5nQ2FsbGJhY2spOgorICAgICAgICAq
IHAycC9TaWduYWxpbmdDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFtQ2xpZW50Lmg6CisgICAgICAgICog
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1Db250cm9sbGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZnJhbWVUb1BhZ2VQ
ZWVyQ29ubmVjdGlvbklkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW1Db250cm9sbGVyOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6b25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJv
bGxlcjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6b25BZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVy
OjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVy
OjpvblJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6Om5ld1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OnN0YXJ0TmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKToKKyAgICAgICAg
KiBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJl
YW1GcmFtZUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXI6OlJlcXVlc3Q6OmlzU2lnbmFsaW5nUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6Y3JlYXRlUGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om5ld1BlZXJDb25u
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpj
bG9zZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6YWRkU3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpyZW1vdmVTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25BZGRTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uUmVtb3Zl
U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpv
blNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZSk6CisgICAgICAgICogcGFn
ZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6OkNsaWVudEJhc2U6OmlzUGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9u
Q2xpZW50OjpQZWVyQ29ubmVjdGlvbkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5lY3Rpb25DbGllbnQ6On5QZWVyQ29ubmVjdGlv
bkNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UGVlckNvbm5lY3Rpb25DbGllbnQ6OmlzUGVlckNvbm5lY3Rpb24pOgorCiAyMDExLTA4LTAyICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhcnJvdyBpcyBhIHBhaW4gdG8gY2xpY2sgaW4gY29uc29sZS4gRHJpdmUtYnkgc2VsZWN0
aW9uIHJlc2V0IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3Jz
LnByaSBiL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQppbmRleCBmMjlmNGY1OWU4
ODlhYTkwNWU4ZWJmOWZhMjUwNTk2Njc1OGJiMTkyLi4yNDk2ZjEyZDZjZDRmNjY2Zjg3M2JiNDY0
ZWMwNWEwNWZhMjBkZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9y
cy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCkBAIC0zMjcsNiAr
MzI3LDggQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGlj
YXRpb25DYWNoZS5pZGwgXAogICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCiAg
ICAgbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKKyAgICBwMnAvUGVlckNv
bm5lY3Rpb24uaWRsIFwKKyAgICBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsIFwKICAgICBwYWdl
L0JhckluZm8uaWRsIFwKICAgICBwYWdlL0NvbnNvbGUuaWRsIFwKICAgICBwYWdlL0Nvb3JkaW5h
dGVzLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMzFhM2U4MDlkOWQ0Mjky
NjNkMTA5MWJiZmI0MzUwMmUyZmIzNmExMi4uNWRmMzMwZTBmNDQxZmVjNWI5YjMwMjgwNzEyYzMw
MjQ3OWFlOTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjU4LDYgKzI1OCw3
IEBACiAjaW5jbHVkZSAiSlNPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCIKICNpbmNs
dWRlICJKU092ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVu
dC5jcHAiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJm
b3JtYW5jZS5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIgogI2lu
Y2x1ZGUgIkpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIgpAQCAtMjc2LDYgKzI3Nyw3IEBACiAjaW5j
bHVkZSAiSlNTY3JpcHRQcm9maWxlTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIu
Y3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5jcHAiCisjaW5jbHVkZSAiSlNT
aWduYWxpbmdDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNTUUxFcnJvci5jcHAiCiAjaW5jbHVk
ZSAiSlNTUUxFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmNwcCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDYxZWI3ZjU5ZWMwMzkzY2RjMTE1OTEyMmU5
NGExZmE3ZDE3OWYwOTYuLmQ0NDY2MmIyMzRlZDI5Nzg3ZTBhN2M2Nzk2MDk5YTlmYjRmYWY1YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzksNiArMzksNyBAQCBWUEFUSCA9
IFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2FkZXIvYXBw
Y2FjaGUgXAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCisgICAgJChXZWJDb3JlKS9w
MnAgXAogICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAg
ICAkKFdlYkNvcmUpL3N0b3JhZ2UgXApAQCAtMzMyLDYgKzMzMyw3IEBAIERPTV9DTEFTU0VTID0g
XAogICAgIE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24gXAogICAgIE92ZXJmbG93RXZlbnQg
XAogICAgIFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAorICAgIFBlZXJDb25uZWN0aW9uIFwKICAgICBQ
ZXJmb3JtYW5jZSBcCiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIFwKICAgICBQZXJmb3JtYW5j
ZVRpbWluZyBcCkBAIC0zNDksNiArMzUxLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgU2hhcmVk
V29ya2VyQ29udGV4dCBcCiAgICAgU2NyaXB0UHJvZmlsZSBcCiAgICAgU2NyaXB0UHJvZmlsZU5v
ZGUgXAorICAgIFNpZ25hbGluZ0NhbGxiYWNrIFwKICAgICBTcGVlY2hJbnB1dEV2ZW50IFwKICAg
ICBTcGVlY2hJbnB1dFJlc3VsdCBcCiAgICAgU3BlZWNoSW5wdXRSZXN1bHRMaXN0IFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGIzODhhMzY5OWRiNjZhNmNmNGRkZjk5MGE5YjMz
YmQ2NTQ0YzZmZTIuLmE0NzY2MjdhYmJlNTZkZmM5M2U3MWY1NmJkNGQ3Y2MwMDc2ODU3MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDExLDYgKzQxMSw4IEBAIHdlYmNvcmVf
YnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZl
bnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BlcmZvcm1hbmNlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1h
bmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24u
Y3BwIFwKQEAgLTQ0Nyw2ICs0NDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXJDb250ZXh0LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3JrZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTU2hhcmVkV29ya2VyLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaWduYWxp
bmdDYWxsYmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaWduYWxpbmdDYWxs
YmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU3BlZWNoSW5wdXRFdmVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dEV2ZW50LmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dFJlc3VsdC5jcHAgXApAQCAtNzgwLDYgKzc4
NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0
aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5l
Y3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdp
bkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwIFwKQEAgLTExMjAsNiArMTEyNSw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZl
bnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb24uaCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL0Rpc3BhdGNoVGFzay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggXApAQCAtMjE4OCw2ICsyMTk0LDkgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgg
XAogCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3AycC9QZWVyQ29ubmVjdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5n
Q2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCmluZGV4IGFiNGI5MTNmZjg4NTFiMGE2OWFhM2I3NTczZDFmM2RlMWQw
MjY3NDkuLmQ0M2NmODMxMjBhZTZjNzI3ZDg0ZDM3M2MyZDU0Nzg1N2RhZjczMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VK
U0MuY21ha2UKQEAgLTEwMiw2ICsxMDIsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9q
cy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0
b3IuY3BwCisgICAgYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwCiAgICAgYmluZGluZ3MvanMv
SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKaW5kZXggODQzYjQ0MmRkZTE4N2RjNmRkNTk2ZjVkYmFmZGVjZjM5OGRkMWFhNC4uNGVlODRk
MTYyZGNkMzMwY2VlMWJlMjhjY2M1MGNjNDI2MDAxOGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKQEAgLTE2OCw2ICsxNjgsNyBAQAogICAgICAgJy4uL2xvYWRlci9p
Y29uJywKICAgICAgICcuLi9tYXRobWwnLAogICAgICAgJy4uL25vdGlmaWNhdGlvbnMnLAorICAg
ICAgJy4uL3AycCcsCiAgICAgICAnLi4vcGFnZScsCiAgICAgICAnLi4vcGFnZS9hbmltYXRpb24n
LAogICAgICAgJy4uL3BhZ2UvY2hyb21pdW0nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDU1YzhjMTJk
MWE3MmJjODNlNDJmMDQ3MWFmM2YzOTlhMTI4NWEyYzIuLjc0OGJkM2UyMzhmYTQyNTY0ZGYyNjg0
ZGQ2YzYzODViNDc3OTE5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTk3NSw2ICs5NzUsNyBAQAog
ICAgICAgICAgICAgJ2RvbS9ET01UaW1lU3RhbXAuaCcsCiAgICAgICAgICAgICAnZG9tL0Rldmlj
ZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dC5oJywKKyAgICAgICAgICAgICdkb20vRGlzcGF0Y2hUYXNrLmgnLAogICAgICAgICAgICAgJ2Rv
bS9Eb2N1bWVudC5oJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRGcmFnbWVudC5oJywKICAg
ICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXIuaCcsCkBAIC0xMzU3LDYgKzEzNTgsOCBAQAog
ICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCcsCiAg
ICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaWRsJywKICAgICAgICAgICAg
ICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5pZGwnLAorICAgICAgICAgICAgJ3Ay
cC9QZWVyQ29ubmVjdGlvbi5pZGwnLAorICAgICAgICAgICAgJ3AycC9TaWduYWxpbmdDYWxsYmFj
ay5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvQWJzdHJhY3RWaWV3LmlkbCcsCiAgICAgICAgICAg
ICAncGFnZS9CYXJJbmZvLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9Db25zb2xlLmlkbCcsCkBA
IC0xODgwLDYgKzE4ODMsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9y
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20u
Y3BwJywKQEAgLTIxODIsNiArMjE4Niw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE5vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0y
ODQ0LDYgKzI4NDksOSBAQAogICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5o
JywKKyAgICAgICAgICAgICdwMnAvUGVlckNvbm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdw
MnAvUGVlckNvbm5lY3Rpb24uaCcsCisgICAgICAgICAgICAncDJwL1NpZ25hbGluZ0NhbGxiYWNr
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5jcHAnLAogICAgICAgICAgICAgJ3BhZ2Uv
QmFySW5mby5oJywKICAgICAgICAgICAgICdwYWdlL0NhbGxiYWNrVGFzay5oJywKQEAgLTUyNTMs
NiArNTI2MSw3IEBACiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxl
ci5oJywKICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAnLAogICAg
ICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2Rv
bS9EaXNwYXRjaFRhc2suaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCiAgICAg
ICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDdhM2JlZjE2ZjU3
NmQ2M2JiNDI0NTg3MDViZjM2MWI4NmM0YzdhMWYuLjcyZTdiNTE5YWVlZThhZGIzNjIyYWNhNTA0
ODNhOTU3MGRjYmU1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0zMjQzLDYgKzMyNDMsOCBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICAgICAgZG9tL01lZGlh
U3RyZWFtVHJhY2suaCBcCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwKICAg
ICAgICAgZG9tL1N0cmVhbUV2ZW50LmggXAorICAgICAgICBwMnAvUGVlckNvbm5lY3Rpb24uaCBc
CisgICAgICAgIHAycC9TaWduYWxpbmdDYWxsYmFjay5oIFwKICAgICAgICAgcGFnZS9DYWxsYmFj
a1Rhc2suaCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBcCiAgICAgICAgIHBh
Z2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggXApAQCAtMzI1OCwxMiArMzI2MCwxOCBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFfU1RSRUFNPTEpIHsKICAgICAgICAgZG9tL01lZGlh
U3RyZWFtVHJhY2suY3BwIFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcCBc
CiAgICAgICAgIGRvbS9TdHJlYW1FdmVudC5jcHAgXAorICAgICAgICBwMnAvUGVlckNvbm5lY3Rp
b24uY3BwIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKICAgICAg
ICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKIAogICAgIHY4IHsKICAgICAg
ICAgU09VUkNFUyArPSBcCi0gICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0
b3JDdXN0b20uY3BwCisgICAgICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JD
dXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0
aW9uQ3VzdG9tLmNwcAorICAgIH0gZWxzZSB7CisgICAgICAgIFNPVVJDRVMgKz0gXAorICAgICAg
ICAgICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJp
bmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDkxZjJmYTUyZTMx
ODFlN2YxNGExZmMzOWVhZTMyNzI0MTBhM2VmZTQuLjNmMDg2ZjU0NWU2Yzg2YzY2ZDY4MTdlNzkz
Mjc5NmNmYzJiZjZhNjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0xMjM5MCw2ICsxMjM5MCw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVl
ckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU1BlcmZvcm1hbmNlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CkBAIC0xMzI4Niw2ICsxMzM0Miw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVy
aXZlZFNvdXJjZXNcSlNTaWduYWxpbmdDYWxsYmFjay5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xKU1NpZ25hbGluZ0NhbGxiYWNrLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxFcnJv
ci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMjUxNjcsNiArMjUyNzks
MjIgQEAKIAkJCTwvRmlsdGVyPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0icDJw
IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHAycFxQZWVyQ29ubmVjdGlv
bi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHAycFxQZWVyQ29ubmVjdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxkb21cU2lnbmFsaW5nQ2FsbGJhY2suaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlOYW1lPSJwYWdlIgogCQkJPgogCQkJPEZp
bGUKQEAgLTQ0NDcwLDYgKzQ0NTk4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEaXNwYXRjaFRhc2suaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXERvY3VtZW50LmNwcCIKIAkJ
CQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02MzE0NSw2ICs2MzI3Nyw1OCBAQAogCQkJ
CQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1l
bnRGdW5jdGlvbnMuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4
MjE5NTk0NWExYjhmZjExYTkxMTEyMzZiZGMxZmUzZmMxZTBmMmIuLjJiY2Y2MGYyZThhZDUwYjg5
ODhlMWFhMjFiNjU3ODkzNTdkODVhZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDIsMTAgKzExNDIsMTkgQEAKIAkJNDk5
QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VENDEyOENEMzE0MDBFNzI2
QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCAqLzsgfTsKIAkJNDk5QjNFRDcxMjhDRDMxNDAwRTcy
NkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDk5QjNFRDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJD
QS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5
OUIzRUREMTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTlCM0VEQzEyOERCNTAxMDBF
NzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ5QTVBNEZEMTNFMkYwMUUwMENGREFFMCAvKiBEaXNw
YXRjaFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ5QTVBNEY3MTNFMkYwMUUwMENGREFFMCAvKiBEaXNwYXRjaFRhc2suaCAqLzsgfTsKKwkJNDlB
NUE0RkUxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTVBNEY4MTNFMkYwMUUwMENGREFF
MCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTQ5QTVBNEZGMTNFMkYwMUUwMENGREFF
MCAvKiBQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDlBNUE0RjkxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmgg
Ki87IH07CisJCTQ5QTVBNTAxMTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBNUE0RkIx
M0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi87IH07CiAJCTQ5QTg1QjZC
MTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE4NUI2ODEzOEQ1NzM5MDBFQ0I3QjMgLyogU3Ry
ZWFtRXZlbnQuY3BwICovOyB9OwogCQk0OUE4NUI2QzEzOEQ1NzNBMDBFQ0I3QjMgLyogU3RyZWFt
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
QTg1QjY5MTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oICovOyB9OwogCQk0OUE4NUI3
NzEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE4NUI3NTEzOEQ1OEVFMDBFQ0I3QjMgLyog
SlNTdHJlYW1FdmVudC5jcHAgKi87IH07CiAJCTQ5QTg1Qjc4MTM4RDU4RUUwMEVDQjdCMyAvKiBK
U1N0cmVhbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OUE4NUI3NjEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5oICovOyB9Owor
CQk0OUJFMzBEMjEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBEMTEz
RDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi87IH07CisJCTQ5
QkUzMEYzMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEVGMTNEOTc2NDYwMDM4
MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJNDlCRTMwRjQxM0Q5NzY0NjAw
MzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYwMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25u
ZWN0aW9uLmggKi87IH07CisJCTQ5QkUzMEY1MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGlu
Z0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAq
LzsgfTsKKwkJNDlCRTMwRjYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEYy
MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggKi87IH07CiAJCTQ5QzdC
OTkzMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgwMTA0MkQyRDMwMDA5RDQ0NyAv
KiBKU1dlYkdMQnVmZmVyLmNwcCAqLzsgfTsKIAkJNDlDN0I5OTQxMDQyRDJEMzAwMDlENDQ3IC8q
IEpTV2ViR0xCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QzdCOTgxMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmggKi87IH07
CiAJCTQ5QzdCOTk1MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3Qjk4MjEwNDJEMkQzMDAw
OUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwICovOyB9OwpAQCAtNzY5OSwxMSArNzcwOCwyMiBAQAog
CQk0OTlCM0VENDEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEdyYXBoaWNzTGF5ZXJDQS5jcHA7IHBhdGgg
PSBjYS9HcmFwaGljc0xheWVyQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OTlCM0VENTEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdyYXBoaWNzTGF5ZXJDQS5oOyBwYXRoID0gY2EvR3JhcGhp
Y3NMYXllckNBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OUIzRURDMTI4REI1
MDEwMEU3MjZDMiAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBsYXRmb3JtQ0FBbmltYXRpb24uaDsgcGF0aCA9IGNhL1BsYXRmb3JtQ0FB
bmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RjcxM0UyRjAx
RTAwQ0ZEQUUwIC8qIERpc3BhdGNoVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBEaXNwYXRjaFRhc2suaDsgcGF0aCA9IGRvbS9EaXNwYXRjaFRhc2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RjgxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBlZXJDb25u
ZWN0aW9uLmNwcDsgcGF0aCA9IHAycC9QZWVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5QTVBNEY5MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZWVyQ29ubmVjdGlvbi5oOyBw
YXRoID0gcDJwL1BlZXJDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5QTVBNEZBMTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gUGVlckNvbm5lY3Rpb24uaWRsOyBwYXRoID0gcDJwL1BlZXJDb25uZWN0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RkIxM0UyRjAxRTAw
Q0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNpZ25hbGluZ0NhbGxiYWNrLmg7IHBhdGggPSBwMnAvU2lnbmFsaW5nQ2FsbGJhY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RkMxM0UyRjAxRTAwQ0ZEQUUw
IC8qIFNpZ25hbGluZ0NhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTaWduYWxp
bmdDYWxsYmFjay5pZGw7IHBhdGggPSBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OUE4NUI2ODEzOEQ1NzM5MDBFQ0I3QjMgLyogU3RyZWFt
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtRXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUE4NUI2OTEzOEQ1NzNBMDBF
Q0I3QjMgLyogU3RyZWFtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RyZWFtRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNkExMzhE
NTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
dHJlYW1FdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1Qjc1MTM4
RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTU3RyZWFtRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OUE4NUI3NjEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmVhbUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
OUJFMzBFRjEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVl
ckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQZWVyQ29u
bmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBGMTEzRDk3NjQ2
MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRjIxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTaWduYWxpbmdDYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUM3Qjk4MDEwNDJEMkQzMDAw
OUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1dlYkdMQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlDN0I5ODExMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTEJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OUM3Qjk4MjEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnQ4QXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MDIsNiArMTI5MjIsNyBAQAogCQkJCUJDQjE2
QkZCMDk3OUMzODcwMDQ2Nzc0MSAvKiBsb2FkZXIgKi8sCiAJCQkJRkFCRTcyRUMxMDU5QzFFQjAw
RDk5OUREIC8qIG1hdGhtbCAqLywKIAkJCQkzMzNGNzAzRDBGQjQ5QzE2MDA4RTEyQTYgLyogbm90
aWZpY2F0aW9ucyAqLywKKwkJCQk0OUE1QTRGNjEzRTJFRkU2MDBDRkRBRTAgLyogcDJwICovLAog
CQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovLAogCQkJCUJDRjFBNUJBMDk3
ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNC
QzYgLyogcGx1Z2lucyAqLywKQEAgLTE0MDI5LDYgKzE0MDUwLDE4IEBACiAJCQluYW1lID0gY2E7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk0OUE1QTRGNjEzRTJFRkU2MDBD
RkRBRTAgLyogcDJwICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk0OUE1QTRGODEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwICovLAor
CQkJCTQ5QTVBNEY5MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5oICovLAorCQkJ
CTQ5QTVBNEZBMTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5pZGwgKi8sCisJCQkJ
NDlBNUE0RkIxM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggKi8sCisJCQkJ
NDlBNUE0RkMxM0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmlkbCAqLywKKwkJ
CSk7CisJCQluYW1lID0gcDJwOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
NDlFOTExQjIwRUY4NkQyNzAwOUQwQ0FGIC8qIHRyYW5zZm9ybXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTcyODEsNiArMTczMTQsOCBAQAogCQkJCUJD
RDlDMkJGMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggKi8sCiAJCQkJNjVERjMxRTkw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uY3BwICovLAogCQkJCTY1REYzMUVBMDlEMUND
NjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmggKi8sCisJCQkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgw
OEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwICovLAorCQkJCTQ5QkUzMEYwMTNEOTc2NDYwMDM4
MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJNTk4MzY1RTMxMzU1RjYwNDAwMUIx
ODVEIC8qIEpTUG9zaXRpb25DYWxsYmFjay5jcHAgKi8sCiAJCQkJNTk4MzY1REMxMzU1RjUzQzAw
MUIxODVEIC8qIEpTUG9zaXRpb25DYWxsYmFjay5oICovLAogCQkJCUZFODBEQTZEMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLApAQCAtMTcyOTEsNiArMTczMjYsOCBA
QAogCQkJCTY1REYzMUVDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oICovLAogCQkJCUU0QjQyMzg1MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQu
Y3BwICovLAogCQkJCUU0QjQyMzg2MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQu
aCAqLywKKwkJCQk0OUJFMzBGMTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFj
ay5jcHAgKi8sCisJCQkJNDlCRTMwRjIxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2Fs
bGJhY2suaCAqLywKIAkJCQk3NTQxNUQ0RjEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1
dEV2ZW50LmNwcCAqLywKIAkJCQk3NTQxNUQ1MDEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJ
bnB1dEV2ZW50LmggKi8sCiAJCQkJNzU0MTVENTExMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNo
SW5wdXRSZXN1bHQuY3BwICovLApAQCAtMTg2NDMsNiArMTg2ODAsNyBAQAogCQkJCUJDQjc3MzYw
MEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDdXN0b20uY3BwICovLAogCQkJCTFBNzUw
REQzMEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUxpc3RDdXN0b20uY3BwICovLAorCQkJ
CTQ5QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAq
LywKIAkJCQlFMUFEMTJENTEyOTVEMEJEMDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25DdXN0b20uY3BwICovLAogCQkJCTlGQTM3RUU2MTE3MkZDRjAwMEM0Q0Q1NSAvKiBKU1Njcmlw
dFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk1MURDRTgwMTBDQUM5RjFDMDA0ODgzNTgg
LyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCAqLywKQEAgLTE5NzE4LDYgKzE5NzU2
LDcgQEAKIAkJCQk1OUE4NUVBMTExOUQ2OEQ5MDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25F
dmVudC5jcHAgKi8sCiAJCQkJNTlBODVFQTMxMTlENjhFQzAwREVGMUVGIC8qIERldmljZU9yaWVu
dGF0aW9uRXZlbnQuaCAqLywKIAkJCQk1OUE4NUVBQTExOUQ3QjZFMDBERUYxRUYgLyogRGV2aWNl
T3JpZW50YXRpb25FdmVudC5pZGwgKi8sCisJCQkJNDlBNUE0RjcxM0UyRjAxRTAwQ0ZEQUUwIC8q
IERpc3BhdGNoVGFzay5oICovLAogCQkJCUE4MTg1RjM0MDk3NjU3NjUwMDU4MjZEOSAvKiBEb2N1
bWVudC5jcHAgKi8sCiAJCQkJQTgxODVGMzgwOTc2NTc2NTAwNTgyNkQ5IC8qIERvY3VtZW50Lmgg
Ki8sCiAJCQkJNjU0OEUyNDgwOUUxRTA0RDAwQUY4MDIwIC8qIERvY3VtZW50LmlkbCAqLywKQEAg
LTIwNjIzLDYgKzIwNjYyLDcgQEAKIAkJCQk4OTg3ODU1NTEyMkNBMDY0MDAzQUFCREEgLyogRGly
ZWN0b3J5UmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4OTBBRTBFMTEyNTZBMDc5MDBGNTk2
OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODkzQzQ4MDMx
MjQ4QkQzQTAwMkIzRDg2IC8qIERpcmVjdG9yeVJlYWRlclN5bmMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5QTVBNEZEMTNFMkYwMUUwMENGREFFMCAvKiBEaXNwYXRjaFRhc2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEMzE2MDkxMTJCMDI2RjcwMEMxQTM1OSAvKiBEaXN0YW5jZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQ3MzBENzcxMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGMzRGRTYwRTgyRjgxNDAwRjYyN0NEIC8qIEROUy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yMTk2OCw2ICsyMjAwOCw3IEBACiAJCQkJQTgyNkU4QUUwQTFB
OEYyMzAwQ0QxQkI2IC8qIEpTT3B0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMEQ1NzQxMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMjg0QkIxMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZl
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkUzMEY0MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1Bl
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNG
RDEgLyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMz
NjAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMTk4OCw2ICsyMjAyOSw3IEBACiAJCQkJOUZBMzdFRkQxMTcyRkRBNjAw
QzRDRDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDA3
QTdGMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFEMTY5MDYxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDlCRTMwRjYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5n
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDE1RDU2MTI5QUIyRDIwMDNBRDY2OSAv
KiBKU1NwZWVjaElucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDE1RDU4MTI5QUIy
RDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NTQxNUQ1QTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjI0MDEsNiArMjI0NDMsNyBAQAogCQkJCUE4RkE2RTVEMEU0Q0ZERUQw
MEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3MTBEMDBCRjIy
MDA3MUI3ODIgLyogUGF0dGVybkF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUz
NTY1MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0OUE1QTRGRjEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCThBN0NDOTZCMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTg0NEQwNTExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBRjRFNTU2MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJm
b3JtYW5jZU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI2OTYsNiArMjI3MzksNyBA
QAogCQkJCTQxRDE2OEU4MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUQxNjhFQTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMTY4RUUxMDIyNkU4OTAwOUJD
ODI3IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlBNUE1MDEx
M0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5RTkxMUNEMEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3Jt
T3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI0OTQ2LDYgKzI0OTkwLDggQEAKIAkJCQlB
ODI2RUM0ODBBMUIwQ0JFMDBDRDFCQjYgLyogSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTBENTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjg0QkIyMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1Bh
Z2VUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlCRTMwRjMxM0Q5NzY0
NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlC
RTMwRDIxM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOEE5QTU4NzQxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEE5QTU4NzAxMUU4NEMzNjAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBOUE1ODg3MTFFODRG
MzcwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlVGltaW5nLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MjQ5NjksNiArMjUwMTUsNyBAQAogCQkJCTQxRDA3QTdFMEZGOTM1Q0EwMDk1RURDRSAvKiBKU1No
YXJlZFdvcmtlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUQxNjkwNTEwMjM4QjY2MDA5QkM4
MjcgLyogSlNTaGFyZWRXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0Q0Q4
RDgyMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0OUJFMzBGNTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTQxNUQ1NTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNT
cGVlY2hJbnB1dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1NDE1RDU3MTI5QUIyRDIw
MDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1
NDE1RDU5MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0TGlzdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI1Mzc2LDYgKzI1NDIzLDcgQEAKIAkJCQlBOEZBNkU1RTBFNENGREVE
MDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBBMzhGRTBFNTBD
QzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY0
MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ5QTVBNEZFMTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4QTdDQzk3MDEyMDc2RjhBMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9y
bWFuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFGNEU1NTUxMURDNUEzNjAwMEVEM0RFIC8q
IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgK
aW5kZXggMzQzMmQ3NDRmMmJmZjg5NWNjNDExMTJiZDM3MzVlMDMwZGM2YmU3Yi4uNGU4NDM2Nzgw
MDY1ZWYwNGZjMzM3NTQzMGNjYzlkZTRkMjliNDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE0
OCw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVk
KCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRN
ZWRpYVN0cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVk
KCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgYm9vbCBwZWVy
Q29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUVVPVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAppbmRleCA1OWE5MGJmY2ViYzVlZDg0YjJlZDhlMmQx
MWQ2NzJlN2YzMzdlNDhhLi41ZTE1ODE1MjE2N2Q3MzE2ZGE1Mzk0MjFjMjQyMTExNzFlNjhmNDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKQEAgLTEyMyw2ICsxMjMsNyBAQAogI2luY2x1ZGUgIkpTTm9kZUl0ZXJhdG9yQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU05vZGVMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU09wdGlv
bkNvbnN0cnVjdG9yLmNwcCIKKyNpbmNsdWRlICJKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogI2luY2x1ZGUgIkpTUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldFJv
d0xpc3RDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MGJiMTcyZTAxMTBkZjljMTY0
NzkwNGE4ZWRjNGEzNzkyYWMwYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw3MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIkpTUGVlckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkNhbGxi
YWNrRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisjaW5jbHVkZSAiSlNTaWduYWxpbmdD
YWxsYmFjay5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5j
bHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUGVlckNvbm5l
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0g
c3RhdGljX2Nhc3Q8SlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkp
OworCisgICAgU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgUmVmUHRy
PFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrPEpTU2lnbmFsaW5nQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQo
MSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgRnJhbWUqIGZyYW1lID0gYXNKU0RPTVdpbmRv
dyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCk7CisgICAgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IGZyYW1lID8gZnJhbWUt
Pm1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkgOiAwOworCisgICAgUmVmUHRyPFBlZXJDb25u
ZWN0aW9uPiBwZWVyQ29ubmVjdGlvbjsKKyAgICBpZiAoZnJhbWVDb250cm9sbGVyKQorICAgICAg
ICBwZWVyQ29ubmVjdGlvbiA9IGZyYW1lQ29udHJvbGxlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24o
Y29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spOworCisgICAgaWYgKCFwZWVyQ29ubmVj
dGlvbikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDAzNGQ1NDc1OWQ2ZmZk
YzljY2ZlNWY3Yzc0OGJkNGY5ZDMwNDM4YzUuLjA4NmEzYTIxOTYxZGMyODA5YTIwN2NmYmFlN2Y1
MmQwN2UzZGY4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgIlY4Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJWOE5vdGlmaWNhdGlvbi5oIgor
I2luY2x1ZGUgIlY4UGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAjaW5j
bHVkZSAiVjhTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlckNvbnRleHQu
aCIKQEAgLTQ1NCw2ICs0NTUsOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XcmFwcGVy
Ojpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KEV2ZW50VGFyZ2V0KiB0YQogCiAgICAgaWYg
KE1lZGlhU3RyZWFtKiBzdHJlYW0gPSB0YXJnZXQtPnRvTWVkaWFTdHJlYW0oKSkKICAgICAgICAg
cmV0dXJuIHRvVjgoc3RyZWFtKTsKKworICAgIGlmIChQZWVyQ29ubmVjdGlvbiogcGVlckNvbm5l
Y3Rpb24gPSB0YXJnZXQtPnRvUGVlckNvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRvVjgo
cGVlckNvbm5lY3Rpb24pOwogI2VuZGlmCiAKICAgICBBU1NFUlQoMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVjdGlvbkN1
c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJlM2I1MzVlNzQyNTU4OWZiYTU1MzY0NTEwMWU2YmM1MWVl
MzYwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiVjhQZWVyQ29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRl
ICJWOFNpZ25hbGluZ0NhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4UGVlckNvbm5lY3Rpb246OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5QZWVyQ29ubmVj
dGlvbi5Db25zdHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3Qg
YmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAg
aW50IGFyZ0xlbmd0aCA9IGFyZ3MuTGVuZ3RoKCk7CisgICAgaWYgKGFyZ0xlbmd0aCAhPSAyKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9y
IHRha2VzIHR3byBhcmd1bWVudHMuIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworCisgICAgdjg6
OlRyeUNhdGNoIGV4Y2VwdGlvbkNhdGNoZXI7CisgICAgU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB0
b1dlYkNvcmVTdHJpbmcoYXJnc1swXS0+VG9TdHJpbmcoKSk7CisgICAgaWYgKGV4Y2VwdGlvbkNh
dGNoZXIuSGFzQ2F1Z2h0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNh
dGNoZXIuRXhjZXB0aW9uKCkpOworCisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBS
ZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rp
b25Pbmx5Q2FsbGJhY2s8VjhTaWduYWxpbmdDYWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkKTsK
KyAgICBpZiAoIXN1Y2NlZWRlZCB8fCAhc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgbXVzdCBiZSBnaXZl
biBhIFNpZ25hbGluZ0NhbGxiYWNrIGNhbGxiYWNrLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisK
KyAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRl
eHQoKTsKKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0g
ZnJhbWUgPyBmcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA6IDA7CisKKyAgICBS
ZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uOworICAgIGlmIChmcmFtZUNvbnRy
b2xsZXIpCisgICAgICAgIHBlZXJDb25uZWN0aW9uID0gZnJhbWVDb250cm9sbGVyLT5jcmVhdGVQ
ZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjayk7CisKKyAgICBp
ZiAoIXBlZXJDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisg
ICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBwZWVy
Q29ubmVjdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24ucmVsZWFz
ZSgpLCBhcmdzLkhvbGRlcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EaXNwYXRjaFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EaXNwYXRjaFRhc2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMDA0M2Y1MmQ0OTI4N2IzNTg4MjYxNTgzMzQyMzU0OGQ0NWVhNDQ0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rpc3BhdGNoVGFzay5oCkBAIC0wLDAgKzEs
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGlzcGF0Y2hUYXNrX2gKKyNkZWZpbmUgRGlz
cGF0Y2hUYXNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tDbGFzcywgdHlw
ZW5hbWUgU2ltcGxlRGF0YVR5cGU+CitjbGFzcyBTaW1wbGVEaXNwYXRjaFRhc2sgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lk
IChDYWxsYmFja0NsYXNzOjoqQ2FsbGJhY2spKGNvbnN0IFNpbXBsZURhdGFUeXBlJik7CisKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxTaW1wbGVEaXNwYXRjaFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRy
PENhbGxiYWNrQ2xhc3M+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNpbXBsZURh
dGFUeXBlJiBkYXRhKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaW1wbGVE
aXNwYXRjaFRhc2sob2JqZWN0LCBjYWxsYmFjaywgZGF0YSkpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAg
ICAgIChtX29iamVjdC5nZXQoKS0+Km1fY2FsbGJhY2spKG1fZGF0YSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFNpbXBsZURpc3BhdGNoVGFzayhQYXNzUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG9i
amVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBkYXRhKQorICAg
ICAgICA6IG1fb2JqZWN0KG9iamVjdCkKKyAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQor
ICAgICAgICAsIG1fZGF0YShkYXRhKSB7IH0KKworICAgIFJlZlB0cjxDYWxsYmFja0NsYXNzPiBt
X29iamVjdDsKKyAgICBDYWxsYmFjayBtX2NhbGxiYWNrOworICAgIFNpbXBsZURhdGFUeXBlIG1f
ZGF0YTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja0NsYXNzLCB0eXBlbmFtZSBT
aW1wbGVEYXRhVHlwZSwgdHlwZW5hbWUgUmVmQ291bnRlZERhdGFUeXBlPgorY2xhc3MgRGlzcGF0
Y2hUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgor
ICAgIHR5cGVkZWYgdm9pZCAoQ2FsbGJhY2tDbGFzczo6KkNhbGxiYWNrKShjb25zdCBTaW1wbGVE
YXRhVHlwZSYsIFBhc3NSZWZQdHI8UmVmQ291bnRlZERhdGFUeXBlPik7CisKKyAgICBzdGF0aWMg
UGFzc093blB0cjxEaXNwYXRjaFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPENhbGxiYWNrQ2xhc3M+
IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBhcmcxLCBQ
YXNzUmVmUHRyPFJlZkNvdW50ZWREYXRhVHlwZT4gYXJnMikKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgRGlzcGF0Y2hUYXNrKG9iamVjdCwgY2FsbGJhY2ssIGFyZzEsIGFyZzIp
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopCisgICAgeworICAgICAgICAobV9vYmplY3QuZ2V0KCktPiptX2NhbGxiYWNrKSht
X2FyZzEsIG1fYXJnMik7CisgICAgfQorCitwcml2YXRlOgorICAgIERpc3BhdGNoVGFzayhQYXNz
UmVmUHRyPENhbGxiYWNrQ2xhc3M+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNp
bXBsZURhdGFUeXBlJiBhcmcxLCBQYXNzUmVmUHRyPFJlZkNvdW50ZWREYXRhVHlwZT4gYXJnMikK
KyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFj
aykKKyAgICAgICAgLCBtX2FyZzEoYXJnMSkKKyAgICAgICAgLCBtX2FyZzIoYXJnMikgeyB9CisK
KyAgICBSZWZQdHI8Q2FsbGJhY2tDbGFzcz4gbV9vYmplY3Q7CisgICAgQ2FsbGJhY2sgbV9jYWxs
YmFjazsKKyAgICBTaW1wbGVEYXRhVHlwZSBtX2FyZzE7CisgICAgUmVmUHRyPFJlZkNvdW50ZWRE
YXRhVHlwZT4gbV9hcmcyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIERpc3BhdGNoVGFza19oCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDlkZDE4MzcwYTRkZDcxZjllM2M0ZDNiZjcyNDM4ZmJm
YWM1MDgyZmUuLmQ4MTIzZTg0MGE5YTIxZGZhOTAwNzAyYzUwZDAwZTA0N2I1ZmRhMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMTgwLDYgKzE4MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgXAogICAgIG1hY3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwKKyAgICBtYWNybyhj
b25uZWN0aW5nKSBcCisgICAgbWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFjcm8ocmVtb3Zlc3Ry
ZWFtKSBcCisgICAgXAorCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAg
ICBjbGFzcyBFdmVudE5hbWVzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGMy
MGIyMWMxM2M4OWIzNmZmYjM4YWY0MWFjYjlmYmRkYTNjYTg5NjguLjQyYWVhNGFhNWJjNzFiN2Jl
ZjU3NTU3ZmRjYjQ3YTk5ZTk3YzZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApA
QCAtMjE2LDYgKzIxNiwxMSBAQCBMb2NhbE1lZGlhU3RyZWFtKiBFdmVudFRhcmdldDo6dG9Mb2Nh
bE1lZGlhU3RyZWFtKCkKIHsKICAgICByZXR1cm4gMDsKIH0KKworUGVlckNvbm5lY3Rpb24qIEV2
ZW50VGFyZ2V0Ojp0b1BlZXJDb25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRp
ZgogCiBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVz
ZUNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGJjYzc1OGMzMDM3MTM2MmZl
YmMxNzI3Y2I4MjJhOTcxYzVmYmM0NmYuLjgwZTFhZjVjMjJkMTgwNDI0N2Y2OTBiMjkwZTNlZDY0
M2RhZGExOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC01OSw2ICs1OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2Rl
OwogICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKKyAgICBjbGFzcyBQZWVyQ29ubmVjdGlvbjsKICAg
ICBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CkBAIC0xNTIsNiArMTUzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgICAgIHZpcnR1YWwg
TWVkaWFTdHJlYW0qIHRvTWVkaWFTdHJlYW0oKTsKICAgICAgICAgdmlydHVhbCBMb2NhbE1lZGlh
U3RyZWFtKiB0b0xvY2FsTWVkaWFTdHJlYW0oKTsKKyAgICAgICAgdmlydHVhbCBQZWVyQ29ubmVj
dGlvbiogdG9QZWVyQ29ubmVjdGlvbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTVmMDA4MjZkZTdm
OTUxMmZhMTMwMGVjZjY5OWMyNzYyYzNlMTAwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkRpc3BhdGNoVGFzay5oIgor
I2luY2x1ZGUgIkVycm9yRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtTGlzdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgorI2luY2x1
ZGUgIlN0cmVhbUV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQ
ZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rpb246OmNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJh
dGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCit7
CisgICAgLy8gRklYTUU6IFZlcmlmeSB0aGF0IGNvbmZpZ3VyYXRpb24gZm9sbG93cyB0aGUgc3Bl
Y2lmaWVkIGZvcm1hdCwgaWYgbm90IHJldHVybiBudWxsLgorCisgICAgUmVmUHRyPFBlZXJDb25u
ZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihmcmFt
ZUNvbnRyb2xsZXIsIGlkLCBjb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOworICAg
IHBlZXJDb25uZWN0aW9uLT5pbml0KCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVh
c2UoKTsKK30KKworUGVlckNvbm5lY3Rpb246OlBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgU3RyaW5nJiBjb25m
aWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFj
aykKKyAgICA6IFBlZXJDb25uZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpCisgICAg
LCBtX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikKKyAgICAsIG1fcmVhZHlTdGF0ZShORVcp
CisgICAgLCBtX3NpZ25hbGluZ0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIEFT
U0VSVChmcmFtZUNvbnRyb2xsZXIpOworICAgIG1fbG9jYWxTdHJlYW1MaXN0ID0gTWVkaWFTdHJl
YW1MaXN0OjpjcmVhdGUoKTsKKyAgICBtX3JlbW90ZVN0cmVhbUxpc3QgPSBNZWRpYVN0cmVhbUxp
c3Q6OmNyZWF0ZSgpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjppbml0KCkKK3sKKyAgICBp
ZiAoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IG1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIGZyYW1lQ29udHJvbGxlci0+bmV3UGVlckNv
bm5lY3Rpb24obV9jbGllbnRJZCwgbV9jb25maWd1cmF0aW9uKTsKKworICAgIHBvc3RTdGFydE5l
Z290aWF0aW9uVGFzaygpOworfQorCitQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkK
K3sKK30KKworTWVkaWFTdHJlYW1MaXN0KiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkK
K3sKKyAgICByZXR1cm4gbV9sb2NhbFN0cmVhbUxpc3QuZ2V0KCk7Cit9CisKK01lZGlhU3RyZWFt
TGlzdCogUGVlckNvbm5lY3Rpb246OnJlbW90ZVN0cmVhbXMoKQoreworICAgIHJldHVybiBtX3Jl
bW90ZVN0cmVhbUxpc3QuZ2V0KCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nlc3NT
aWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpLT5wcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShtX2NsaWVudElkLCBtZXNzYWdlKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3Ry
aW5nIHV0ZjggPSB0ZXh0LnV0ZjgoKTsKKyAgICBpZiAodXRmOC5sZW5ndGgoKSA+IDUwNCkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpLT5tZXNzYWdlKG1fY2xpZW50SWQsIHRleHQpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJw
U3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENM
T1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlz
dCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQ
dHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKworICAgIGlmIChtX2xvY2FsU3Ry
ZWFtTGlzdC0+Y29udGFpbnMoc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2Nh
bFN0cmVhbUxpc3QtPmFkZChzdHJlYW0pOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0cmVh
bShtX2NsaWVudElkLCBzdHJlYW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdmVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIFN0
cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tp
bmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9
IHBycFN0cmVhbTsKKworICAgIGlmICghbV9sb2NhbFN0cmVhbUxpc3QtPmNvbnRhaW5zKHN0cmVh
bSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxTdHJlYW1MaXN0LT5yZW1vdmUoc3Ry
ZWFtKTsKKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBt
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5yZW1vdmVTdHJlYW0obV9jbGllbnRJZCwgc3Ry
ZWFtKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpLT5jbG9zZVBlZXJDb25uZWN0aW9uKG1fY2xpZW50SWQpOworCisgICAgbV9yZWFkeVN0YXRl
ID0gQ0xPU0VEOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uU3RhcnRl
ZCgpCit7CisgICAgbV9yZWFkeVN0YXRlID0gTkVHT1RJQVRJTkc7CisKKyAgICBwb3N0U2ltcGxl
RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RpbmdFdmVudCk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246Om9uTmVnb3RpYXRpb25Eb25lKCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBBQ1RJVkU7
CisKKyAgICBwb3N0U2ltcGxlRXZlbnQoZXZlbnROYW1lcygpLm9wZW5FdmVudCk7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb246OnN0cmVhbUFkZGVkKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0
cmVhbSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAgbV9yZW1v
dGVTdHJlYW1MaXN0LT5hZGQocyk7CisgICAgcG9zdFN0cmVhbUFkZGVkRXZlbnQocyk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb246OnN0cmVhbVJlbW92ZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1MaXN0LT5jb250YWlucyhzdHJlYW1M
YWJlbCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBtX3JlbW90ZVN0cmVh
bUxpc3QtPmdldChzdHJlYW1MYWJlbCk7CisgICAgbV9yZW1vdGVTdHJlYW1MaXN0LT5yZW1vdmUo
c3RyZWFtKTsKKyAgICBwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KHN0cmVhbSk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb246Om9uTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
cG9zdE1lc3NhZ2VFdmVudChtZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6b25T
aWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBwb3N0U2lnbmFs
aW5nRXZlbnQobWVzc2FnZSk7Cit9CisKK1BlZXJDb25uZWN0aW9uKiBQZWVyQ29ubmVjdGlvbjo6
dG9QZWVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIHRoaXM7Cit9CisKK1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIFBlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA/IG1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA6IDA7Cit9CisK
K0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb246OmV2ZW50VGFyZ2V0RGF0YSgpCit7Cisg
ICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBQZWVy
Q29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZUV2ZW50
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBkYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobWVzc2FnZSk7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250
ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgY29udGV4dC0+cG9zdFRhc2soRGlzcGF0Y2hU
YXNrPFBlZXJDb25uZWN0aW9uLCBpbnQsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OmNyZWF0ZSh0
aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZUV2ZW50LCAwLCBkYXRhLnJlbGVh
c2UoKSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U2lnbmFsaW5nRXZlbnQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBj
b250ZXh0LT5wb3N0VGFzayhTaW1wbGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmlu
Zz46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2lnbmFsaW5nRXZlbnQs
IG1lc3NhZ2UpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbUFkZGVkRXZl
bnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtKQoreworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYg
KCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4
dFRocmVhZCgpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKERpc3Bh
dGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgU3RyaW5nLCBNZWRpYVN0cmVhbT46OmNyZWF0ZSh0aGlz
LCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQsIGV2ZW50TmFtZXMoKS5hZGRz
dHJlYW1FdmVudCwgcHJwU3RyZWFtKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBvc3RT
dHJlYW1SZW1vdmVkRXZlbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtKQorewor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNv
bnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhEaXNwYXRj
aFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmluZywgTWVkaWFTdHJlYW0+OjpjcmVhdGUodGhpcywg
JlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbUV2ZW50LCBldmVudE5hbWVzKCkucmVtb3Zl
c3RyZWFtRXZlbnQsIHBycFN0cmVhbSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0
U2ltcGxlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAo
IWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0
VGhyZWFkKCkpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNoVGFzazxQZWVy
Q29ubmVjdGlvbiwgU3RyaW5nPjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0
Y2hTaW1wbGVFdmVudCwgZXZlbnROYW1lKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnBv
c3RTdGFydE5lZ290aWF0aW9uVGFzaygpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIGNvbnRleHQtPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwg
aW50Pjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0
aW9uVGFzaywgMCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VF
dmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSkK
K3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkID0gZGF0YTsKKyAgICBkaXNw
YXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJh
eT4oKSwgZCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpZ25hbGluZ0V2
ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX3NpZ25hbGluZ0NhbGxiYWNrLT5o
YW5kbGVFdmVudChtZXNzYWdlLCB0aGlzKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hTdHJlYW1FdmVudChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IHN0cmVhbSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHMgPSBzdHJlYW07CisgICAg
ZGlzcGF0Y2hFdmVudChTdHJlYW1FdmVudDo6Y3JlYXRlKG5hbWUsIGZhbHNlLCBmYWxzZSwgcykp
OworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IFN0
cmluZyYgZXZlbnROYW1lKQoreworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWUsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRj
aFN0YXJ0TmVnb3RpYXRpb25UYXNrKGNvbnN0IGludCYpCit7CisgICAgaWYgKG1lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkt
PnN0YXJ0TmVnb3RpYXRpb24obV9jbGllbnRJZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29u
bmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NThjNTU2NzMyMWZhNTNhNGU1ODhiMWM4Y2Q4NmM0M2Y5
MGE4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rp
b24uaApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQZWVyQ29ubmVj
dGlvbl9oCisjZGVmaW5lIFBlZXJDb25uZWN0aW9uX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3Ry
ZWFtOworY2xhc3MgTWVkaWFTdHJlYW1MaXN0OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNr
OworCitjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBlZXJDb25uZWN0
aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBOYW1lIGFuZCB2YWx1
ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0aGUgY29ycmVzc3BvbmRpbmcgY29uc3RhbnRzIGlu
IHRoZSAuaWRsIGZpbGUuCisgICAgZW51bSB7CisgICAgICAgIE5FVyA9IDAsCisgICAgICAgIE5F
R09USUFUSU5HID0gMSwKKyAgICAgICAgQUNUSVZFID0gMiwKKyAgICAgICAgQ0xPU0VEID0gMwor
ICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3Vy
YXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2aXJ0dWFsIH5QZWVy
Q29ubmVjdGlvbigpOworCisgICAgTWVkaWFTdHJlYW1MaXN0KiBsb2NhbFN0cmVhbXMoKTsKKyAg
ICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVhbXMoKTsKKworICAgIHVuc2lnbmVkIHNob3J0
IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIHZvaWQg
cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgYWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25D
b2RlJik7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKG1lc3NhZ2UpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
YWRkc3RyZWFtKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0
cmVhbSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24q
IHRvUGVlckNvbm5lY3Rpb24oKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0OworCisgICAgLy8gQ2FsbGJhY2tzCisgICAgdm9pZCBvbk1lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoKTsKKyAgICB2
b2lkIG9uTmVnb3RpYXRpb25Eb25lKCk7CisgICAgdm9pZCBzdHJlYW1BZGRlZChQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBzdHJlYW1SZW1vdmVkKGNvbnN0IFN0cmluZyYgc3Ry
ZWFtTGFiZWwpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OnJlZjsK
KyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3Byb3RlY3Rl
ZDoKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCitwcml2YXRlOgorICAgIFBlZXJDb25uZWN0
aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBjb25zdCBTdHJpbmcmIGNv
bmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGlu
aXQoKTsKKworICAgIHZvaWQgcG9zdFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1l
KTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICB2b2lkIHBvc3RTaWduYWxpbmdFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgcG9zdFN0cmVhbUFkZGVkRXZlbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZv
aWQgcG9zdFN0cmVhbVJlbW92ZWRFdmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAg
dm9pZCBwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKTsKKworICAgIHZvaWQgZGlzcGF0Y2hTaW1w
bGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwYXRjaE1lc3Nh
Z2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSk7CisgICAgdm9pZCBkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKTsKKyAgICB2b2lkIGRpc3BhdGNoU3RyZWFtRXZlbnQoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBkaXNwYXRjaFN0YXJ0TmVnb3RpYXRp
b25UYXNrKGNvbnN0IGludCYpOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24u
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICBFdmVudFRhcmdl
dERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICBTdHJpbmcgbV9jb25maWd1cmF0aW9uOwor
ICAgIHVuc2lnbmVkIHNob3J0IG1fcmVhZHlTdGF0ZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+IG1fc2lnbmFsaW5nQ2FsbGJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4g
bV9sb2NhbFN0cmVhbUxpc3Q7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9yZW1vdGVT
dHJlYW1MaXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFBlZXJDb25uZWN0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9wMnAvUGVlckNvbm5lY3Rpb24uaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjOWExOWRiMGE1OWM1MGIxM2M3
ZjBhYTkyMzEzYWFmMmExM2Q5NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
MnAvUGVlckNvbm5lY3Rpb24uaWRsCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBwMnAgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNLAorICAgICAgICBDYW5CZUNvbnN0cnVjdGVkLAorICAgICAgICBDdXN0b21Db25zdHJ1
Y3RGdW5jdGlvbiwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTIsCisgICAgICAgIFY4
Q3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIEV2ZW50VGFyZ2V0CisgICAgXSBQZWVyQ29ubmVj
dGlvbiB7CisgICAgICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW4gRE9NU3RyaW5n
IG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBORVcgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBORUdPVElBVElORyA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFDVElWRSA9
IDI7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENMT1NFRCA9IDM7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIHZv
aWQgc2VuZChpbiBET01TdHJpbmcgdGV4dCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIGFkZFN0cmVhbShpbiBNZWRp
YVN0cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCByZW1vdmVTdHJlYW0oaW4gTWVkaWFTdHJlYW0g
c3RyZWFtKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCBsb2NhbFN0cmVhbXM7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3QgcmVtb3RlU3RyZWFtczsKKworICAgICAg
ICB2b2lkIGNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY29ubmVjdGluZzsKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25vcGVuOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbm1lc3NhZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkc3RyZWFt
OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXN0cmVhbTsKKworICAg
ICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
RXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFtvcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIFtvcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9v
bGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
MnAvU2lnbmFsaW5nQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3AycC9TaWduYWxpbmdDYWxs
YmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmE0YTMwZTcxMjY3NTRhNTFjMzI4YjI4NzQ3NjI2MGFiZDhmYzRi
ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJh
Y2suaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNpZ25hbGluZ0Nh
bGxiYWNrX2gKKyNkZWZpbmUgU2lnbmFsaW5nQ2FsbGJhY2tfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUGVlckNvbm5lY3Rpb247CisKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNr
IDogcHVibGljIFJlZkNvdW50ZWQ8U2lnbmFsaW5nQ2FsbGJhY2s+IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5TaWduYWxpbmdDYWxsYmFjaygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVF
dmVudChjb25zdCBTdHJpbmcmLCBQZWVyQ29ubmVjdGlvbiopID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBTaWduYWxpbmdDYWxsYmFja19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAv
U2lnbmFsaW5nQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxi
YWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZDMyZmNmMGVjN2RjNTI0OGUwNDE2OGQ3ZjYxY2Q5NGU2OWE4
OGE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxi
YWNrLmlkbApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKwor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAg
ICAgQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5CisgICAgXSBTaWduYWxpbmdDYWxsYmFjayB7CisgICAg
ICAgIGJvb2xlYW4gaGFuZGxlRXZlbnQoaW4gRE9NU3RyaW5nIG1lc3NhZ2UsIGluIFBlZXJDb25u
ZWN0aW9uIHNvdXJjZSk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmlu
ZGV4IDBmMzE2MmYxZDc4MWMxMTNjOTdlYzRkNGY5NzNlZGIzM2Q5NTZlNzEuLjVlMzkyMWZmZWIz
NWMxODU3ZmZjYjFjNDUxMjc5NmI0ODE5NTg1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKQEAgLTMzNyw2ICszMzcsOCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRl
IFtDb25kaXRpb25hbD1ERVZJQ0VfT1JJRU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRGV2aWNl
T3JpZW50YXRpb25FdmVudENvbnN0cnVjdG9yIERldmljZU9yaWVudGF0aW9uRXZlbnQ7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9OLEVuYWJsZWRBdFJ1
bnRpbWVdIEV2ZW50TGlzdGVuZXIgb25kZXZpY2VvcmllbnRhdGlvbjsKIAorICAgICAgICBhdHRy
aWJ1dGUgW0NvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSxFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29u
bmVjdGlvbkNvbnN0cnVjdG9yIFBlZXJDb25uZWN0aW9uOworCiAgICAgICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQogICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xp
ZW50LmgKaW5kZXggMDNkZWRmZDg4YzRmZDMxOGE3ODAzMTY1YWQxOTExOWVjZmNiNWNjOS4uN2Fj
MmYwN2U5NWNjZGI0MjlkMWJjMjI5NWE5MmY5YWFkYzhmMTFmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1DbGllbnQuaApAQCAtNDMsMTggKzQzLDIxIEBAIHR5cGVkZWYgdW5zaWdu
ZWQgR2VuZXJhdGVTdHJlYW1PcHRpb25GbGFnczsKIAogY2xhc3MgTWVkaWFTdHJlYW1DbGllbnQg
ewogcHVibGljOgotICAgIC8vIE5vdGlmeSB0aGUgZW1iZWRkZXIgY2xpZW50IGFib3V0IHRoZSBw
YWdlIGNvbnRyb2xsZXIgYmVpbmcgZGVzdHJveWVkLgorICAgIC8vIE1lZGlhU3RyZWFtIGZ1bmN0
aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTdHJlYW1EZXN0cm95ZWQoKSA9IDA7Ci0KLSAg
ICAvLyBHZW5lcmF0ZSBhIG5ldyBsb2NhbCBzdHJlYW0uCiAgICAgdmlydHVhbCB2b2lkIGdlbmVy
YXRlU3RyZWFtKGludCByZXF1ZXN0SWQsIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+KSA9IDA7Ci0KLSAgICAvLyBTdG9wIGEgZ2VuZXJhdGVkIHN0
cmVhbS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcEdlbmVyYXRlZFN0cmVhbShjb25zdCBTdHJpbmcm
IHN0cmVhbUxhYmVsKSA9IDA7Ci0KLSAgICAvLyBFbmFibGUvZGlzYWJsZSBhbiB0cmFjay4KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoY29uc3QgU3RyaW5nJiB0
cmFja0lkLCBib29sIGVuYWJsZWQpID0gMDsKIAorICAgIC8vIFBlZXJDb25uZWN0aW9uIGZ1bmN0
aW9ucy4KKyAgICB2aXJ0dWFsIHZvaWQgbmV3UGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZShpbnQgcGVl
ckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCkgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1DbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKaW5kZXggYWFkY2Y2MGYyNzM1
YTRlYTczNWMxYTg5NDU0N2VjNmQ4MDljMzFhZC4uNWY2MDRlY2NjMGIwNzEzZmJjMGUzODU0YTFm
MzIwOWY3ZGNjMWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250
cm9sbGVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8v
IEZJWE1FOiBUaGlzIGlzIHVzZWQgZm9yIGhvbGRpbmcgbGlzdCBvZiBQZWVyQ29ubmVjdGlvbiBh
cyB3ZWxsLAorLy8gc28gcmVuYW1lIGNsYXNzIGlzIGluIG9yZGVyLgogY2xhc3MgTWVkaWFTdHJl
YW1Db250cm9sbGVyOjpSZXF1ZXN0IHsKIHB1YmxpYzoKICAgICBSZXF1ZXN0KCkKQEAgLTU1LDYg
KzU3LDcgQEAgcHJpdmF0ZToKIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250
cm9sbGVyKE1lZGlhU3RyZWFtQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQp
CiAgICAgLCBtX25leHRHbG9iYWxSZXF1ZXN0SWQoMSkKKyAgICAsIG1fbmV4dEdsb2JhbFBlZXJD
b25uZWN0aW9uSWQoMSkKIHsKIH0KIApAQCAtODksNiArOTIsOCBAQCB2b2lkIE1lZGlhU3RyZWFt
Q29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1lQ29udHJvbGxlcihNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcgogCiAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBmcmFtZVN0
cmVhbXMuYmVnaW4oKTsgaXQgIT0gZnJhbWVTdHJlYW1zLmVuZCgpOyArK2l0KQogICAgICAgICBt
X3N0cmVhbXMucmVtb3ZlKCppdCk7CisKKyAgICAvLyBGSVhNRTogQWRkIHVucmVnaXN0ZXIgZnVu
Y3Rpb25hbGl0eSBmb3IgcGVlciBjb25uZWN0aW9uIG9iamVjdHMuCiB9CiAKIGludCBNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6OnJlZ2lzdGVyUmVxdWVzdChpbnQgbG9jYWxJZCwgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlcikKQEAgLTE1Miw2ICsxNTcsMTMwIEBAIHZv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJl
YW1MYWJlbCkKICAgICAgICAgbV9zdHJlYW1zLmdldChzdHJlYW1MYWJlbCktPnN0cmVhbUZhaWxl
ZChzdHJlYW1MYWJlbCk7CiB9CiAKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblNpZ25h
bGluZ01lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9s
bGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkLgorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5j
b250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3QgUmVx
dWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBl
ZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250
cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25T
aWduYWxpbmdNZXNzYWdlKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSwgbWVzc2FnZSk7CisgICAg
fQorfQorCitib29sIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6ZnJhbWVUb1BhZ2VQZWVyQ29ubmVj
dGlvbklkKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBm
cmFtZVBlZXJDb25uZWN0aW9uSWQsIGludCYgcGFnZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAg
cGFnZVBlZXJDb25uZWN0aW9uSWQgPSAtMTsKKyAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSBiZXR0
ZXIgd2F5IHRvIGZpbmQgdGhlIGdsb2JhbCBJRCBpbiB0aGUgbWFwPworICAgIGZvciAoUmVxdWVz
dE1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlZXJDb25uZWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3Bl
ZXJDb25uZWN0aW9ucy5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5mcmFt
ZUNvbnRyb2xsZXIoKSA9PSBmcmFtZUNvbnRyb2xsZXIgJiYgaXQtPnNlY29uZC5sb2NhbElkKCkg
PT0gZnJhbWVQZWVyQ29ubmVjdGlvbklkKSB7CisgICAgICAgICAgICBwYWdlUGVlckNvbm5lY3Rp
b25JZCA9IGl0LT5maXJzdDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQ7CisgICAgaWYgKGZyYW1lVG9Q
YWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25J
ZCwgcGFnZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAgICBtX2NsaWVudC0+cHJvY2Vzc1NpZ25h
bGluZ01lc3NhZ2UocGFnZVBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6bWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciog
ZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOworICAgIGlmIChmcmFt
ZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0
aW9uSWQsIHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGllbnQtPm1lc3NhZ2Uo
cGFnZVBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6b25NZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUg
Y29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0
aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29u
c3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJv
bGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJh
bWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIo
KS0+b25NZXNzYWdlKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSwgbWVzc2FnZSk7CisgICAgfQor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6YWRkU3RyZWFtKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQs
IGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlv
bklkOworICAgIGlmIChmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVy
LCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAg
bV9jbGllbnQtPmFkZFN0cmVhbShwYWdlUGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOwor
fQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25BZGRTdHJlYW0oaW50IGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNp
bmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYg
KG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkg
eworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rp
b25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVy
Q29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZy
YW1lQ29udHJvbGxlcigpLT5vbkFkZFN0cmVhbShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIHN0
cmVhbUxhYmVsLCB0cmFja3MpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OnJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9s
bGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
KQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQ
ZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBw
YWdlUGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1fY2xpZW50LT5yZW1vdmVTdHJlYW0ocGFn
ZVBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6Om9uUmVtb3ZlU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2Ug
dGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9w
ZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7Cisg
ICAgICAgIC8vIFRPRE86IEJldHRlciBuYW1lIG9mIHBlZXJDb25uZWN0aW9uIHZhcmlhYmxlPwor
ICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25z
LmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29u
bmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1l
Q29udHJvbGxlcigpLT5vblJlbW92ZVN0cmVhbShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCksIHN0
cmVhbUxhYmVsKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpuZXdQ
ZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVy
LCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24p
Cit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gbV9uZXh0R2xvYmFsUGVlckNvbm5l
Y3Rpb25JZCsrOworICAgIG1fcGVlckNvbm5lY3Rpb25zLmFkZChwYWdlUGVlckNvbm5lY3Rpb25J
ZCwgUmVxdWVzdChmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGZyYW1lQ29udHJvbGxlcikpOworCisg
ICAgbV9jbGllbnQtPm5ld1BlZXJDb25uZWN0aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBjb25m
aWd1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNsb3NlUGVlckNv
bm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQ7
CisgICAgaWYgKGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZy
YW1lUGVlckNvbm5lY3Rpb25JZCwgcGFnZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAgICBtX2Ns
aWVudC0+Y2xvc2VQZWVyQ29ubmVjdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQp
Cit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOworICAgIGlmIChmcmFtZVRvUGFnZVBl
ZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIHBh
Z2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGllbnQtPnN0YXJ0TmVnb3RpYXRpb24o
cGFnZVBlZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6
b25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKQorewor
ICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBi
ZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5l
Y3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQp
OworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAg
ICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25OZWdvdGlhdGlvblN0YXJ0
ZWQocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9uRG9uZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVy
IGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0
JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xs
ZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vbk5lZ290
aWF0aW9uRG9uZShwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCkpOworICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCmluZGV4IDEwYWM0Y2VmMTFj
OTNjZmZkMTk0NjIyZjQ3NjM3Njk2NTJkM2FiMTAuLjU1NTM1ODdlYzM3NjFkZTNiMTA0ODcxNGFk
MWM1ZDg5MDU2MzE3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJl
YW1Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaApAQCAtNjAsMTkgKzYwLDQwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0cmVhbUdlbmVy
YXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3I6OkVycm9y
Q29kZSk7CiAgICAgdm9pZCBzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7
CiAKKyAgICAvKiBKUyAtPiBVQSAqLworICAgIHZvaWQgbmV3UGVlckNvbm5lY3Rpb24oTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBT
dHJpbmcmIGNvbmZpZ3VyYXRpb24pOworICAgIHZvaWQgc3RhcnROZWdvdGlhdGlvbihNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworICAgIHZv
aWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBp
bnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgbWVzc2FnZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25u
ZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBhZGRTdHJlYW0oTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmlu
ZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpOworCisgICAgLyog
VUEgLT4gSlMgKi8KKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbk1lc3Nh
Z2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgIHZvaWQgb25BZGRTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0
PiB0cmFja3MpOworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oaW50IGNvbnRyb2xsZXJQZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIG9uTmVnb3Rp
YXRpb25TdGFydGVkKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgdm9pZCBv
bk5lZ290aWF0aW9uRG9uZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworCiBwcml2
YXRlOgogICAgIGludCByZWdpc3RlclJlcXVlc3QoaW50IGxvY2FsUmVxdWVzdElkLCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciopOwogICAgIHZvaWQgcmVnaXN0ZXJTdHJlYW0oY29uc3QgU3Ry
aW5nJiBzdHJlYW1MYWJlbCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKIAorICAgIGJv
b2wgZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgaW50JiBwYWdlUGVlckNvbm5lY3Rpb25JZCk7
CisKICAgICBjbGFzcyBSZXF1ZXN0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlcXVlc3Q+
IFJlcXVlc3RNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqPiBTdHJlYW1NYXA7CiAKICAgICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHM7CiAg
ICAgU3RyZWFtTWFwIG1fc3RyZWFtczsKKyAgICBSZXF1ZXN0TWFwIG1fcGVlckNvbm5lY3Rpb25z
OwogCiAgICAgTWVkaWFTdHJlYW1DbGllbnQqIG1fY2xpZW50OwogICAgIGludCBtX25leHRHbG9i
YWxSZXF1ZXN0SWQ7CisgICAgaW50IG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCmluZGV4IDkyMDUzMzhkMDA3N2NiM2QxNmIxYmMx
YThkOWUwYzllNmNlNGUzMzkuLjk1ZjhjZDMyMGQ5NjA0NWY2ZWRjYmE1YmEzNDcwMzg1ZjQxODBk
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuY3BwCkBAIC0zNiw3ICszNiw5IEBACiAjaW5jbHVkZSAiTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxs
YmFjay5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2lnbmFsaW5nQ2FsbGJhY2su
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00OSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9CiAgICAgdmlydHVhbCBib29sIGlzR2VuZXJhdGVTdHJlYW1SZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZWNvcmRlZERhdGFSZXF1ZXN0
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTaWduYWxpbmdS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhYm9y
dCgpID0gMDsKIApAQCAtMzYwLDYgKzM2MywxMjYgQEAgdm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6c3RyZWFtRmFpbGVkKGNvbnN0IFN0cmluZyYgbGFiZWwpCiAgICAgZ2V0U3RyZWFt
RnJvbUxhYmVsKGxhYmVsKS0+c3RyZWFtRW5kZWQoKTsKIH0KIAorUGFzc1JlZlB0cjxQZWVyQ29u
bmVjdGlvbj4gTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNyZWF0ZVBlZXJDb25uZWN0aW9u
KGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFj
az4gc2lnbmFsaW5nQ2FsbGJhY2spCit7CisgICAgaW50IGNsaWVudElkID0gbV9jbGllbnRzLmdl
dE5leHRJZCgpOworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIGNsaWVudElkLCBjb25maWd1cmF0aW9uLCBzaWdu
YWxpbmdDYWxsYmFjayk7CisgICAgaWYgKHBlZXJDb25uZWN0aW9uKQorICAgICAgICBtX2NsaWVu
dHMuYWRkKGNsaWVudElkLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIHBlZXJD
b25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cjo6bmV3UGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFn
ZUNvbnRyb2xsZXIoKS0+bmV3UGVlckNvbm5lY3Rpb24odGhpcywgcGVlckNvbm5lY3Rpb25JZCwg
Y29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNs
b3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgaWYgKHBhZ2VD
b250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPmNsb3NlUGVlckNvbm5lY3Rp
b24odGhpcywgcGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6OnN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAg
aWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnN0YXJ0TmVn
b3RpYXRpb24odGhpcywgcGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkp
CisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKHRoaXMs
IHBlZXJDb25uZWN0aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyOjptZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9s
bGVyKCktPm1lc3NhZ2UodGhpcywgcGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rp
b25JZCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtUmVmKQoreworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RyZWFtUmVmOworICAgIEFTU0VSVChtX3N0cmVhbXMuY29u
dGFpbnMoc3RyZWFtLT5sYWJlbCgpKSk7CisKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAg
ICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+YWRkU3RyZWFtKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQs
IHN0cmVhbS0+bGFiZWwoKSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
OnJlbW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtUmVmKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gc3RyZWFt
UmVmOworICAgIEFTU0VSVChtX3N0cmVhbXMuY29udGFpbnMoc3RyZWFtLT5sYWJlbCgpKSk7CisK
KyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+cmVt
b3ZlU3RyZWFtKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIHN0cmVhbS0+bGFiZWwoKSk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTWVzc2FnZShpbnQgcGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2NsaWVudHMu
Y29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBl
ZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJD
b25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4o
bV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+
b25NZXNzYWdlKG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpvbkFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKQoreworICAgIEFT
U0VSVCghc3RyZWFtTGFiZWwuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRh
aW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29u
bmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSh0aGlzLCBzdHJlYW1MYWJlbCwgdHJhY2tz
KTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNf
Y2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOwor
ICAgIHBlZXJDb25uZWN0aW9uLT5zdHJlYW1BZGRlZChzdHJlYW0ucmVsZWFzZSgpKTsKK30KKwor
dm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0oaW50IHBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgQVNTRVJUKCFz
dHJlYW1MYWJlbC5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVl
ckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9u
SWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBw
ZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdl
dChwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN0cmVhbVJlbW92ZWQo
c3RyZWFtTGFiZWwpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvblNp
Z25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsK
KyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVj
dGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25J
ZCkpOworICAgIHBlZXJDb25uZWN0aW9uLT5vblNpZ25hbGluZ01lc3NhZ2UobWVzc2FnZSk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVk
KGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIEZJWE1FOiBBc3NlcnQgb3Igbm90Pwor
ICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFT
U0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkp
OworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19j
YXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisK
KyAgICBwZWVyQ29ubmVjdGlvbi0+b25OZWdvdGlhdGlvblN0YXJ0ZWQoKTsKK30KKwordm9pZCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25u
ZWN0aW9uSWQpCit7CisgICAgLy8gRklYTUU6IEFzc2VydCBvciBub3Q/CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50
cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQ
dHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5l
Y3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKworICAgIHBlZXJDb25u
ZWN0aW9uLT5vbk5lZ290aWF0aW9uRG9uZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCmluZGV4IGI1NWUwZDA1YWE3OWIzOTA3
OTE2MWMyNDU0MjA3YTBlOTg3YjcyNTAuLmU1MTQ3MjVhYzY1MDNmNDk4Y2UzMmU3MDhhOGI0ZTVi
MmE0ZTYxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyLmgKQEAgLTQ1LDggKzQ1LDEwIEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tMaXN0
OwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKIGNsYXNzIE5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjazsKIGNsYXNzIFBhZ2U7CitjbGFzcyBQZWVyQ29ubmVj
dGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKK2NsYXNzIFNpZ25hbGluZ0NhbGxiYWNrOwogCiBjbGFzcyBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIpOwpAQCAtNjksNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c01lZGlhU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzTG9jYWxNZWRpYVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0dlbmVyaWNDbGllbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQZWVyQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIGZyYW1lIGNvbnRyb2xsZXIgaXMg
YmVpbmcgZGlzY29ubmVjdGVkIHRvIHRoZSBNZWRpYVN0cmVhbUNsaWVudCBlbWJlZGRlci4KICAg
ICAgICAgLy8gQ2xpZW50cyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0byBzZW5kIGFueSByZXF1aXJl
ZCBzaHV0ZG93biBtZXNzYWdlcy4KQEAgLTEzNyw2ICsxNDAsMTMgQEAgcHVibGljOgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlcigpIHsgdW5yZWdpc3RlckNsaWVudCh0aGlzKTsgfQog
ICAgIH07CiAKKyAgICBjbGFzcyBQZWVyQ29ubmVjdGlvbkNsaWVudCA6IHB1YmxpYyBHZW5lcmlj
Q2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBlZXJDb25uZWN0aW9uQ2xpZW50KE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBpZCkgOiBHZW5lcmlj
Q2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpIHsgfQorICAgICAgICB2aXJ0dWFsIH5QZWVyQ29u
bmVjdGlvbkNsaWVudCgpIHsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQZWVyQ29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB9OworCiAgICAgTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIoRnJhbWUqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlcigpOwogCkBAIC0xNDgsMjkgKzE1OCwzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKTsKICAgICB2b2lkIHRyYW5zZmVyVG9OZXdQYWdlKFBhZ2UqKTsKIAotICAgIC8v
IFBhcnNlIHRoZSBvcHRpb25zIHN0cmluZyBwcm92aWRlZCB0byB0aGUgZ2VuZXJhdGVTdHJlYW0g
bWV0aG9kLgogICAgIHN0YXRpYyBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzIHBhcnNlR2VuZXJh
dGVTdHJlYW1PcHRpb25zKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gQ3JlYXRlIGEgbmV3IGdl
bmVyYXRlZCBzdHJlYW0gYXN5bmNocm9ub3VzbHkgd2l0aCB0aGUgcHJvdmlkZWQgb3B0aW9ucy4K
ICAgICB2b2lkIGdlbmVyYXRlU3RyZWFtKGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0
cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+LCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICAvLyBTdG9w
IGEgbG9jYWwgbWVkaWEgc3RyZWFtLgogICAgIHZvaWQgc3RvcEdlbmVyYXRlZFN0cmVhbShjb25z
dCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKLQotICAgIC8vIEVuYWJsZS9kaXNhYmxlIGFuIHRyYWNr
LgogICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoY29uc3QgU3RyaW5nJiB0cmFj
a0lkLCBib29sIGVuYWJsZWQpOwogCisgICAgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY3Jl
YXRlUGVlckNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRy
PFNpZ25hbGluZ0NhbGxiYWNrPik7CisgICAgdm9pZCBuZXdQZWVyQ29ubmVjdGlvbihpbnQgcGVl
ckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lkIHN0
YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworICAgIHZvaWQgcHJvY2Vzc1Np
Z25hbGluZ01lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgdm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworICAgIHZvaWQgYWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oaW50IHBlZXJDb25u
ZWN0aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIGNsb3NlUGVlckNv
bm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQpOworCiAgICAgLy8gLS0tIENhbGxzIGNvbWlu
ZyBiYWNrIGZyb20gdGhlIGNvbnRyb2xsZXIuIC0tLSAvLwogCi0gICAgLy8gUmVwb3J0IHRoZSBn
ZW5lcmF0aW9uIG9mIGEgbmV3IGxvY2FsIHN0cmVhbS4KICAgICB2b2lkIHN0cmVhbUdlbmVyYXRl
ZChpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tMaXN0PiB0cmFja3MpOwotCi0gICAgLy8gUmVwb3J0IGEgZmFpbHVyZSBp
biB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBzdHJlYW0uCiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0
aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNv
ZGUpOwotCi0gICAgLy8gUmVwb3J0IHRoZSBlbmQgb2YgYSBzdHJlYW0gZm9yIGV4dGVybmFsIHJl
YXNvbnMuCiAgICAgdm9pZCBzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7
CiAKKyAgICB2b2lkIG9uU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rp
b25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tMaXN0Pik7CisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShpbnQgcGVlckNv
bm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBvbk5lZ290
aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisgICAgdm9pZCBvbk5lZ290aWF0
aW9uRG9uZShpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisKIHByaXZhdGU6CiAgICAgY2xhc3MgUmVx
dWVzdDsKICAgICBjbGFzcyBHZW5lcmF0ZVN0cmVhbVJlcXVlc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102753</attachid>
            <date>2011-08-03 01:51:03 -0700</date>
            <delta_ts>2011-08-03 11:23:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110803105101.patch</filename>
            <type>text/plain</type>
            <size>100385</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyNjUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2NGE1YTQyMGVlY2Q5YzU2MWFiYWU2
MjNmOGM5YTg2NWE1MjU3Yzk4Li40NWYyMDhkYzYyOGZiZGY4ZDNiMjVhNjZjNTI0ZWIxODI2ZjRl
ZDkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1l
bnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dFRlc3RzIHdpbGwgYmUgcHJvdmlk
ZWQgYnkgYSBmb2xsb3ctdXAgQ0wsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgtMDMgIFRha2Fz
aGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYlNvY2tl
dDogQ291bGQgbm90IGhhbmRsZSB6ZXJvIGxlbmd0aCB0ZXh0IGZyYW1lLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRh
bmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKaW5kZXggNDE2OTc0Y2Y3ZDlhZmRi
MDA3NzhlOTRkMzVlNzEzMjhiOTVmODUyYy4uNTU2MzcxM2JiZTUxN2RlN2VhMjk4MzRmNGMyMGJl
Mjg5OTc0NTU1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0
ZWQudHh0CkBAIC0yOTMsNiArMjkzLDggQEAgUEFTUyBpbm5lci5PdmVyZmxvd0V2ZW50LmlzSW5u
ZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5PdmVyZmxvd0V2ZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIg
aXMgdHJ1ZQogUEFTUyBpbm5lci5QYWdlVHJhbnNpdGlvbkV2ZW50LmlzSW5uZXIgaXMgdHJ1ZQog
UEFTUyBpbm5lci5QYWdlVHJhbnNpdGlvbkV2ZW50LmNvbnN0cnVjdG9yLmlzSW5uZXIgaXMgdHJ1
ZQorUEFTUyBpbm5lci5QZWVyQ29ubmVjdGlvbi5pc0lubmVyIGlzIHRydWUKK1BBU1MgaW5uZXIu
UGVlckNvbm5lY3Rpb24uY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLlBs
dWdpbi5pc0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuUGx1Z2luLmNvbnN0cnVjdG9yLmlzSW5u
ZXIgaXMgdHJ1ZQogUEFTUyBpbm5lci5QbHVnaW5BcnJheS5pc0lubmVyIGlzIHRydWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNTNiZWRiNGI5NDY4OTc0ZDU1MDUzMmZlZjlkNzFhMTQzOWViMzgy
Ni4uYTQxN2FmOWZjMmY0ZjFlYzRkYTJjOGM5ZjlmZWYzMmI4ZTJhOTg5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTIwMTEsNiArMjAxMSw3IEBAIElGIChFTkFCTEVfTUVESUFfU1RSRUFNKQog
ICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICAgICAgZG9tL01lZGlhU3RyZWFt
VHJhY2tMaXN0LmNwcAogICAgICAgICBkb20vU3RyZWFtRXZlbnQuY3BwCisgICAgICAgIHAycC9Q
ZWVyQ29ubmVjdGlvbi5jcHAKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3Bw
CiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwCiAgICAgKQpAQCAt
MjAyMiw2ICsyMDIzLDggQEAgSUYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCiAgICAgICAgIGRvbS9N
ZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRs
CiAgICAgICAgIGRvbS9TdHJlYW1FdmVudC5pZGwKKyAgICAgICAgcDJwL1BlZXJDb25uZWN0aW9u
LmlkbAorICAgICAgICBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsCiAgICAgICAgIHBhZ2UvTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsCiAgICAgKQogRU5ESUYgKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZDcyNzkxODczNDA3MDcxODk3MmJiNGQxMDU1ZjZmM2Y1MDgwNjMxLi41Y2NjNzVhM2I3ZmZlMjNj
NTkyMTgwODY4YmY4N2RmNWJmYjdiYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisy
MDExLTA4LTAzICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAg
ICAgIE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50IFBlZXJDb25uZWN0aW9uIGFuZCBTaWduYWxp
bmdDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjUxMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBMYXlvdXRUZXN0cyB3aWxsIGJlIHByb3ZpZGVkIGJ5IGEgZm9sbG93LXVwIENMLCBzZWUgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjU4Nz4uCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb2RlR2VuZXJhdG9ycy5wcmk6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6Cisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXA6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnBlZXJDb25uZWN0aW9uRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1BlZXJDb25u
ZWN0aW9uQ3VzdG9tLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0
cmVhbUNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6SlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjb252ZXJ0
RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VjhQZWVy
Q29ubmVjdGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogZG9tL0Rpc3BhdGNo
VGFzay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNoVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZURpc3BhdGNoVGFzazo6cGVyZm9ybVRhc2sp
OgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpTaW1wbGVEaXNwYXRjaFRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGF0Y2hUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwYXRjaFRhc2s6OkRpc3BhdGNoVGFzayk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRU
YXJnZXQ6OnRvUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgor
ICAgICAgICAqIHAycC9QZWVyQ29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UGVlckNvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVj
dGlvbjo6UGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0
aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uU3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25OZWdvdGlhdGlvbkRv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnN0cmVhbUFkZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzdHJlYW1SZW1vdmVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGVlckNvbm5lY3Rpb246Om9uU2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OnBvc3RTaWduYWxpbmdFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdFN0cmVhbUFkZGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OnBvc3RTdHJlYW1SZW1vdmVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246OnBvc3RTaW1wbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29u
bmVjdGlvbjo6cG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzayk6CisgICAgICAg
ICogcDJwL1BlZXJDb25uZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGVlckNv
bm5lY3Rpb246OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkZXJl
ZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oLgorICAgICAgICAoV2ViQ29yZTo6U2lnbmFs
aW5nQ2FsbGJhY2s6On5TaWduYWxpbmdDYWxsYmFjayk6CisgICAgICAgICogcDJwL1NpZ25hbGlu
Z0NhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAg
ICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL01lZGlhU3Ry
ZWFtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblNpZ25hbGluZ01lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9u
SWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpwcm9jZXNzU2ln
bmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRTdHJl
YW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbkFkZFN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uUmVtb3ZlU3Ry
ZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bmV3UGVlckNv
bm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpjbG9z
ZVBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxl
cjo6c3RhcnROZWdvdGlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRy
b2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUpOgorICAgICAgICAqIHBhZ2UvTWVkaWFT
dHJlYW1Db250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
UmVxdWVzdDo6aXNTaWduYWxpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bmV3UGVlckNvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNsb3NlUGVlckNvbm5l
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0
YXJ0TmVnb3RpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbkFkZFN0cmVhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25O
ZWdvdGlhdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKToKKyAgICAgICAgKiBwYWdlL01lZGlhU3RyZWFt
RnJhbWVDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlcjo6Q2xpZW50QmFzZTo6aXNQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6UGVlckNvbm5lY3Rpb25DbGllbnQ6OlBlZXJD
b25uZWN0aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6flBlZXJDb25uZWN0aW9uQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlv
bkNsaWVudDo6aXNQZWVyQ29ubmVjdGlvbik6CisKIDIwMTEtMDgtMDMgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3Zl
IE5vZGUgcGFyYW1ldGVyIGZyb20gdGhlIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkgYi9Tb3VyY2UvV2ViQ29y
ZS9Db2RlR2VuZXJhdG9ycy5wcmkKaW5kZXggZjI5ZjRmNTllODg5YWE5MDVlOGViZjlmYTI1MDU5
NjY3NThiYjE5Mi4uMjQ5NmYxMmQ2Y2Q0ZjY2NmY4NzNiYjQ2NGVjMDVhMDVmYTIwZGU3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQpAQCAtMzI3LDYgKzMyNyw4IEBAIElETF9CSU5ESU5H
UyArPSBcCiAgICAgbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsIFwKICAg
ICBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwgXAogICAgIG5vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmlkbCBcCisgICAgcDJwL1BlZXJDb25uZWN0aW9uLmlkbCBcCisgICAg
cDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBcCiAgICAgcGFnZS9CYXJJbmZvLmlkbCBcCiAgICAg
cGFnZS9Db25zb2xlLmlkbCBcCiAgICAgcGFnZS9Db29yZGluYXRlcy5pZGwgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCmluZGV4IDMxYTNlODA5ZDlkNDI5MjYzZDEwOTFiYmZiNDM1MDJlMmZi
MzZhMTIuLjVkZjMzMGUwZjQ0MWZlYzViOWIzMDI4MDcxMmMzMDI0NzlhZTk1ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5jcHAKQEAgLTI1OCw2ICsyNTgsNyBAQAogI2luY2x1ZGUgIkpTT3Bl
cmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNPdmVyZmxvd0V2ZW50
LmNwcCIKICNpbmNsdWRlICJKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIgorI2luY2x1ZGUgIkpT
UGVlckNvbm5lY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTUGVyZm9ybWFuY2UuY3BwIgogI2luY2x1
ZGUgIkpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCIKICNpbmNsdWRlICJKU1BlcmZvcm1hbmNl
VGltaW5nLmNwcCIKQEAgLTI3Niw2ICsyNzcsNyBAQAogI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmls
ZU5vZGUuY3BwIgogI2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyLmNwcCIKICNpbmNsdWRlICJKU1No
YXJlZFdvcmtlckNvbnRleHQuY3BwIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suY3Bw
IgogI2luY2x1ZGUgIkpTU1FMRXJyb3IuY3BwIgogI2luY2x1ZGUgIkpTU1FMRXhjZXB0aW9uLmNw
cCIKICNpbmNsdWRlICJKU1NRTFJlc3VsdFNldC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2MWViN2Y1OWVjMDM5M2NkYzExNTkxMjJlOTRhMWZhN2QxNzlmMDk2Li5kNDQ2
NjJiMjM0ZWQyOTc4N2UwYTdjNjc5NjA5OWE5ZmI0ZmFmNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTM5LDYgKzM5LDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKS9p
bnNwZWN0b3IgXAogICAgICQoV2ViQ29yZSkvbG9hZGVyL2FwcGNhY2hlIFwKICAgICAkKFdlYkNv
cmUpL25vdGlmaWNhdGlvbnMgXAorICAgICQoV2ViQ29yZSkvcDJwIFwKICAgICAkKFdlYkNvcmUp
L3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAgICAgJChXZWJDb3JlKS9zdG9yYWdl
IFwKQEAgLTMzMiw2ICszMzMsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBPcGVyYXRpb25Ob3RB
bGxvd2VkRXhjZXB0aW9uIFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQYWdlVHJhbnNpdGlv
bkV2ZW50IFwKKyAgICBQZWVyQ29ubmVjdGlvbiBcCiAgICAgUGVyZm9ybWFuY2UgXAogICAgIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbiBcCiAgICAgUGVyZm9ybWFuY2VUaW1pbmcgXApAQCAtMzQ5LDYg
KzM1MSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFNoYXJlZFdvcmtlckNvbnRleHQgXAogICAg
IFNjcmlwdFByb2ZpbGUgXAogICAgIFNjcmlwdFByb2ZpbGVOb2RlIFwKKyAgICBTaWduYWxpbmdD
YWxsYmFjayBcCiAgICAgU3BlZWNoSW5wdXRFdmVudCBcCiAgICAgU3BlZWNoSW5wdXRSZXN1bHQg
XAogICAgIFNwZWVjaElucHV0UmVzdWx0TGlzdCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNj
NzU1M2FmYzQ0OGJjYTIwNzBhMWNiMjYwYmVkYjRkMjY0Y2RiODcuLmI3MWFmMDAwZmYyYzNmZmNh
YmFjZTVlYzYxMDg2YjYyNmRjNzAwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zOCw2ICsz
OCw3IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMgXAorCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJDb3JlL3AycCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZSBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24gXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtIFwKQEAgLTczOSw2ICs3NDAsNyBAQCBJRExfUEFUSCA6
PSBcCiAgICAgJChXZWJDb3JlKS9pbnNwZWN0b3IgXAogICAgICQoV2ViQ29yZSkvbG9hZGVyL2Fw
cGNhY2hlIFwKICAgICAkKFdlYkNvcmUpL25vdGlmaWNhdGlvbnMgXAorICAgICQoV2ViQ29yZSkv
cDJwIFwKICAgICAkKFdlYkNvcmUpL3BhZ2UgXAogICAgICQoV2ViQ29yZSkvcGx1Z2lucyBcCiAg
ICAgJChXZWJDb3JlKS9zdG9yYWdlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGIzODhhMzY5OWRiNjZhNmNmNGRkZjk5MGE5YjMzYmQ2NTQ0YzZmZTIuLmE0NzY2MjdhYmJlNTZk
ZmM5M2U3MWY1NmJkNGQ3Y2MwMDc2ODU3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNDExLDYgKzQxMSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUGFnZVRyYW5zaXRpb25FdmVudC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVl
ckNvbm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rp
b24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKQEAgLTQ0Nyw2ICs0NDksOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFy
ZWRXb3JrZXJDb250ZXh0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRXb3Jr
ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTU2hhcmVkV29ya2VyLmggXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaWduYWxpbmdDYWxsYmFjay5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNTaWduYWxpbmdDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTU3BlZWNoSW5wdXRFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNTcGVlY2hJbnB1dEV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJ
bnB1dFJlc3VsdC5jcHAgXApAQCAtNzgwLDYgKzc4NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmggXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3Bw
IFwKQEAgLTExMjAsNiArMTEyNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
T3JpZW50YXRpb24uaCBcCisJU291cmNlL1dlYkNvcmUvZG9tL0Rpc3BhdGNoVGFzay5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmggXApAQCAtMjE4OCw2ICsyMTk0LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUHJlc2VudGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3AycC9QZWVy
Q29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGFiNGI5
MTNmZjg4NTFiMGE2OWFhM2I3NTczZDFmM2RlMWQwMjY3NDkuLmQ0M2NmODMxMjBhZTZjNzI3ZDg0
ZDM3M2MyZDU0Nzg1N2RhZjczMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTEwMiw2ICsxMDIsNyBA
QCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU05vZGVJdGVy
YXRvckN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgYmluZGluZ3MvanMvSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRG
dW5jdGlvbnMuY3BwCiAgICAgYmluZGluZ3MvanMvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggODQzYjQ0MmRkZTE4N2RjNmRk
NTk2ZjVkYmFmZGVjZjM5OGRkMWFhNC4uNGVlODRkMTYyZGNkMzMwY2VlMWJlMjhjY2M1MGNjNDI2
MDAxOGZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTE2OCw2
ICsxNjgsNyBAQAogICAgICAgJy4uL2xvYWRlci9pY29uJywKICAgICAgICcuLi9tYXRobWwnLAog
ICAgICAgJy4uL25vdGlmaWNhdGlvbnMnLAorICAgICAgJy4uL3AycCcsCiAgICAgICAnLi4vcGFn
ZScsCiAgICAgICAnLi4vcGFnZS9hbmltYXRpb24nLAogICAgICAgJy4uL3BhZ2UvY2hyb21pdW0n
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGIxNDBhZDg4ODBhYmNmOWI1ODQ5YTZkYTc0NWNkZmQ0MGY0
NGIyM2IuLmYxZDk2YTVmYTNkN2QxMTEyZmZlY2I4YWVmNGE5ZjZiOGM5ZTQwZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTk3NSw2ICs5NzUsNyBAQAogICAgICAgICAgICAgJ2RvbS9ET01UaW1lU3Rh
bXAuaCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAg
ICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oJywKKyAgICAgICAgICAgICdkb20vRGlz
cGF0Y2hUYXNrLmgnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudC5oJywKICAgICAgICAgICAg
ICdkb20vRG9jdW1lbnRGcmFnbWVudC5oJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJr
ZXIuaCcsCkBAIC0xMzU3LDYgKzEzNTgsOCBAQAogICAgICAgICAgICAgJ2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbCcsCiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaWRsJywKICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5pZGwnLAorICAgICAgICAgICAgJ3AycC9QZWVyQ29ubmVjdGlvbi5pZGwnLAorICAg
ICAgICAgICAgJ3AycC9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ3BhZ2Uv
QWJzdHJhY3RWaWV3LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmlkbCcsCiAgICAg
ICAgICAgICAncGFnZS9Db25zb2xlLmlkbCcsCkBAIC0xODgwLDYgKzE4ODMsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKQEAgLTIxODIsNiArMjE4Niw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRlRXZl
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1
bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCcsCkBAIC0yODQ0LDYgKzI4NDksOSBAQAogICAgICAgICAg
ICAgJ25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCcsCiAgICAgICAgICAgICAn
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCcsCiAgICAgICAgICAgICAnbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25Db250ZW50cy5oJywKKyAgICAgICAgICAgICdwMnAvUGVlckNv
bm5lY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdwMnAvUGVlckNvbm5lY3Rpb24uaCcsCisgICAg
ICAgICAgICAncDJwL1NpZ25hbGluZ0NhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQmFy
SW5mby5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvQmFySW5mby5oJywKICAgICAgICAgICAgICdw
YWdlL0NhbGxiYWNrVGFzay5oJywKQEAgLTUyNTUsNiArNTI2Myw3IEBACiAgICAgICAgICAgICAn
ZG9tL0RldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oJywKICAgICAgICAgICAgICdkb20vRGV2
aWNlT3JpZW50YXRpb25FdmVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9EZXZpY2VPcmllbnRh
dGlvbkV2ZW50LmgnLAorICAgICAgICAgICAgJ2RvbS9EaXNwYXRjaFRhc2suaCcsCiAgICAgICAg
ICAgICAnZG9tL0RvY3VtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCmluZGV4IDdhM2JlZjE2ZjU3NmQ2M2JiNDI0NTg3MDViZjM2MWI4NmM0Yzdh
MWYuLjcyZTdiNTE5YWVlZThhZGIzNjIyYWNhNTA0ODNhOTU3MGRjYmU1MWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC0zMjQzLDYgKzMyNDMsOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFf
U1RSRUFNPTEpIHsKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suaCBcCiAgICAgICAgIGRv
bS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwKICAgICAgICAgZG9tL1N0cmVhbUV2ZW50LmggXAor
ICAgICAgICBwMnAvUGVlckNvbm5lY3Rpb24uaCBcCisgICAgICAgIHAycC9TaWduYWxpbmdDYWxs
YmFjay5oIFwKICAgICAgICAgcGFnZS9DYWxsYmFja1Rhc2suaCBcCiAgICAgICAgIHBhZ2UvTWVk
aWFTdHJlYW1DbGllbnQuaCBcCiAgICAgICAgIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgg
XApAQCAtMzI1OCwxMiArMzI2MCwxOCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTUVESUFf
U1RSRUFNPTEpIHsKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suY3BwIFwKICAgICAgICAg
ZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcCBcCiAgICAgICAgIGRvbS9TdHJlYW1FdmVudC5j
cHAgXAorICAgICAgICBwMnAvUGVlckNvbm5lY3Rpb24uY3BwIFwKICAgICAgICAgcGFnZS9NZWRp
YVN0cmVhbUNvbnRyb2xsZXIuY3BwIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlci5jcHAKIAogICAgIHY4IHsKICAgICAgICAgU09VUkNFUyArPSBcCi0gICAgICAgICAg
ICBiaW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwCisgICAgICAgICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhOYXZpZ2F0b3JDdXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAorICAgIH0gZWxzZSB7
CisgICAgICAgIFNPVVJDRVMgKz0gXAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNOYXZpZ2F0
b3JDdXN0b20uY3BwIFwKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDkxZjJmYTUyZTMxODFlN2YxNGExZmMzOWVhZTMyNzI0MTBhM2Vm
ZTQuLjNmMDg2ZjU0NWU2Yzg2YzY2ZDY4MTdlNzkzMjc5NmNmYzJiZjZhNjYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0xMjM5MCw2ICsxMjM5
MCw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTUGVlckNvbm5lY3Rpb24uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVlckNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1BlcmZvcm1hbmNlLmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC0xMzI4Niw2ICsxMzM0Miw2MiBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXNcSlNTaWduYWxpbmdDYWxs
YmFjay5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJ
CQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291
cmNlc1xKU1NpZ25hbGluZ0NhbGxiYWNrLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNTUUxFcnJvci5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgpAQCAtMjUxNjcsNiArMjUyNzksMjIgQEAKIAkJCTwvRmlsdGVyPgogCQk8L0Zp
bHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0icDJwIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHAycFxQZWVyQ29ubmVjdGlvbi5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHAycFxQZWVyQ29ubmVjdGlvbi5oIgorCQkJ
CT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cU2lnbmFs
aW5nQ2FsbGJhY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVy
CiAJCQlOYW1lPSJwYWdlIgogCQkJPgogCQkJPEZpbGUKQEAgLTQ0NDcwLDYgKzQ0NTk4LDEwIEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxE
aXNwYXRjaFRhc2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXERvY3VtZW50LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9u
CkBAIC02MzE0NSw2ICs2MzI3Nyw1OCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJ
PFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJS
ZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxiaW5kaW5nc1xqc1xKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwIgogCQkJCQk+CiAJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4MjE5NTk0NWExYjhmZjExYTkxMTEyMzZiZGMx
ZmUzZmMxZTBmMmIuLmNmNjg3NzU0OGRlZDU5NGYxMzRiMDRkY2U0OGY1NGY3NjAxYjg0MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEwOTksNiArMTA5OSw3IEBACiAJCTQ2RjlENURGMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9n
cmVzc0N1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjlENURDMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgKi87
IH07CiAJCTQ5MDcwN0U2MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTA3MDdFNDEy
MTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovOyB9OwogCQk0OTA3MDdF
NzEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAv
KiBBTkdMRVdlYktpdEJyaWRnZS5oICovOyB9OworCQk0OTBDNDdDRTEzRTgyRDE4MDBGN0FCODIg
LyogRGlzcGF0Y2hUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTBDNDdDRDEzRTgyRDE4MDBGN0FCODIgLyogRGlzcGF0Y2hUYXNrLmggKi87IH07
CiAJCTQ5Mjg2Mzk5MTI1M0I4RkMwMEY3OTJENiAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI4NjM5ODEyNTNCOEZD
MDBGNzkyRDYgLyogUmVzb3VyY2VMb2FkSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAq
LzsgfTsKIAkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkzRTVF
MDgxMkQ2NDIwNTAwMDIwMDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTQyLDEwICsxMTQzLDE4
IEBACiAJCTQ5OUIzRUQ2MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDQxMjhD
RDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi87IH07CiAJCTQ5OUIzRUQ3MTI4
Q0QzMTQwMEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OUIzRUQ1MTI4Q0QzMTQwMEU3MjZDMiAvKiBHcmFw
aGljc0xheWVyQ0EuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0OTlCM0VERDEyOERCNTAyMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFREMx
MjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0OUE1QTRGRTEzRTJGMDFFMDBDRkRB
RTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDlBNUE0RjgxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9u
LmNwcCAqLzsgfTsKKwkJNDlBNUE0RkYxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRG
OTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJNDlBNUE1MDEx
M0UyRjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRGQjEzRTJGMDFFMDBDRkRBRTAgLyog
U2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDlBODVCNkIxMzhENTczQTAwRUNCN0IzIC8q
IFN0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QTg1QjY4MTM4RDU3MzkwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5jcHAgKi87IH07
CiAJCTQ5QTg1QjZDMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBODVCNjkxMzhENTczQTAwRUNC
N0IzIC8qIFN0cmVhbUV2ZW50LmggKi87IH07CiAJCTQ5QTg1Qjc3MTM4RDU4RUUwMEVDQjdCMyAv
KiBKU1N0cmVhbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5QTg1Qjc1MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmNwcCAq
LzsgfTsKIAkJNDlBODVCNzgxMzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTg1Qjc2MTM4RDU4
RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi87IH07CisJCTQ5QkUzMEQyMTNEOTc0N0Iw
MDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkUzMEQxMTNEOTc0N0IwMDM4MDhBOSAvKiBK
U1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJNDlCRTMwRjMxM0Q5NzY0NjAwMzgw
OEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5l
Y3Rpb24uY3BwICovOyB9OworCQk0OUJFMzBGNDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlCRTMwRjAxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJ
NDlCRTMwRjUxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRjExM0Q5NzY0
NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwICovOyB9OworCQk0OUJFMzBGNjEz
RDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRjIxM0Q5NzY0NjAwMzgwOEE5IC8q
IEpTU2lnbmFsaW5nQ2FsbGJhY2suaCAqLzsgfTsKIAkJNDlDN0I5OTMxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDlDN0I5ODAxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3Bw
ICovOyB9OwogCQk0OUM3Qjk5NDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5ODExMDQy
RDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuaCAqLzsgfTsKIAkJNDlDN0I5OTUxMDQyRDJE
MzAwMDlENDQ3IC8qIEpTSW50OEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJh
eS5jcHAgKi87IH07CkBAIC03NjUwLDYgKzc2NTksNyBAQAogCQk0NkY5RDVEQzBCMEQ2MDE3MDAy
OEVFMzYgLyogcHJvZ3Jlc3NDdXJzb3IucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gcHJvZ3Jlc3NDdXJzb3IucG5n
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEg
LyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDkwQzQ3Q0QxM0U4MkQxODAwRjdBQjgyIC8qIERpc3BhdGNo
VGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwYXRjaFRhc2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkyODYzOTgxMjUzQjhGQzAwRjc5MkQ2IC8q
IFJlc291cmNlTG9hZEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VMb2FkSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEz
NDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtQ0FMYXllckNs
aWVudC5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03Njk5LDExICs3NzA5LDIxIEBACiAJCTQ5OUIzRUQ0MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gR3JhcGhpY3NMYXllckNBLmNwcDsgcGF0aCA9IGNhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OUIzRUQ1MTI4Q0QzMTQwMEU3
MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gR3JhcGhpY3NMYXllckNBLmg7IHBhdGggPSBjYS9HcmFwaGljc0xheWVyQ0EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5QjNFREMxMjhEQjUwMTAwRTcyNkMyIC8qIFBsYXRm
b3JtQ0FBbmltYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZv
cm1DQUFuaW1hdGlvbi5oOyBwYXRoID0gY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGODEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNv
bm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVlckNv
bm5lY3Rpb24uY3BwOyBwYXRoID0gcDJwL1BlZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDlBNUE0RjkxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmg7
IHBhdGggPSBwMnAvUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDlBNUE0RkExM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBQZWVyQ29ubmVjdGlvbi5pZGw7IHBhdGggPSBwMnAvUGVlckNvbm5l
Y3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGQjEzRTJGMDFF
MDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU2lnbmFsaW5nQ2FsbGJhY2suaDsgcGF0aCA9IHAycC9TaWduYWxpbmdDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGQzEzRTJGMDFFMDBDRkRB
RTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNpZ25h
bGluZ0NhbGxiYWNrLmlkbDsgcGF0aCA9IHAycC9TaWduYWxpbmdDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1QjY4MTM4RDU3MzkwMEVDQjdCMyAvKiBTdHJl
YW1FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJlYW1F
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QTg1QjY5MTM4RDU3M0Ew
MEVDQjdCMyAvKiBTdHJlYW1FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdHJlYW1FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUE4NUI2QTEz
OEQ1NzNBMDBFQ0I3QjMgLyogU3RyZWFtRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFN0cmVhbUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNzUx
MzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJlYW1FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ5QTg1Qjc2MTM4RDU4RUUwMEVDQjdCMyAvKiBKU1N0cmVhbUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyZWFtRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRDExM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ5QkUzMEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQ
ZWVyQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1BlZXJD
b25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEYxMTNEOTc2
NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OUJFMzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdD
YWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NpZ25hbGluZ0Nh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgwMTA0MkQyRDMw
MDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTV2ViR0xCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ5QzdCOTgyMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU0ludDhBcnJheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludDhBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjkwMiw2ICsxMjkyMiw3IEBACiAJCQkJQkNC
MTZCRkIwOTc5QzM4NzAwNDY3NzQxIC8qIGxvYWRlciAqLywKIAkJCQlGQUJFNzJFQzEwNTlDMUVC
MDBEOTk5REQgLyogbWF0aG1sICovLAogCQkJCTMzM0Y3MDNEMEZCNDlDMTYwMDhFMTJBNiAvKiBu
b3RpZmljYXRpb25zICovLAorCQkJCTQ5QTVBNEY2MTNFMkVGRTYwMENGREFFMCAvKiBwMnAgKi8s
CiAJCQkJNjVCRjAyMTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEw
OTc4MzIwOTAwNjFBMTIzIC8qIHBsYXRmb3JtICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1
M0JDNiAvKiBwbHVnaW5zICovLApAQCAtMTQwMjksNiArMTQwNTAsMTggQEAKIAkJCW5hbWUgPSBj
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTQ5QTVBNEY2MTNFMkVGRTYw
MENGREFFMCAvKiBwMnAgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTQ5QTVBNEY4MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgKi8s
CisJCQkJNDlBNUE0RjkxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmggKi8sCisJ
CQkJNDlBNUE0RkExM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmlkbCAqLywKKwkJ
CQk0OUE1QTRGQjEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCAqLywKKwkJ
CQk0OUE1QTRGQzEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaWRsICovLAor
CQkJKTsKKwkJCW5hbWUgPSBwMnA7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk0OUU5MTFCMjBFRjg2RDI3MDA5RDBDQUYgLyogdHJhbnNmb3JtcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzI4MSw2ICsxNzMxNCw4IEBACiAJCQkJ
QkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAqLywKIAkJCQk2NURGMzFF
OTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUEwOUQx
Q0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uaCAqLywKKwkJCQk0OUJFMzBFRjEzRDk3NjQ2MDAz
ODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNDlCRTMwRjAxM0Q5NzY0NjAw
MzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb24uaCAqLywKIAkJCQk1OTgzNjVFMzEzNTVGNjA0MDAx
QjE4NUQgLyogSlNQb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKIAkJCQk1OTgzNjVEQzEzNTVGNTND
MDAxQjE4NUQgLyogSlNQb3NpdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJRkU4MERBNkQwRTlDNDcy
RjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8sCkBAIC0xNzI5MSw2ICsxNzMyNiw4
IEBACiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVu
dC5jcHAgKi8sCiAJCQkJRTRCNDIzODYwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVu
dC5oICovLAorCQkJCTQ5QkUzMEYxMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxi
YWNrLmNwcCAqLywKKwkJCQk0OUJFMzBGMjEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdD
YWxsYmFjay5oICovLAogCQkJCTc1NDE1RDRGMTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElu
cHV0RXZlbnQuY3BwICovLAogCQkJCTc1NDE1RDUwMTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVj
aElucHV0RXZlbnQuaCAqLywKIAkJCQk3NTQxNUQ1MTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVl
Y2hJbnB1dFJlc3VsdC5jcHAgKi8sCkBAIC0xODY0Myw2ICsxODY4MCw3IEBACiAJCQkJQkNCNzcz
NjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3
NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJ
CQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCisJ
CQkJNDlCRTMwRDExM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
ICovLAogCQkJCUUxQUQxMkQ1MTI5NUQwQkQwMEFDQTk4OSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcyRkNGMDAwQzRDRDU1IC8qIEpTU2Ny
aXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICovLAogCQkJCTUxRENFODAxMENBQzlGMUMwMDQ4ODM1
OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwICovLApAQCAtMTk3MTgsNiArMTk3
NTYsNyBAQAogCQkJCTU5QTg1RUExMTE5RDY4RDkwMERFRjFFRiAvKiBEZXZpY2VPcmllbnRhdGlv
bkV2ZW50LmNwcCAqLywKIAkJCQk1OUE4NUVBMzExOUQ2OEVDMDBERUYxRUYgLyogRGV2aWNlT3Jp
ZW50YXRpb25FdmVudC5oICovLAogCQkJCTU5QTg1RUFBMTE5RDdCNkUwMERFRjFFRiAvKiBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50LmlkbCAqLywKKwkJCQk0OTBDNDdDRDEzRTgyRDE4MDBGN0FCODIg
LyogRGlzcGF0Y2hUYXNrLmggKi8sCiAJCQkJQTgxODVGMzQwOTc2NTc2NTAwNTgyNkQ5IC8qIERv
Y3VtZW50LmNwcCAqLywKIAkJCQlBODE4NUYzODA5NzY1NzY1MDA1ODI2RDkgLyogRG9jdW1lbnQu
aCAqLywKIAkJCQk2NTQ4RTI0ODA5RTFFMDREMDBBRjgwMjAgLyogRG9jdW1lbnQuaWRsICovLApA
QCAtMjE5NjgsNiArMjIwMDcsNyBAQAogCQkJCUE4MjZFOEFFMEExQThGMjMwMENEMUJCNiAvKiBK
U09wdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTBENTc0MTBBNUM3ODY3
MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEJC
MTEwNDQ5RkZBMDBFQUVCNTIgLyogSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OUJFMzBGNDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVyZm9ybWFu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYz
NzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMjE5
ODgsNiArMjIwMjgsNyBAQAogCQkJCTlGQTM3RUZEMTE3MkZEQTYwMEM0Q0Q1NSAvKiBKU1Njcmlw
dFByb2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUQwN0E3RjBGRjkzNUNBMDA5NUVE
Q0UgLyogSlNTaGFyZWRXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDE2OTA2MTAyMzhC
NjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTQ5QkUzMEY2MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3NTQxNUQ1NjEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dEV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxNUQ1ODEyOUFCMkQyMDAzQUQ2NjkgLyogSlNT
cGVlY2hJbnB1dFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzU0MTVENUExMjlBQjJEMjAw
M0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1bHRMaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTIy
NDAxLDYgKzIyNDQyLDcgQEAKIAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyogUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5NzEwRDAwQkYyMjAwNzFCNzgyIC8qIFBhdHRl
cm5BdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2NTBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlBNUE0RkYxM0Uy
RjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTdD
Qzk2QjEyMDc2RDczMDAxRDQ1ODggLyogUGVuZGluZ1NjcmlwdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOEE4NDREMDUxMUQzQzE4RTAwMTQwNjVDIC8qIFBlcmZvcm1hbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4QUY0RTU1NjExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjk2LDYgKzIyNzM4LDcgQEAKIAkJCQk0MUQxNjhFODEw
MjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2VyQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFEMTY4RUExMDIyNkU4OTAwOUJDODI3IC8qIFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxRDE2OEVFMTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3Jr
ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QTVBNTAxMTNFMkYwMUUwMENGREFFMCAv
KiBTaWduYWxpbmdDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJDM0RBNjUwRDAwNkNE
NjAwRUY2RjI2IC8qIFNpbXBsZUZvbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTMyN0Q2
MDExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0
OUU5MTFDRDBFRjg2RDQ3MDA5RDBDQUYgLyogU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMzI3Miw2ICsyMzMxNSw3IEBACiAJCQkJNTA4Q0NBNEYxM0NGMTA2QjAw
MzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ3MEFENjU4
MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
QUI0MTgyMTNFMzU2RTgwMEQ4QUFGMyAvKiBSZWdpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5
MEM0N0NFMTNFODJEMTgwMEY3QUI4MiAvKiBEaXNwYXRjaFRhc2suaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjQ5NDYsNiArMjQ5OTAsOCBAQAogCQkJCUE4MjZFQzQ4MEExQjBDQkUwMENEMUJCNiAvKiBK
U09wdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMEQ1NzQwMEE1Qzc4
NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEy
ODRCQjIxMDQ0OUZGQTAwRUFFQjUyIC8qIEpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk0OUJFMzBGMzEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUJFMzBEMjEzRDk3NDdCMDAzODA4QTkgLyogSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTlBNTg3NDExRTg0
QzgxMDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTlB
NTg3MDExRTg0QzM2MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOEE5QTU4ODcxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VU
aW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNDk2OSw2ICsyNTAxNSw3IEBACiAJCQkJNDFE
MDdBN0UwRkY5MzVDQTAwOTVFRENFIC8qIEpTU2hhcmVkV29ya2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTQxRDE2OTA1MTAyMzhCNjYwMDlCQzgyNyAvKiBKU1NoYXJlZFdvcmtlckNvbnRleHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRDRDhEODIxMDZCNTI5MDAwQTQ2RDIzIC8qIEpTU2hh
cmVkV29ya2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QkUzMEY1MTNEOTc2NDYw
MDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc1
NDE1RDU1MTI5QUIyRDIwMDNBRDY2OSAvKiBKU1NwZWVjaElucHV0RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzU0MTVENTcxMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRSZXN1
bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU0MTVENTkxMjlBQjJEMjAwM0FENjY5IC8qIEpT
U3BlZWNoSW5wdXRSZXN1bHRMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjUzNzYsNiArMjU0
MjMsNyBAQAogCQkJCUE4RkE2RTVFMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE4MEEzOEZFMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjQwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlBNUE0RkUxM0UyRjAxRTAwQ0ZEQUUw
IC8qIFBlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBN0NDOTcwMTIwNzZG
OEEwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBODQ0
RDA0MTFEM0MxOEUwMDE0MDY1QyAvKiBQZXJmb3JtYW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4QUY0RTU1NTExREM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAppbmRleCAzNDMyZDc0NGYyYmZmODk1Y2M0MTEx
MmJkMzczNWUwMzBkYzZiZTdiLi40ZTg0MzY3ODAwNjVlZjA0ZmMzMzc1NDMwY2NjOWRlNGQyOWI0
MDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTQ4LDYgKzE0OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5h
YmxlZDsgfQogICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogICAgIHN0YXRpYyBi
b29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5h
YmxlZDsgfQorICAgIHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJu
IGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmlu
ZGV4IDU5YTkwYmZjZWJjNWVkODRiMmVkOGUyZDExZDY3MmU3ZjMzN2U0OGEuLjVlMTU4MTUyMTY3
ZDczMTZkYTUzOTQyMWMyNDIxMTE3MWU2OGY0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMTIzLDYgKzEyMyw3IEBACiAj
aW5jbHVkZSAiSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTTm9kZUxpc3RD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTT3B0aW9uQ29uc3RydWN0b3IuY3BwIgorI2luY2x1ZGUg
IkpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5jcHAiCiAjaW5jbHVkZSAiSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjcwYmIxNzJlMDExMGRmOWMxNjQ3OTA0YThlZGM0YTM3OTJhYzBhYTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9u
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiSlNQZWVyQ29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0
b20uaCIKKyNpbmNsdWRlICJKU1NpZ25hbGluZ0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1BlZXJDb25uZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1BlZXJDb25uZWN0aW9u
Q29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1BlZXJDb25uZWN0aW9u
Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBTdHJpbmcgY29uZmlndXJhdGlv
biA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTVmFsdWUoKSk7CisKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGlu
Z0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFj
az4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAg
ICBGcmFtZSogZnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPmltcGwoKS0+ZnJhbWUoKTsKKyAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJh
bWVDb250cm9sbGVyID0gZnJhbWUgPyBmcmFtZS0+bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIo
KSA6IDA7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uOworICAg
IGlmIChmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIHBlZXJDb25uZWN0aW9uID0gZnJhbWVDb250
cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxs
YmFjayk7CisKKyAgICBpZiAoIXBlZXJDb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2Jq
ZWN0KHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIHBlZXJDb25uZWN0
aW9uLmdldCgpKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKaW5kZXggMDM0ZDU0NzU5ZDZmZmRjOWNjZmU1ZjdjNzQ4YmQ0ZjlkMzA0MzhjNS4u
MDg2YTNhMjE5NjFkYzI4MDlhMjA3Y2ZiYWU3ZjUyZDA3ZTNkZjgxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSAiVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCiAjaW5jbHVkZSAiVjhOb2RlTGlzdC5oIgog
I2luY2x1ZGUgIlY4Tm90aWZpY2F0aW9uLmgiCisjaW5jbHVkZSAiVjhQZWVyQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJWOFNoYXJlZFdvcmtlci5oIgogI2lu
Y2x1ZGUgIlY4U2hhcmVkV29ya2VyQ29udGV4dC5oIgpAQCAtNDU0LDYgKzQ1NSw5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmpl
Y3QoRXZlbnRUYXJnZXQqIHRhCiAKICAgICBpZiAoTWVkaWFTdHJlYW0qIHN0cmVhbSA9IHRhcmdl
dC0+dG9NZWRpYVN0cmVhbSgpKQogICAgICAgICByZXR1cm4gdG9WOChzdHJlYW0pOworCisgICAg
aWYgKFBlZXJDb25uZWN0aW9uKiBwZWVyQ29ubmVjdGlvbiA9IHRhcmdldC0+dG9QZWVyQ29ubmVj
dGlvbigpKQorICAgICAgICByZXR1cm4gdG9WOChwZWVyQ29ubmVjdGlvbik7CiAjZW5kaWYKIAog
ICAgIEFTU0VSVCgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODFjZGEx
MTM3YTI0YTUwZTM5ZTk4N2VmMWFiNDk5NTI2Y2Q2ZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJWOFBlZXJDb25uZWN0aW9uLmgi
CisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisj
aW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4U2lnbmFsaW5nQ2FsbGJhY2suaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQZWVyQ29ubmVj
dGlvbjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIElOQ19TVEFUUygiRE9NLlBlZXJDb25uZWN0aW9uLkNvbnN0cnVjdG9yIik7CisKKyAgICBp
ZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJE
T00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBW
OFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgaW50IGFyZ0xlbmd0aCA9IGFyZ3MuTGVuZ3RoKCk7
CisgICAgaWYgKGFyZ0xlbmd0aCAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhl
IFBlZXJDb25uZWN0aW9uIGNvbnN0cnVjdG9yIHRha2VzIHR3byBhcmd1bWVudHMuIiwgVjhQcm94
eTo6VHlwZUVycm9yKTsKKworICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAg
IFN0cmluZyBjb25maWd1cmF0aW9uID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0tPlRvU3RyaW5n
KCkpOworICAgIGlmIChleGNlcHRpb25DYXRjaGVyLkhhc0NhdWdodCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGNlcHRpb25DYXRjaGVyLkV4Y2VwdGlvbigpKTsKKworICAgIGJvb2wg
c3VjY2VlZGVkID0gZmFsc2U7CisgICAgUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxp
bmdDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPFY4U2lnbmFsaW5nQ2FsbGJh
Y2s+KGFyZ3NbMV0sIHN1Y2NlZWRlZCk7CisgICAgaWYgKCFzdWNjZWVkZWQgfHwgIXNpZ25hbGlu
Z0NhbGxiYWNrKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigiVGhlIFBlZXJDb25uZWN0aW9u
IGNvbnN0cnVjdG9yIG11c3QgYmUgZ2l2ZW4gYSBTaWduYWxpbmdDYWxsYmFjayBjYWxsYmFjay4i
LCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0
cmlldmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CisgICAgTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IGZyYW1lID8gZnJhbWUtPm1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKCkgOiAwOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVj
dGlvbjsKKyAgICBpZiAoZnJhbWVDb250cm9sbGVyKQorICAgICAgICBwZWVyQ29ubmVjdGlvbiA9
IGZyYW1lQ29udHJvbGxlci0+Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbiwgc2ln
bmFsaW5nQ2FsbGJhY2spOworCisgICAgaWYgKCFwZWVyQ29ubmVjdGlvbikKKyAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihh
cmdzLkhvbGRlcigpLCAmaW5mbywgcGVlckNvbm5lY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiB0
b1Y4KHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGlzcGF0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGlzcGF0Y2hUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAwNDNmNTJkNDkyODdiMzU4ODI2MTU4
MzM0MjM1NDhkNDVlYTQ0NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
aXNwYXRjaFRhc2suaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERp
c3BhdGNoVGFza19oCisjZGVmaW5lIERpc3BhdGNoVGFza19oCisKKyNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPHR5
cGVuYW1lIENhbGxiYWNrQ2xhc3MsIHR5cGVuYW1lIFNpbXBsZURhdGFUeXBlPgorY2xhc3MgU2lt
cGxlRGlzcGF0Y2hUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewor
cHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAoQ2FsbGJhY2tDbGFzczo6KkNhbGxiYWNrKShjb25z
dCBTaW1wbGVEYXRhVHlwZSYpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8U2ltcGxlRGlzcGF0
Y2hUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxDYWxsYmFja0NsYXNzPiBvYmplY3QsIENhbGxiYWNr
IGNhbGxiYWNrLCBjb25zdCBTaW1wbGVEYXRhVHlwZSYgZGF0YSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgU2ltcGxlRGlzcGF0Y2hUYXNrKG9iamVjdCwgY2FsbGJhY2ssIGRh
dGEpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopCisgICAgeworICAgICAgICAobV9vYmplY3QuZ2V0KCktPiptX2NhbGxiYWNr
KShtX2RhdGEpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTaW1wbGVEaXNwYXRjaFRhc2soUGFz
c1JlZlB0cjxDYWxsYmFja0NsYXNzPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBT
aW1wbGVEYXRhVHlwZSYgZGF0YSkKKyAgICAgICAgOiBtX29iamVjdChvYmplY3QpCisgICAgICAg
ICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2RhdGEoZGF0YSkgeyB9CisKKyAg
ICBSZWZQdHI8Q2FsbGJhY2tDbGFzcz4gbV9vYmplY3Q7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFj
azsKKyAgICBTaW1wbGVEYXRhVHlwZSBtX2RhdGE7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2FsbGJhY2tDbGFzcywgdHlwZW5hbWUgU2ltcGxlRGF0YVR5cGUsIHR5cGVuYW1lIFJlZkNvdW50
ZWREYXRhVHlwZT4KK2NsYXNzIERpc3BhdGNoVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHZvaWQgKENhbGxiYWNrQ2xhc3M6
OipDYWxsYmFjaykoY29uc3QgU2ltcGxlRGF0YVR5cGUmLCBQYXNzUmVmUHRyPFJlZkNvdW50ZWRE
YXRhVHlwZT4pOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8RGlzcGF0Y2hUYXNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxDYWxsYmFja0NsYXNzPiBvYmplY3QsIENhbGxiYWNrIGNhbGxiYWNrLCBjb25z
dCBTaW1wbGVEYXRhVHlwZSYgYXJnMSwgUGFzc1JlZlB0cjxSZWZDb3VudGVkRGF0YVR5cGU+IGFy
ZzIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERpc3BhdGNoVGFzayhvYmpl
Y3QsIGNhbGxiYWNrLCBhcmcxLCBhcmcyKSk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorICAgIHsKKyAgICAgICAgKG1fb2Jq
ZWN0LmdldCgpLT4qbV9jYWxsYmFjaykobV9hcmcxLCBtX2FyZzIpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBEaXNwYXRjaFRhc2soUGFzc1JlZlB0cjxDYWxsYmFja0NsYXNzPiBvYmplY3QsIENh
bGxiYWNrIGNhbGxiYWNrLCBjb25zdCBTaW1wbGVEYXRhVHlwZSYgYXJnMSwgUGFzc1JlZlB0cjxS
ZWZDb3VudGVkRGF0YVR5cGU+IGFyZzIpCisgICAgICAgIDogbV9vYmplY3Qob2JqZWN0KQorICAg
ICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgICAgICwgbV9hcmcxKGFyZzEpCisgICAg
ICAgICwgbV9hcmcyKGFyZzIpIHsgfQorCisgICAgUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG1fb2Jq
ZWN0OworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgU2ltcGxlRGF0YVR5cGUgbV9hcmcx
OworICAgIFJlZlB0cjxSZWZDb3VudGVkRGF0YVR5cGU+IG1fYXJnMjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRp
ZiAvLyBEaXNwYXRjaFRhc2tfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA5ZGQxODM3
MGE0ZGQ3MWY5ZTNjNGQzYmY3MjQzOGZiZmFjNTA4MmZlLi5kODEyM2U4NDBhOWEyMWRmYTkwMDcw
MmM1MGQwMGUwNDdiNWZkYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTE4MCw2ICsx
ODAsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhhdWRpb3Byb2Nl
c3MpIFwKICAgICBcCisgICAgbWFjcm8oY29ubmVjdGluZykgXAorICAgIG1hY3JvKGFkZHN0cmVh
bSkgXAorICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkgXAorICAgIFwKKwogLy8gZW5kIG9mIERPTV9F
VkVOVF9OQU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcAppbmRleCBjMjBiMjFjMTNjODliMzZmZmIzOGFmNDFhY2I5ZmJkZGEz
Y2E4OTY4Li40MmFlYTRhYTViYzcxYjdiZWY1NzU1N2ZkY2I0N2E5OWU5N2M2ZmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTIxNiw2ICsyMTYsMTEgQEAgTG9jYWxNZWRpYVN0
cmVhbSogRXZlbnRUYXJnZXQ6OnRvTG9jYWxNZWRpYVN0cmVhbSgpCiB7CiAgICAgcmV0dXJuIDA7
CiB9CisKK1BlZXJDb25uZWN0aW9uKiBFdmVudFRhcmdldDo6dG9QZWVyQ29ubmVjdGlvbigpCit7
CisgICAgcmV0dXJuIDA7Cit9CiAjZW5kaWYKIAogYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCBiY2M3NThjMzAzNzEzNjJmZWJjMTcyN2NiODIyYTk3MWM1ZmJjNDZmLi44MGUxYWY1
YzIyZDE4MDQyNDdmNjkwYjI5MGUzZWQ2NDNkYWRhMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXQuaApAQCAtNTksNiArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVz
c2FnZVBvcnQ7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CisgICAg
Y2xhc3MgUGVlckNvbm5lY3Rpb247CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAg
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwpA
QCAtMTUyLDYgKzE1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQogICAgICAgICB2aXJ0dWFsIE1lZGlhU3RyZWFtKiB0b01lZGlhU3RyZWFtKCk7CiAg
ICAgICAgIHZpcnR1YWwgTG9jYWxNZWRpYVN0cmVhbSogdG9Mb2NhbE1lZGlhU3RyZWFtKCk7Cisg
ICAgICAgIHZpcnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24oKTsKICNlbmRp
ZgogCiAgICAgICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3AycC9Q
ZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU1ZjAwODI2ZGU3Zjk1MTJmYTEzMDBlY2Y2OTljMjc2MmMzZTEwMGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0wLDAgKzEsMzEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJEaXNwYXRjaFRhc2suaCIKKyNpbmNsdWRlICJFcnJvckV2ZW50LmgiCisjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJl
YW0uaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUxpc3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZl
bnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2ln
bmFsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTdHJlYW1FdmVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IFBlZXJDb25uZWN0aW9uOjpj
cmVhdGUoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGlk
LCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJh
Y2s+IHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIC8vIEZJWE1FOiBWZXJpZnkgdGhhdCBjb25m
aWd1cmF0aW9uIGZvbGxvd3MgdGhlIHNwZWNpZmllZCBmb3JtYXQsIGlmIG5vdCByZXR1cm4gbnVs
bC4KKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBhZG9wdFJl
ZihuZXcgUGVlckNvbm5lY3Rpb24oZnJhbWVDb250cm9sbGVyLCBpZCwgY29uZmlndXJhdGlvbiwg
c2lnbmFsaW5nQ2FsbGJhY2spKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+aW5pdCgpOworICAgIHJl
dHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK1BlZXJDb25uZWN0aW9uOjpQZWVy
Q29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBp
bnQgaWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdD
YWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgOiBQZWVyQ29ubmVjdGlvbkNsaWVudChm
cmFtZUNvbnRyb2xsZXIsIGlkKQorICAgICwgbV9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24p
CisgICAgLCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9zaWduYWxpbmdDYWxsYmFjayhzaWdu
YWxpbmdDYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoZnJhbWVDb250cm9sbGVyKTsKKyAgICBtX2xv
Y2FsU3RyZWFtTGlzdCA9IE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCk7CisgICAgbV9yZW1vdGVT
dHJlYW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjo6aW5pdCgpCit7CisgICAgaWYgKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBm
cmFtZUNvbnRyb2xsZXIgPSBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBm
cmFtZUNvbnRyb2xsZXItPm5ld1BlZXJDb25uZWN0aW9uKG1fY2xpZW50SWQsIG1fY29uZmlndXJh
dGlvbik7CisKKyAgICBwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKTsKK30KKworUGVlckNvbm5l
Y3Rpb246On5QZWVyQ29ubmVjdGlvbigpCit7Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNv
bm5lY3Rpb246OmxvY2FsU3RyZWFtcygpCit7CisgICAgcmV0dXJuIG1fbG9jYWxTdHJlYW1MaXN0
LmdldCgpOworfQorCitNZWRpYVN0cmVhbUxpc3QqIFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJl
YW1zKCkKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVTdHJlYW1MaXN0LmdldCgpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xP
U0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAg
bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UobV9j
bGllbnRJZCwgbWVzc2FnZSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnNlbmQoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRl
ID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgQ1N0cmluZyB1dGY4ID0gdGV4dC51dGY4KCk7CisgICAgaWYg
KHV0ZjgubGVuZ3RoKCkgPiA1MDQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+bWVzc2FnZSht
X2NsaWVudElkLCB0ZXh0KTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+IHBycFN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRoZSBTdHJlYW0gb2Jq
ZWN0IGlzIGd1YXJhbnRlZWQgdG8gZXhpc3Qgc2luY2UgU3RyaWN0VHlwZUNoZWNraW5nIGlzIHNl
dCBpbiB0aGUgaWRsLgorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBwcnBTdHJl
YW07CisKKyAgICBpZiAobV9sb2NhbFN0cmVhbUxpc3QtPmNvbnRhaW5zKHN0cmVhbSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbG9jYWxTdHJlYW1MaXN0LT5hZGQoc3RyZWFtKTsKKworICAg
IGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcigpLT5hZGRTdHJlYW0obV9jbGllbnRJZCwgc3RyZWFtKTsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHBy
cFN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBD
TE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFRoZSBTdHJlYW0gb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gZXhp
c3Qgc2luY2UgU3RyaWN0VHlwZUNoZWNraW5nIGlzIHNldCBpbiB0aGUgaWRsLgorCisgICAgUmVm
UHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBwcnBTdHJlYW07CisKKyAgICBpZiAoIW1fbG9jYWxT
dHJlYW1MaXN0LT5jb250YWlucyhzdHJlYW0pKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xv
Y2FsU3RyZWFtTGlzdC0+cmVtb3ZlKHN0cmVhbSk7CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgbWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+cmVt
b3ZlU3RyZWFtKG1fY2xpZW50SWQsIHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246
OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xP
U0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSkKKyAgICAgICAg
bWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKS0+Y2xvc2VQZWVyQ29ubmVjdGlvbihtX2NsaWVu
dElkKTsKKworICAgIG1fcmVhZHlTdGF0ZSA9IENMT1NFRDsKK30KKwordm9pZCBQZWVyQ29ubmVj
dGlvbjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQoKQoreworICAgIG1fcmVhZHlTdGF0ZSA9IE5FR09U
SUFUSU5HOworCisgICAgcG9zdFNpbXBsZUV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0aW5nRXZl
bnQpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uRG9uZSgpCit7Cisg
ICAgbV9yZWFkeVN0YXRlID0gQUNUSVZFOworCisgICAgcG9zdFNpbXBsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5vcGVuRXZlbnQpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpzdHJlYW1BZGRlZChQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFt
PiBzID0gc3RyZWFtOworICAgIG1fcmVtb3RlU3RyZWFtTGlzdC0+YWRkKHMpOworICAgIHBvc3RT
dHJlYW1BZGRlZEV2ZW50KHMpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpzdHJlYW1SZW1v
dmVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgQVNTRVJUKG1fcmVtb3RlU3Ry
ZWFtTGlzdC0+Y29udGFpbnMoc3RyZWFtTGFiZWwpKTsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtID0gbV9yZW1vdGVTdHJlYW1MaXN0LT5nZXQoc3RyZWFtTGFiZWwpOworICAgIG1f
cmVtb3RlU3RyZWFtTGlzdC0+cmVtb3ZlKHN0cmVhbSk7CisgICAgcG9zdFN0cmVhbVJlbW92ZWRF
dmVudChzdHJlYW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlRXZlbnQobWVzc2FnZSk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb246Om9uU2lnbmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit7CisgICAgcG9zdFNpZ25hbGluZ0V2ZW50KG1lc3NhZ2UpOworfQorCitQZWVyQ29u
bmVjdGlvbiogUGVlckNvbm5lY3Rpb246OnRvUGVlckNvbm5lY3Rpb24oKQoreworICAgIHJldHVy
biB0aGlzOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKCkgPyBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgOiAwOworfQorCitFdmVudFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9u
OjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9
CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0
YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKG1lc3NhZ2UpOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IHJldHVybjsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNv
bnRleHQtPnBvc3RUYXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgaW50LCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaE1l
c3NhZ2VFdmVudCwgMCwgZGF0YS5yZWxlYXNlKCkpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6cG9zdFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwor
ICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5p
c0NvbnRleHRUaHJlYWQoKSk7CisgICAgY29udGV4dC0+cG9zdFRhc2soU2ltcGxlRGlzcGF0Y2hU
YXNrPFBlZXJDb25uZWN0aW9uLCBTdHJpbmc+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9u
OjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50LCBtZXNzYWdlKSk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246OnBvc3RTdHJlYW1BZGRlZEV2ZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHBycFN0
cmVhbSkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAg
IEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmluZywg
TWVkaWFTdHJlYW0+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVh
bUV2ZW50LCBldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIHBycFN0cmVhbSkpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+IHBycFN0cmVhbSkKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAg
Y29udGV4dC0+cG9zdFRhc2soRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBTdHJpbmcsIE1l
ZGlhU3RyZWFtPjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1F
dmVudCwgZXZlbnROYW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBwcnBTdHJlYW0pKTsKK30KKwor
dm9pZCBQZWVyQ29ubmVjdGlvbjo6cG9zdFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAg
QVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFz
ayhTaW1wbGVEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmluZz46OmNyZWF0ZSh0aGlz
LCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU2ltcGxlRXZlbnQsIGV2ZW50TmFtZSkpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlvblRhc2soKQoreworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRl
eHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhTaW1wbGVEaXNw
YXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIGludD46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rp
b246OmRpc3BhdGNoU3RhcnROZWdvdGlhdGlvblRhc2ssIDApKTsKK30KKwordm9pZCBQZWVyQ29u
bmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpCit7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZCA9IGRhdGE7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KCksIGQpKTsKK30KKwordm9pZCBQZWVyQ29ubmVj
dGlvbjo6ZGlzcGF0Y2hTaWduYWxpbmdFdmVudChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgbV9zaWduYWxpbmdDYWxsYmFjay0+aGFuZGxlRXZlbnQobWVzc2FnZSwgdGhpcyk7Cit9CisK
K3ZvaWQgUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZlbnQoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCit7CisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtPiBzID0gc3RyZWFtOworICAgIGRpc3BhdGNoRXZlbnQoU3RyZWFtRXZlbnQ6OmNyZWF0
ZShuYW1lLCBmYWxzZSwgZmFsc2UsIHMpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hTaW1wbGVFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBkaXNwYXRj
aEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzayhjb25zdCBpbnQm
KQoreworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRp
YVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5zdGFydE5lZ290aWF0aW9uKG1fY2xpZW50SWQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjU4YzU1Njcz
MjFmYTUzYTRlNTg4YjFjOGNkODZjNDNmOTBhOGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUGVlckNvbm5lY3Rpb25faAorI2RlZmluZSBQZWVyQ29ubmVjdGlvbl9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVN0cmVhbTsKK2NsYXNzIE1lZGlhU3RyZWFtTGlzdDsKK2Ns
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjazsKKworY2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGlj
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpQZWVyQ29ubmVjdGlvbkNsaWVudCB7CitwdWJs
aWM6CisgICAgLy8gTmFtZSBhbmQgdmFsdWVzIG9mIHRoZSBlbnVtIG11c3QgbWF0Y2ggdGhlIGNv
cnJlc3Nwb25kaW5nIGNvbnN0YW50cyBpbiB0aGUgLmlkbCBmaWxlLgorICAgIGVudW0geworICAg
ICAgICBORVcgPSAwLAorICAgICAgICBORUdPVElBVElORyA9IDEsCisgICAgICAgIEFDVElWRSA9
IDIsCisgICAgICAgIENMT1NFRCA9IDMKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGVlckNvbm5lY3Rpb24+IGNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBp
ZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGluZ0NhbGxi
YWNrPik7CisgICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb24oKTsKKworICAgIE1lZGlhU3RyZWFt
TGlzdCogbG9jYWxTdHJlYW1zKCk7CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1z
KCk7CisKKyAgICB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkeVN0YXRlOyB9CisKKyAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2VuZChjb25zdCBTdHJp
bmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbG9zZShF
eGNlcHRpb25Db2RlJik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNv
bm5lY3RpbmcpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIob3Blbik7Cisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAg
ICB2aXJ0dWFsIFBlZXJDb25uZWN0aW9uKiB0b1BlZXJDb25uZWN0aW9uKCk7CisKKyAgICAvLyBF
dmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKKworICAgIC8vIENhbGxiYWNr
cworICAgIHZvaWQgb25NZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBv
blNpZ25hbGluZ01lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uTmVn
b3RpYXRpb25TdGFydGVkKCk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uRG9uZSgpOworICAgIHZv
aWQgc3RyZWFtQWRkZWQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgc3RyZWFt
UmVtb3ZlZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8UGVlckNvbm5lY3Rpb24+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVj
dGlvbj46OmRlcmVmOworCitwcm90ZWN0ZWQ6CisgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50
YXRpb24uCisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwor
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKKwor
cHJpdmF0ZToKKyAgICBQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcios
IGludCBpZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRyPFNpZ25hbGlu
Z0NhbGxiYWNrPik7CisgICAgdm9pZCBpbml0KCk7CisKKyAgICB2b2lkIHBvc3RTaW1wbGVFdmVu
dChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZUV2ZW50KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0U2lnbmFsaW5nRXZlbnQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHBvc3RTdHJlYW1BZGRlZEV2ZW50KFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHBvc3RTdHJlYW1SZW1vdmVkRXZlbnQoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQgcG9zdFN0YXJ0TmVnb3RpYXRpb25UYXNrKCk7
CisKKyAgICB2b2lkIGRpc3BhdGNoU2ltcGxlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
OworICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnQoY29uc3QgaW50JiwgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEpOworICAgIHZvaWQgZGlzcGF0Y2hTaWduYWxpbmdF
dmVudChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBkaXNwYXRjaFN0cmVhbUV2
ZW50KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZv
aWQgZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzayhjb25zdCBpbnQmKTsKKworICAgIC8vIEV2
ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVy
ZWYoKTsgfQorCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAg
U3RyaW5nIG1fY29uZmlndXJhdGlvbjsKKyAgICB1bnNpZ25lZCBzaG9ydCBtX3JlYWR5U3RhdGU7
CisgICAgUmVmUHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBtX3NpZ25hbGluZ0NhbGxiYWNrOworICAg
IFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1MaXN0OworICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFtTGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBQ
ZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5l
Y3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmlkbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYzlhMTlkYjBhNTljNTBiMTNjN2YwYWE5MjMxM2FhZjJhMTNkOTQyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsx
LDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQ2FuQmVDb25zdHJ1Y3Rl
ZCwKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0RnVuY3Rpb24sCisgICAgICAgIENvbnN0cnVjdG9y
UGFyYW1ldGVycz0yLAorICAgICAgICBWOEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBFdmVu
dFRhcmdldAorICAgIF0gUGVlckNvbm5lY3Rpb24geworICAgICAgICB2b2lkIHByb2Nlc3NTaWdu
YWxpbmdNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVXID0gMDsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVHT1RJQVRJTkcgPSAxOworICAgICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBBQ1RJVkUgPSAyOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBDTE9TRUQgPSAzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
cmVhZHlTdGF0ZTsKKworICAgICAgICB2b2lkIHNlbmQoaW4gRE9NU3RyaW5nIHRleHQpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW1N0cmljdFR5cGVDaGVja2lu
Z10gdm9pZCBhZGRTdHJlYW0oaW4gTWVkaWFTdHJlYW0gc3RyZWFtKQorICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgcmVt
b3ZlU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSkKKyAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOworCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3Qg
bG9jYWxTdHJlYW1zOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0
IHJlbW90ZVN0cmVhbXM7CisKKyAgICAgICAgdm9pZCBjbG9zZSgpCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNv
bm5lY3Rpbmc7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3BlbjsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25yZW1vdmVzdHJlYW07CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisg
ICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbb3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7
CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbb3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVu
dCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGEzMGU3MTI2NzU0
YTUxYzMyOGIyODc0NzYyNjBhYmQ4ZmM0YjgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTaWduYWxpbmdDYWxsYmFja19oCisjZGVmaW5lIFNpZ25hbGluZ0NhbGxi
YWNrX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBlZXJDb25uZWN0aW9uOwor
CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNpZ25hbGluZ0Nh
bGxiYWNrPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2lnbmFsaW5nQ2FsbGJhY2soKSB7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwgUGVlckNvbm5lY3Rp
b24qKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gU2lnbmFsaW5nQ2FsbGJhY2tfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQzMmZjZjBlYzdk
YzUyNDhlMDQxNjhkN2Y2MWNkOTRlNjlhODhhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5pZGwKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIENhbGxiYWNrPUZ1bmN0aW9uT25seQorICAgIF0g
U2lnbmFsaW5nQ2FsbGJhY2sgeworICAgICAgICBib29sZWFuIGhhbmRsZUV2ZW50KGluIERPTVN0
cmluZyBtZXNzYWdlLCBpbiBQZWVyQ29ubmVjdGlvbiBzb3VyY2UpOworICAgIH07CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCAwZjMxNjJmMWQ3ODFjMTEzYzk3ZWM0ZDRmOTcz
ZWRiMzNkOTU2ZTcxLi41ZTM5MjFmZmViMzVjMTg1N2ZmY2IxYzQ1MTI3OTZiNDgxOTU4NWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0zMzcsNiArMzM3LDggQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9REVWSUNFX09SSUVOVEFUSU9O
LEVuYWJsZWRBdFJ1bnRpbWVdIERldmljZU9yaWVudGF0aW9uRXZlbnRDb25zdHJ1Y3RvciBEZXZp
Y2VPcmllbnRhdGlvbkV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPURFVklD
RV9PUklFTlRBVElPTixFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9uZGV2aWNlb3Jp
ZW50YXRpb247CiAKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1NRURJQV9TVFJFQU0s
RW5hYmxlZEF0UnVudGltZV0gUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvciBQZWVyQ29ubmVjdGlv
bjsKKwogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCmluZGV4IDAzZGVkZmQ4OGM0ZmQzMThhNzgw
MzE2NWFkMTkxMTllY2ZjYjVjYzkuLjdhYzJmMDdlOTVjY2RiNDI5ZDFiYzIyOTVhOTJmOWFhZGM4
ZjExZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKQEAgLTQzLDE4
ICs0MywyMSBAQCB0eXBlZGVmIHVuc2lnbmVkIEdlbmVyYXRlU3RyZWFtT3B0aW9uRmxhZ3M7CiAK
IGNsYXNzIE1lZGlhU3RyZWFtQ2xpZW50IHsKIHB1YmxpYzoKLSAgICAvLyBOb3RpZnkgdGhlIGVt
YmVkZGVyIGNsaWVudCBhYm91dCB0aGUgcGFnZSBjb250cm9sbGVyIGJlaW5nIGRlc3Ryb3llZC4K
KyAgICAvLyBNZWRpYVN0cmVhbSBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhU3Ry
ZWFtRGVzdHJveWVkKCkgPSAwOwotCi0gICAgLy8gR2VuZXJhdGUgYSBuZXcgbG9jYWwgc3RyZWFt
LgogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZVN0cmVhbShpbnQgcmVxdWVzdElkLCBHZW5lcmF0
ZVN0cmVhbU9wdGlvbkZsYWdzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPikgPSAwOwotCi0g
ICAgLy8gU3RvcCBhIGdlbmVyYXRlZCBzdHJlYW0uCiAgICAgdmlydHVhbCB2b2lkIHN0b3BHZW5l
cmF0ZWRTdHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAwOwotCi0gICAgLy8gRW5h
YmxlL2Rpc2FibGUgYW4gdHJhY2suCiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKGNvbnN0IFN0cmluZyYgdHJhY2tJZCwgYm9vbCBlbmFibGVkKSA9IDA7CiAKKyAg
ICAvLyBQZWVyQ29ubmVjdGlvbiBmdW5jdGlvbnMuCisgICAgdmlydHVhbCB2b2lkIG5ld1BlZXJD
b25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRp
b24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnROZWdvdGlhdGlvbihpbnQgcGVlckNvbm5l
Y3Rpb25JZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlUGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25u
ZWN0aW9uSWQpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtQ2xp
ZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xs
ZXIuY3BwCmluZGV4IGFhZGNmNjBmMjczNWE0ZWE3MzVjMWE4OTQ1NDdlYzZkODA5YzMxYWQuLjVm
NjA0ZWNjYzBiMDcxM2ZiYzBlMzg1NGExZjMyMDlmN2RjYzFiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBGSVhNRTogVGhpcyBpcyB1c2VkIGZvciBob2xkaW5n
IGxpc3Qgb2YgUGVlckNvbm5lY3Rpb24gYXMgd2VsbCwKKy8vIHNvIHJlbmFtZSBjbGFzcyBpcyBp
biBvcmRlci4KIGNsYXNzIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6UmVxdWVzdCB7CiBwdWJsaWM6
CiAgICAgUmVxdWVzdCgpCkBAIC01NSw2ICs1Nyw3IEBAIHByaXZhdGU6CiBNZWRpYVN0cmVhbUNv
bnRyb2xsZXI6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcihNZWRpYVN0cmVhbUNsaWVudCogY2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9uZXh0R2xvYmFsUmVxdWVzdElkKDEp
CisgICAgLCBtX25leHRHbG9iYWxQZWVyQ29ubmVjdGlvbklkKDEpCiB7CiB9CiAKQEAgLTg5LDYg
KzkyLDggQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnVucmVnaXN0ZXJGcmFtZUNvbnRy
b2xsZXIoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIKIAogICAgIGZvciAoVmVjdG9yPFN0cmlu
Zz46Oml0ZXJhdG9yIGl0ID0gZnJhbWVTdHJlYW1zLmJlZ2luKCk7IGl0ICE9IGZyYW1lU3RyZWFt
cy5lbmQoKTsgKytpdCkKICAgICAgICAgbV9zdHJlYW1zLnJlbW92ZSgqaXQpOworCisgICAgLy8g
RklYTUU6IEFkZCB1bnJlZ2lzdGVyIGZ1bmN0aW9uYWxpdHkgZm9yIHBlZXIgY29ubmVjdGlvbiBv
YmplY3RzLgogfQogCiBpbnQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZWdpc3RlclJlcXVlc3Qo
aW50IGxvY2FsSWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIp
CkBAIC0xNTIsNiArMTU3LDEzMCBAQCB2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RyZWFt
RmFpbGVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCiAgICAgICAgIG1fc3RyZWFtcy5nZXQo
c3RyZWFtTGFiZWwpLT5zdHJlYW1GYWlsZWQoc3RyZWFtTGFiZWwpOwogfQogCit2b2lkIE1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIERvbid0IGFzc2Vy
dCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZC4KKyAg
ICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29u
bmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJU
KHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rp
b24uZnJhbWVDb250cm9sbGVyKCktPm9uU2lnbmFsaW5nTWVzc2FnZShwZWVyQ29ubmVjdGlvbi5s
b2NhbElkKCksIG1lc3NhZ2UpOworICAgIH0KK30KKworYm9vbCBNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OmZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
ciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBpbnQmIHBhZ2VQ
ZWVyQ29ubmVjdGlvbklkKQoreworICAgIHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gLTE7CisgICAg
Ly8gRklYTUU6IElzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBmaW5kIHRoZSBnbG9iYWwgSUQgaW4g
dGhlIG1hcD8KKyAgICBmb3IgKFJlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZWVyQ29ubmVj
dGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9wZWVyQ29ubmVjdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAg
ICAgICAgaWYgKGl0LT5zZWNvbmQuZnJhbWVDb250cm9sbGVyKCkgPT0gZnJhbWVDb250cm9sbGVy
ICYmIGl0LT5zZWNvbmQubG9jYWxJZCgpID09IGZyYW1lUGVlckNvbm5lY3Rpb25JZCkgeworICAg
ICAgICAgICAgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVj
dGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVj
dGlvbklkOworICAgIGlmIChmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9s
bGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAg
ICAgbV9jbGllbnQtPnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKHBhZ2VQZWVyQ29ubmVjdGlvbklk
LCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om1lc3NhZ2UoTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNv
bm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNv
bm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29u
dHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVlckNvbm5lY3Rpb25JZCkpCisg
ICAgICAgIG1fY2xpZW50LT5tZXNzYWdlKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsK
K30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTWVzc2FnZShpbnQgY29udHJvbGxl
clBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24n
dCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95
ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25u
ZWN0aW9uSWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9w
ZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAg
QVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNv
bm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uTWVzc2FnZShwZWVyQ29ubmVjdGlvbi5sb2Nh
bElkKCksIG1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
OmFkZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBp
bnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQorewor
ICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29u
bmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVl
ckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1fY2xpZW50LT5hZGRTdHJlYW0ocGFnZVBlZXJDb25u
ZWN0aW9uSWQsIHN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6
Om9uQWRkU3RyZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5n
JiBzdHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKQor
eworICAgIC8vIERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2
ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250
cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNv
bm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9u
SWQpOworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOwor
ICAgICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25BZGRTdHJlYW0ocGVl
ckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCwgdHJhY2tzKTsKKyAgICB9Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpyZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9u
SWQ7CisgICAgaWYgKGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIs
IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgcGFnZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAgICBt
X2NsaWVudC0+cmVtb3ZlU3RyZWFtKHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBzdHJlYW1MYWJlbCk7
Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvblJlbW92ZVN0cmVhbShpbnQgY29u
dHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7Cisg
ICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJl
ZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICAvLyBUT0RPOiBCZXR0ZXIgbmFtZSBvZiBw
ZWVyQ29ubmVjdGlvbiB2YXJpYWJsZT8KKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5l
Y3Rpb24gPSBtX3BlZXJDb25uZWN0aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQp
OworICAgICAgICBBU1NFUlQocGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAg
ICAgICBwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKS0+b25SZW1vdmVTdHJlYW0ocGVl
ckNvbm5lY3Rpb24ubG9jYWxJZCgpLCBzdHJlYW1MYWJlbCk7CisgICAgfQorfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6bmV3UGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29u
c3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25J
ZCA9IG1fbmV4dEdsb2JhbFBlZXJDb25uZWN0aW9uSWQrKzsKKyAgICBtX3BlZXJDb25uZWN0aW9u
cy5hZGQocGFnZVBlZXJDb25uZWN0aW9uSWQsIFJlcXVlc3QoZnJhbWVQZWVyQ29ubmVjdGlvbklk
LCBmcmFtZUNvbnRyb2xsZXIpKTsKKworICAgIG1fY2xpZW50LT5uZXdQZWVyQ29ubmVjdGlvbihw
YWdlUGVlckNvbm5lY3Rpb25JZCwgY29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1Db250cm9sbGVyOjpjbG9zZVBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQpCit7CisgICAg
aW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOworICAgIGlmIChmcmFtZVRvUGFnZVBlZXJDb25uZWN0
aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIHBhZ2VQZWVyQ29u
bmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlUGVlckNvbm5lY3Rpb24ocGFnZVBl
ZXJDb25uZWN0aW9uSWQpOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6c3RhcnRO
ZWdvdGlhdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyLCBp
bnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25J
ZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1f
Y2xpZW50LT5zdGFydE5lZ290aWF0aW9uKHBhZ2VQZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25TdGFydGVkKGludCBjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZy
YW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29u
bmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAg
IGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNv
bnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9u
LmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9s
bGVyKCktPm9uTmVnb3RpYXRpb25TdGFydGVkKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSk7Cisg
ICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUo
aW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIERvbid0IGFzc2VydCBz
aW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRlc3Ryb3llZAorICAgIGlm
IChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkp
IHsKKyAgICAgICAgY29uc3QgUmVxdWVzdCYgcGVlckNvbm5lY3Rpb24gPSBtX3BlZXJDb25uZWN0
aW9ucy5nZXQoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpOworICAgICAgICBBU1NFUlQocGVl
ckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCkpOworICAgICAgICBwZWVyQ29ubmVjdGlvbi5m
cmFtZUNvbnRyb2xsZXIoKS0+b25OZWdvdGlhdGlvbkRvbmUocGVlckNvbm5lY3Rpb24ubG9jYWxJ
ZCgpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlh
U3RyZWFtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRy
b2xsZXIuaAppbmRleCAxMGFjNGNlZjExYzkzY2ZmZDE5NDYyMmY0NzYzNzY5NjUyZDNhYjEwLi41
NTUzNTg3ZWMzNzYxZGUzYjEwNDg3MTRhZDFjNWQ4OTA1NjMxNzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmgKQEAgLTYwLDE5ICs2MCw0MCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0aW9uRmFpbGVkKGludCByZXF1ZXN0SWQsIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yOjpFcnJvckNvZGUpOwogICAgIHZvaWQgc3RyZWFtRmFpbGVkKGNv
bnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgLyogSlMgLT4gVUEgKi8KKyAgICB2b2lk
IG5ld1BlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1l
UGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKTsKKyAgICB2b2lk
IHN0YXJ0TmVnb3RpYXRpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQ
ZWVyQ29ubmVjdGlvbklkKTsKKyAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG1lc3NhZ2UoTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
OworICAgIHZvaWQgYWRkU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZy
YW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9p
ZCByZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKTsKKyAgICB2b2lkIGNsb3Nl
UGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVy
Q29ubmVjdGlvbklkKTsKKworICAgIC8qIFVBIC0+IEpTICovCisgICAgdm9pZCBvblNpZ25hbGlu
Z01lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOworICAgIHZvaWQgb25NZXNzYWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uQWRkU3RyZWFtKGludCBjb250
cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCwgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKTsKKyAgICB2b2lkIG9uUmVtb3ZlU3Ry
ZWFtKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1M
YWJlbCk7CisgICAgdm9pZCBvbk5lZ290aWF0aW9uU3RhcnRlZChpbnQgY29udHJvbGxlclBlZXJD
b25uZWN0aW9uSWQpOworICAgIHZvaWQgb25OZWdvdGlhdGlvbkRvbmUoaW50IGNvbnRyb2xsZXJQ
ZWVyQ29ubmVjdGlvbklkKTsKKwogcHJpdmF0ZToKICAgICBpbnQgcmVnaXN0ZXJSZXF1ZXN0KGlu
dCBsb2NhbFJlcXVlc3RJZCwgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqKTsKICAgICB2b2lk
IHJlZ2lzdGVyU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIE1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyKik7CiAKKyAgICBib29sIGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGlu
dCYgcGFnZVBlZXJDb25uZWN0aW9uSWQpOworCiAgICAgY2xhc3MgUmVxdWVzdDsKICAgICB0eXBl
ZGVmIEhhc2hNYXA8aW50LCBSZXF1ZXN0PiBSZXF1ZXN0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKj4gU3RyZWFtTWFwOwogCiAgICAg
UmVxdWVzdE1hcCBtX3JlcXVlc3RzOwogICAgIFN0cmVhbU1hcCBtX3N0cmVhbXM7CisgICAgUmVx
dWVzdE1hcCBtX3BlZXJDb25uZWN0aW9uczsKIAogICAgIE1lZGlhU3RyZWFtQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBpbnQgbV9uZXh0R2xvYmFsUmVxdWVzdElkOworICAgIGludCBtX25leHRHbG9i
YWxQZWVyQ29ubmVjdGlvbklkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAppbmRl
eCA5MjA1MzM4ZDAwNzdjYjNkMTZiMWJjMWE4ZDllMGM5ZTZjZTRlMzM5Li45NWY4Y2QzMjBkOTYw
NDVmNmVkY2JhNWJhMzQ3MDM4NWY0MTgwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcApAQCAtMzYsNyArMzYsOSBAQAogI2lu
Y2x1ZGUgIk5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJOYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIlNpZ25hbGluZ0NhbGxiYWNrLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVy
YXRlU3RyZWFtUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUmVjb3JkZWREYXRhUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGlzU2lnbmFsaW5nUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAKQEAgLTM2MCw2ICszNjMsMTI2IEBA
IHZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OnN0cmVhbUZhaWxlZChjb25zdCBTdHJp
bmcmIGxhYmVsKQogICAgIGdldFN0cmVhbUZyb21MYWJlbChsYWJlbCktPnN0cmVhbUVuZGVkKCk7
CiB9CiAKK1Bhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBh
c3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIGlu
dCBjbGllbnRJZCA9IG1fY2xpZW50cy5nZXROZXh0SWQoKTsKKyAgICBSZWZQdHI8UGVlckNvbm5l
Y3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVlckNvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBjbGll
bnRJZCwgY29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spOworICAgIGlmIChwZWVyQ29u
bmVjdGlvbikKKyAgICAgICAgbV9jbGllbnRzLmFkZChjbGllbnRJZCwgcGVlckNvbm5lY3Rpb24u
Z2V0KCkpOworICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK3ZvaWQg
TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om5ld1BlZXJDb25uZWN0aW9uKGludCBwZWVyQ29u
bmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24pCit7CisgICAgaWYgKHBhZ2VD
b250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPm5ld1BlZXJDb25uZWN0aW9u
KHRoaXMsIHBlZXJDb25uZWN0aW9uSWQsIGNvbmZpZ3VyYXRpb24pOworfQorCit2b2lkIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVj
dGlvbklkKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJv
bGxlcigpLT5jbG9zZVBlZXJDb25uZWN0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKGludCBw
ZWVyQ29ubmVjdGlvbklkKQoreworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBw
YWdlQ29udHJvbGxlcigpLT5zdGFydE5lZ290aWF0aW9uKHRoaXMsIHBlZXJDb25uZWN0aW9uSWQp
OworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpwcm9jZXNzU2lnbmFsaW5n
TWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5wcm9j
ZXNzU2lnbmFsaW5nTWVzc2FnZSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBtZXNzYWdlKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6bWVzc2FnZShpbnQgcGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmIChwYWdlQ29udHJvbGxl
cigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5tZXNzYWdlKHRoaXMsIHBlZXJDb25uZWN0
aW9uSWQsIG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjph
ZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0
cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJlZjsK
KyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRhaW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisgICAg
aWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAgICAgIHBhZ2VDb250cm9sbGVyKCktPmFkZFN0cmVh
bSh0aGlzLCBwZWVyQ29ubmVjdGlvbklkLCBzdHJlYW0tPmxhYmVsKCkpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpyZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9u
SWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbVJlZikKK3sKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW0+IHN0cmVhbSA9IHN0cmVhbVJlZjsKKyAgICBBU1NFUlQobV9zdHJlYW1zLmNvbnRh
aW5zKHN0cmVhbS0+bGFiZWwoKSkpOworCisgICAgaWYgKHBhZ2VDb250cm9sbGVyKCkpCisgICAg
ICAgIHBhZ2VDb250cm9sbGVyKCktPnJlbW92ZVN0cmVhbSh0aGlzLCBwZWVyQ29ubmVjdGlvbklk
LCBzdHJlYW0tPmxhYmVsKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
Ojpvbk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAg
ICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlv
bigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0
aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkp
OworCisgICAgcGVlckNvbm5lY3Rpb24tPm9uTWVzc2FnZShtZXNzYWdlKTsKK30KKwordm9pZCBN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a0xpc3Q+IHRyYWNrcykKK3sKKyAgICBBU1NFUlQoIXN0cmVhbUxhYmVsLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7
CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUo
dGhpcywgc3RyZWFtTGFiZWwsIHRyYWNrcyk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+
IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMu
Z2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+c3RyZWFtQWRkZWQo
c3RyZWFtLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6
Om9uUmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVh
bUxhYmVsKQoreworICAgIEFTU0VSVCghc3RyZWFtTGFiZWwuaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9j
bGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAg
IFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVy
Q29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkpOworICAgIHBlZXJD
b25uZWN0aW9uLT5zdHJlYW1SZW1vdmVkKHN0cmVhbUxhYmVsKTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250
YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNv
bm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5l
Y3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2Ns
aWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25TaWdu
YWxpbmdNZXNzYWdlKG1lc3NhZ2UpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpvbk5lZ290aWF0aW9uU3RhcnRlZChpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAv
LyBGSVhNRTogQXNzZXJ0IG9yIG5vdD8KKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBl
ZXJDb25uZWN0aW9uSWQpKTsKKyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlv
bklkKS0+aXNQZWVyQ29ubmVjdGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4g
cGVlckNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5n
ZXQocGVlckNvbm5lY3Rpb25JZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm9uTmVnb3RpYXRp
b25TdGFydGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uTmVn
b3RpYXRpb25Eb25lKGludCBwZWVyQ29ubmVjdGlvbklkKQoreworICAgIC8vIEZJWE1FOiBBc3Nl
cnQgb3Igbm90PworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25J
ZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJD
b25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlv
biA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChwZWVyQ29ubmVj
dGlvbklkKSk7CisKKyAgICBwZWVyQ29ubmVjdGlvbi0+b25OZWdvdGlhdGlvbkRvbmUoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIu
aAppbmRleCBiNTVlMGQwNWFhNzliMzkwNzkxNjFjMjQ1NDIwN2EwZTk4N2I3MjUwLi5lNTE0NzI1
YWM2NTAzZjQ5OGNlMzJlNzA4YThiNGU1YjJhNGU2MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCkBAIC00NSw4ICs0NSwxMCBAQCBj
bGFzcyBNZWRpYVN0cmVhbVRyYWNrTGlzdDsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CiBjbGFz
cyBQYWdlOworY2xhc3MgUGVlckNvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CitjbGFzcyBTaWduYWxpbmdDYWxsYmFjazsKIAog
Y2xhc3MgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKTsKQEAgLTY5LDYgKzcxLDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2FsTWVkaWFTdHJlYW0oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmljQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUGVlckNvbm5l
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIC8vIENhbGxlZCB3aGVu
IHRoZSBmcmFtZSBjb250cm9sbGVyIGlzIGJlaW5nIGRpc2Nvbm5lY3RlZCB0byB0aGUgTWVkaWFT
dHJlYW1DbGllbnQgZW1iZWRkZXIuCiAgICAgICAgIC8vIENsaWVudHMgc2hvdWxkIG92ZXJyaWRl
IHRoaXMgdG8gc2VuZCBhbnkgcmVxdWlyZWQgc2h1dGRvd24gbWVzc2FnZXMuCkBAIC0xMzcsNiAr
MTQwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXIoKSB7IHVu
cmVnaXN0ZXJDbGllbnQodGhpcyk7IH0KICAgICB9OwogCisgICAgY2xhc3MgUGVlckNvbm5lY3Rp
b25DbGllbnQgOiBwdWJsaWMgR2VuZXJpY0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBQ
ZWVyQ29ubmVjdGlvbkNsaWVudChNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBpbnQgaWQpIDogR2VuZXJpY0NsaWVudChmcmFtZUNvbnRyb2xsZXIsIGlkKSB7IH0K
KyAgICAgICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25DbGllbnQoKSB7IH0KKyAgICAgICAgdmly
dHVhbCBib29sIGlzUGVlckNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
fTsKKwogICAgIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKEZyYW1lKik7CiAgICAgdmlydHVh
bCB+TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKTsKIApAQCAtMTQ4LDI5ICsxNTgsMzMgQEAg
cHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgdm9pZCB0cmFuc2ZlclRv
TmV3UGFnZShQYWdlKik7CiAKLSAgICAvLyBQYXJzZSB0aGUgb3B0aW9ucyBzdHJpbmcgcHJvdmlk
ZWQgdG8gdGhlIGdlbmVyYXRlU3RyZWFtIG1ldGhvZC4KICAgICBzdGF0aWMgR2VuZXJhdGVTdHJl
YW1PcHRpb25GbGFncyBwYXJzZUdlbmVyYXRlU3RyZWFtT3B0aW9ucyhjb25zdCBTdHJpbmcmKTsK
LQotICAgIC8vIENyZWF0ZSBhIG5ldyBnZW5lcmF0ZWQgc3RyZWFtIGFzeW5jaHJvbm91c2x5IHdp
dGggdGhlIHByb3ZpZGVkIG9wdGlvbnMuCiAgICAgdm9pZCBnZW5lcmF0ZVN0cmVhbShjb25zdCBT
dHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxi
YWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0
aW9uQ29kZSYpOwotCi0gICAgLy8gU3RvcCBhIGxvY2FsIG1lZGlhIHN0cmVhbS4KICAgICB2b2lk
IHN0b3BHZW5lcmF0ZWRTdHJlYW0oY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7Ci0KLSAgICAv
LyBFbmFibGUvZGlzYWJsZSBhbiB0cmFjay4KICAgICB2b2lkIHNldE1lZGlhU3RyZWFtVHJhY2tF
bmFibGVkKGNvbnN0IFN0cmluZyYgdHJhY2tJZCwgYm9vbCBlbmFibGVkKTsKIAorICAgIFBhc3NS
ZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbnN0IFN0cmluZyYg
Y29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOworICAgIHZvaWQg
bmV3UGVlckNvbm5lY3Rpb24oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgY29u
ZmlndXJhdGlvbik7CisgICAgdm9pZCBzdGFydE5lZ290aWF0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkKTsKKyAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGludCBwZWVyQ29ubmVjdGlv
bklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgbWVzc2FnZShpbnQgcGVlckNv
bm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIGFkZFN0cmVhbShp
bnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHZvaWQg
cmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
Pik7CisgICAgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkKTsK
KwogICAgIC8vIC0tLSBDYWxscyBjb21pbmcgYmFjayBmcm9tIHRoZSBjb250cm9sbGVyLiAtLS0g
Ly8KIAotICAgIC8vIFJlcG9ydCB0aGUgZ2VuZXJhdGlvbiBvZiBhIG5ldyBsb2NhbCBzdHJlYW0u
CiAgICAgdm9pZCBzdHJlYW1HZW5lcmF0ZWQoaW50IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBz
dHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tzKTsKLQot
ICAgIC8vIFJlcG9ydCBhIGZhaWx1cmUgaW4gdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgc3RyZWFt
LgogICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgcmVxdWVzdElkLCBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvcjo6RXJyb3JDb2RlKTsKLQotICAgIC8vIFJlcG9ydCB0aGUgZW5kIG9m
IGEgc3RyZWFtIGZvciBleHRlcm5hbCByZWFzb25zLgogICAgIHZvaWQgc3RyZWFtRmFpbGVkKGNv
bnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwogCisgICAgdm9pZCBvblNpZ25hbGluZ01lc3NhZ2Uo
aW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBv
bk1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgdm9pZCBvbkFkZFN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBz
dHJlYW1MYWJlbCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4pOworICAgIHZvaWQg
b25SZW1vdmVTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwpOworICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9u
SWQpOworICAgIHZvaWQgb25OZWdvdGlhdGlvbkRvbmUoaW50IHBlZXJDb25uZWN0aW9uSWQpOwor
CiBwcml2YXRlOgogICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgY2xhc3MgR2VuZXJhdGVTdHJlYW1S
ZXF1ZXN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102798</attachid>
            <date>2011-08-03 11:22:17 -0700</date>
            <delta_ts>2011-08-03 12:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65101-20110803202215.patch</filename>
            <type>text/plain</type>
            <size>100437</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIyOTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMjhjZGE4MTlhYjhjYWY0ZGMyY2Zi
ODQ4OTgxZjc3ZDUzMjEyMGFmLi41MWMzZTQ0NDljNTI3MGFlYzJiNDkzYjNlOGViMDFhODUxZjBi
ZDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMDMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1l
bnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dFRlc3RzIHdpbGwgYmUgcHJvdmlk
ZWQgYnkgYSBmb2xsb3ctdXAgQ0wsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3Pi4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQ6CisKIDIwMTEtMDgtMDMgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBNYWMgTGlv
biBza2lwcGVkIGxpc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vcHJvdG90eXBlLWluaGVyaXRhbmNlLWV4cGVj
dGVkLnR4dAppbmRleCA0MTY5NzRjZjdkOWFmZGIwMDc3OGU5NGQzNWU3MTMyOGI5NWY4NTJjLi41
NTYzNzEzYmJlNTE3ZGU3ZWEyOTgzNGY0YzIwYmUyODk5NzQ1NTUxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9wcm90b3R5cGUtaW5oZXJpdGFuY2Ut
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L3Byb3RvdHlwZS1pbmhlcml0YW5jZS1leHBlY3RlZC50eHQKQEAgLTI5Myw2ICsyOTMsOCBAQCBQ
QVNTIGlubmVyLk92ZXJmbG93RXZlbnQuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLk92ZXJm
bG93RXZlbnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLlBhZ2VUcmFu
c2l0aW9uRXZlbnQuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLlBhZ2VUcmFuc2l0aW9uRXZl
bnQuY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCitQQVNTIGlubmVyLlBlZXJDb25uZWN0aW9u
LmlzSW5uZXIgaXMgdHJ1ZQorUEFTUyBpbm5lci5QZWVyQ29ubmVjdGlvbi5jb25zdHJ1Y3Rvci5p
c0lubmVyIGlzIHRydWUKIFBBU1MgaW5uZXIuUGx1Z2luLmlzSW5uZXIgaXMgdHJ1ZQogUEFTUyBp
bm5lci5QbHVnaW4uY29uc3RydWN0b3IuaXNJbm5lciBpcyB0cnVlCiBQQVNTIGlubmVyLlBsdWdp
bkFycmF5LmlzSW5uZXIgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2OThjZTNiNWI2
ZGMxNGRkZGE3YmIzMjNjY2JiYWU2NjYwZTM1NzVjLi5jZWFmMjMwNTA5YjgwODk2MmZmZWFkM2Qy
Y2I5NGRlN2Q3Y2JhNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjAxMiw2ICsyMDEyLDcg
QEAgSUYgKEVOQUJMRV9NRURJQV9TVFJFQU0pCiAgICAgICAgIGRvbS9NZWRpYVN0cmVhbVRyYWNr
LmNwcAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwCiAgICAgICAgIGRvbS9T
dHJlYW1FdmVudC5jcHAKKyAgICAgICAgcDJwL1BlZXJDb25uZWN0aW9uLmNwcAogICAgICAgICBw
YWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKICAgICAgICAgcGFnZS9NZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlci5jcHAKICAgICApCkBAIC0yMDIzLDYgKzIwMjQsOCBAQCBJRiAoRU5BQkxF
X01FRElBX1NUUkVBTSkKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2suaWRsCiAgICAgICAg
IGRvbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwKICAgICAgICAgZG9tL1N0cmVhbUV2ZW50Lmlk
bAorICAgICAgICBwMnAvUGVlckNvbm5lY3Rpb24uaWRsCisgICAgICAgIHAycC9TaWduYWxpbmdD
YWxsYmFjay5pZGwKICAgICAgICAgcGFnZS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwKICAg
ICApCiBFTkRJRiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1NTZmOWJjNGNhZGNhYzdhMjkwMjdiZTgxNDAz
OWVjZjM5MDIyNWUuLjZkMjVkOWU5ZjYxYWU4ZTQ0NzQ4OTRlZmIzNzAzZmU0ZTEyM2UzNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjcgQEAKKzIwMTEtMDgtMDMgIFRvbW15IFdpZGVuZmx5Y2h0
ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1l
bnQgUGVlckNvbm5lY3Rpb24gYW5kIFNpZ25hbGluZ0NhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTEwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dFRlc3RzIHdpbGwgYmUgcHJvdmlk
ZWQgYnkgYSBmb2xsb3ctdXAgQ0wsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU2NTg3Pi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IENvZGVHZW5lcmF0b3JzLnByaToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFi
bGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmguCisgICAgICAgIChXZWJD
b3JlOjpKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rp
b24pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpWOFBlZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKToKKyAgICAgICAgKiBkb20vRGlzcGF0Y2hUYXNrLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRGlzcGF0Y2hUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlRGlzcGF0Y2hUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVE
aXNwYXRjaFRhc2s6OlNpbXBsZURpc3BhdGNoVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
YXRjaFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwYXRjaFRhc2s6OnBlcmZv
cm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BhdGNoVGFzazo6RGlzcGF0Y2hUYXNrKToK
KyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9QZWVyQ29ubmVjdGlvbik6Cisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6CisgICAgICAgICogcDJwL1BlZXJDb25uZWN0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpQZWVyQ29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
ZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJD
b25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OnJlbW90ZVN0cmVhbXMpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnBy
b2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9u
OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OnJlbW92ZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6UGVl
ckNvbm5lY3Rpb246Om9uTmVnb3RpYXRpb25TdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBl
ZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uRG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVy
Q29ubmVjdGlvbjo6c3RyZWFtQWRkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rp
b246OnN0cmVhbVJlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246Om9u
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6b25TaWduYWxpbmdN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjp0b1BlZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpldmVudFRhcmdldERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdFNpZ25hbGluZ0V2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0U3RyZWFtQWRkZWRFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdFN0cmVhbVJlbW92ZWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cG9zdFNpbXBsZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpwb3N0U3RhcnROZWdvdGlhdGlv
blRhc2spOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2Fn
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNpZ25h
bGluZ0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0
cmVhbUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFNp
bXBsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0
YXJ0TmVnb3RpYXRpb25UYXNrKToKKyAgICAgICAgKiBwMnAvUGVlckNvbm5lY3Rpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6UGVlckNvbm5lY3Rpb246OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAqIHAy
cC9QZWVyQ29ubmVjdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIHAycC9TaWduYWxpbmdDYWxs
YmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50
LmguCisgICAgICAgIChXZWJDb3JlOjpTaWduYWxpbmdDYWxsYmFjazo6flNpZ25hbGluZ0NhbGxi
YWNrKToKKyAgICAgICAgKiBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNsaWVu
dC5oOgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6TWVkaWFTdHJlYW1Db250cm9sbGVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6dW5yZWdpc3RlckZyYW1l
Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9u
U2lnbmFsaW5nTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbnRyb2xs
ZXI6OmZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmFkZFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Db250cm9sbGVyOjpuZXdQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OmNsb3NlUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpzdGFydE5lZ290aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvblN0YXJ0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9u
RG9uZSk6CisgICAgICAgICogcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBwYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpSZXF1ZXN0Ojppc1NpZ25hbGluZ1JlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmNyZWF0ZVBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyOjpuZXdQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RhcnROZWdvdGlhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cHJvY2Vzc1NpZ25hbGluZ01lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om1lc3Nh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OmFkZFN0
cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVt
b3ZlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
Ojpvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xs
ZXI6Om9uQWRkU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyOjpvblJlbW92ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcjo6b25TaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290aWF0aW9uU3RhcnRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25OZWdvdGlhdGlvbkRvbmUp
OgorICAgICAgICAqIHBhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpDbGllbnRCYXNlOjppc1BlZXJD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
OjpQZWVyQ29ubmVjdGlvbkNsaWVudDo6UGVlckNvbm5lY3Rpb25DbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50
Ojp+UGVlckNvbm5lY3Rpb25DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50Ojppc1BlZXJDb25uZWN0aW9uKToK
KwogMjAxMS0wOC0wMyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVzZSBhcHByb3ByaWF0ZSBtYWNybyBmb3IgQ1NTUHJvcGVydHlJbWFnZVJl
bmRlcmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaSBi
L1NvdXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQppbmRleCBmMjlmNGY1OWU4ODlhYTkw
NWU4ZWJmOWZhMjUwNTk2Njc1OGJiMTkyLi4yNDk2ZjEyZDZjZDRmNjY2Zjg3M2JiNDY0ZWMwNWEw
NWZhMjBkZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCkBAIC0zMjcsNiArMzI3LDgg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5pZGwgXAogICAgIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbCBcCiAgICAgbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaWRsIFwKKyAgICBwMnAvUGVlckNvbm5lY3Rp
b24uaWRsIFwKKyAgICBwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsIFwKICAgICBwYWdlL0Jhcklu
Zm8uaWRsIFwKICAgICBwYWdlL0NvbnNvbGUuaWRsIFwKICAgICBwYWdlL0Nvb3JkaW5hdGVzLmlk
bCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKaW5kZXggMzFhM2U4MDlkOWQ0MjkyNjNkMTA5
MWJiZmI0MzUwMmUyZmIzNmExMi4uNWRmMzMwZTBmNDQxZmVjNWI5YjMwMjgwNzEyYzMwMjQ3OWFl
OTU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcApAQCAtMjU4LDYgKzI1OCw3IEBACiAj
aW5jbHVkZSAiSlNPcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmNwcCIKICNpbmNsdWRlICJK
U092ZXJmbG93RXZlbnQuY3BwIgogI2luY2x1ZGUgIkpTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAi
CisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5j
ZS5jcHAiCiAjaW5jbHVkZSAiSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIgogI2luY2x1ZGUg
IkpTUGVyZm9ybWFuY2VUaW1pbmcuY3BwIgpAQCAtMjc2LDYgKzI3Nyw3IEBACiAjaW5jbHVkZSAi
SlNTY3JpcHRQcm9maWxlTm9kZS5jcHAiCiAjaW5jbHVkZSAiSlNTaGFyZWRXb3JrZXIuY3BwIgog
I2luY2x1ZGUgIkpTU2hhcmVkV29ya2VyQ29udGV4dC5jcHAiCisjaW5jbHVkZSAiSlNTaWduYWxp
bmdDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNTUUxFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNT
UUxFeGNlcHRpb24uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmNwcCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDYxZWI3ZjU5ZWMwMzkzY2RjMTE1OTEyMmU5NGExZmE3
ZDE3OWYwOTYuLmQ0NDY2MmIyMzRlZDI5Nzg3ZTBhN2M2Nzk2MDk5YTlmYjRmYWY1YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzksNiArMzksNyBAQCBWUEFUSCA9IFwKICAg
ICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJDb3JlKS9sb2FkZXIvYXBwY2FjaGUg
XAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCisgICAgJChXZWJDb3JlKS9wMnAgXAog
ICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3JlKS9wbHVnaW5zIFwKICAgICAkKFdl
YkNvcmUpL3N0b3JhZ2UgXApAQCAtMzMyLDYgKzMzMyw3IEBAIERPTV9DTEFTU0VTID0gXAogICAg
IE9wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24gXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAg
IFBhZ2VUcmFuc2l0aW9uRXZlbnQgXAorICAgIFBlZXJDb25uZWN0aW9uIFwKICAgICBQZXJmb3Jt
YW5jZSBcCiAgICAgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIFwKICAgICBQZXJmb3JtYW5jZVRpbWlu
ZyBcCkBAIC0zNDksNiArMzUxLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgU2hhcmVkV29ya2Vy
Q29udGV4dCBcCiAgICAgU2NyaXB0UHJvZmlsZSBcCiAgICAgU2NyaXB0UHJvZmlsZU5vZGUgXAor
ICAgIFNpZ25hbGluZ0NhbGxiYWNrIFwKICAgICBTcGVlY2hJbnB1dEV2ZW50IFwKICAgICBTcGVl
Y2hJbnB1dFJlc3VsdCBcCiAgICAgU3BlZWNoSW5wdXRSZXN1bHRMaXN0IFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggY2M3NTUzYWZjNDQ4YmNhMjA3MGExY2IyNjBiZWRiNGQyNjRjZGI4Ny4uYjcx
YWYwMDBmZjJjM2ZmY2FiYWNlNWVjNjEwODZiNjI2ZGM3MDA5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KQEAgLTM4LDYgKzM4LDcgQEAgd2ViY29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucyBcCisJ
LUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcDJwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbiBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0gXApAQCAtNzM5LDYgKzc0MCw3
IEBAIElETF9QQVRIIDo9IFwKICAgICAkKFdlYkNvcmUpL2luc3BlY3RvciBcCiAgICAgJChXZWJD
b3JlKS9sb2FkZXIvYXBwY2FjaGUgXAogICAgICQoV2ViQ29yZSkvbm90aWZpY2F0aW9ucyBcCisg
ICAgJChXZWJDb3JlKS9wMnAgXAogICAgICQoV2ViQ29yZSkvcGFnZSBcCiAgICAgJChXZWJDb3Jl
KS9wbHVnaW5zIFwKICAgICAkKFdlYkNvcmUpL3N0b3JhZ2UgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggMGQxNDI4MmM4OTMzMGUwZjYzNzQzMzI3MDAxNmUyZjhmZjE4NWM3MC4u
Njc3ZjhmMDVjYzZjYjY3MGZkZDE2NjMxZmNmMTBjYjM2YzFhNDExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCkBAIC00MTEsNiArNDExLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2Vz
ICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQYWdlVHJhbnNpdGlvbkV2ZW50LmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQZWVyQ29ubmVjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNQZWVyQ29ubmVjdGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFu
Y2UuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVyZm9ybWFuY2UuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAgXApAQCAtNDQ3
LDYgKzQ0OSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1NoYXJlZFdvcmtlckNvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1NoYXJlZFdvcmtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTaGFyZWRX
b3JrZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1NpZ25hbGluZ0NhbGxiYWNrLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNTcGVlY2hJbnB1dEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1NwZWVjaElucHV0RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1NwZWVjaElucHV0UmVzdWx0LmNwcCBcCkBAIC03ODAsNiArNzg0LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rv
ci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3Iu
aCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9u
cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbkN1c3RvbS5jcHAgXApAQCAtMTEyMCw2ICsxMTI1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vRGlzcGF0
Y2hUYXNrLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaCBcCkBAIC0yMTkwLDYgKzIxOTYsOSBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaCBcCisJU291cmNlL1dl
YkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcDJwL1BlZXJD
b25uZWN0aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21h
a2UKaW5kZXggYWI0YjkxM2ZmODg1MWIwYTY5YWEzYjc1NzNkMWYzZGUxZDAyNjc0OS4uZDQzY2Y4
MzEyMGFlNmM3MjdkODRkMzczYzJkNTQ3ODU3ZGFmNzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAt
MTAyLDYgKzEwMiw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdz
L2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUxpc3RD
dXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBi
aW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
UGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbkN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2Rl
Q3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29y
ZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA4NDNi
NDQyZGRlMTg3ZGM2ZGQ1OTZmNWRiYWZkZWNmMzk4ZGQxYWE0Li40ZWU4NGQxNjJkY2QzMzBjZWUx
YmUyOGNjYzUwY2M0MjYwMDE4ZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cApAQCAtMTY4LDYgKzE2OCw3IEBACiAgICAgICAnLi4vbG9hZGVyL2ljb24nLAogICAgICAg
Jy4uL21hdGhtbCcsCiAgICAgICAnLi4vbm90aWZpY2F0aW9ucycsCisgICAgICAnLi4vcDJwJywK
ICAgICAgICcuLi9wYWdlJywKICAgICAgICcuLi9wYWdlL2FuaW1hdGlvbicsCiAgICAgICAnLi4v
cGFnZS9jaHJvbWl1bScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNTVjYjlhODgzNWI0YWQzYjhlZGFl
ZDhmNDliMmI1MmM0ZmI5N2I0ZC4uMDgzNjFiNjRlNDZjYzYyZDEzM2QxZGM5Yjg4MmZhYmZkODI4
ODlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTc1LDYgKzk3NSw3IEBACiAgICAgICAgICAgICAn
ZG9tL0RPTVRpbWVTdGFtcC5oJywKICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb24u
aCcsCiAgICAgICAgICAgICAnZG9tL0RldmljZU9yaWVudGF0aW9uQ2xpZW50LmgnLAorICAgICAg
ICAgICAgJ2RvbS9EaXNwYXRjaFRhc2suaCcsCiAgICAgICAgICAgICAnZG9tL0RvY3VtZW50Lmgn
LAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudEZyYWdtZW50LmgnLAogICAgICAgICAgICAgJ2Rv
bS9Eb2N1bWVudE1hcmtlci5oJywKQEAgLTEzNTcsNiArMTM1OCw4IEBACiAgICAgICAgICAgICAn
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsJywKICAgICAgICAgICAgICdu
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmlkbCcsCisgICAgICAgICAgICAncDJwL1BlZXJDb25uZWN0
aW9uLmlkbCcsCisgICAgICAgICAgICAncDJwL1NpZ25hbGluZ0NhbGxiYWNrLmlkbCcsCiAgICAg
ICAgICAgICAncGFnZS9BYnN0cmFjdFZpZXcuaWRsJywKICAgICAgICAgICAgICdwYWdlL0Jhcklu
Zm8uaWRsJywKICAgICAgICAgICAgICdwYWdlL0NvbnNvbGUuaWRsJywKQEAgLTE4ODAsNiArMTg4
Myw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAnLApAQCAtMjE4
Miw2ICsyMTg2LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25D
ZW50ZXJDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhQZWVy
Q29ubmVjdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4UG9wU3RhdGVFdmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwJywKQEAgLTI4NDYsNiArMjg1MSw5
IEBACiAgICAgICAgICAgICAnbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwJywK
ICAgICAgICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oJywKICAgICAg
ICAgICAgICdub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRlbnRzLmgnLAorICAgICAgICAg
ICAgJ3AycC9QZWVyQ29ubmVjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ3AycC9QZWVyQ29ubmVj
dGlvbi5oJywKKyAgICAgICAgICAgICdwMnAvU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAgICAgICAg
ICAgICAncGFnZS9CYXJJbmZvLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9CYXJJbmZvLmgnLAog
ICAgICAgICAgICAgJ3BhZ2UvQ2FsbGJhY2tUYXNrLmgnLApAQCAtNTI1Nyw2ICs1MjY1LDcgQEAK
ICAgICAgICAgICAgICdkb20vRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgJ2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9t
L0RldmljZU9yaWVudGF0aW9uRXZlbnQuaCcsCisgICAgICAgICAgICAnZG9tL0Rpc3BhdGNoVGFz
ay5oJywKICAgICAgICAgICAgICdkb20vRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTEzODE2YmU3OTYyMTBiNjg1ZGE2MDYw
ODY1YTlhNWQ3NzM2YjAyMi4uYThlM2IyYjk2OGM0NTQyNTIzMWU2MWRjMTQ2ODllNTlkNmQwNzdl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMyNDUsNiArMzI0NSw4IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5o
IFwKICAgICAgICAgZG9tL01lZGlhU3RyZWFtVHJhY2tMaXN0LmggXAogICAgICAgICBkb20vU3Ry
ZWFtRXZlbnQuaCBcCisgICAgICAgIHAycC9QZWVyQ29ubmVjdGlvbi5oIFwKKyAgICAgICAgcDJw
L1NpZ25hbGluZ0NhbGxiYWNrLmggXAogICAgICAgICBwYWdlL0NhbGxiYWNrVGFzay5oIFwKICAg
ICAgICAgcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oIFwKICAgICAgICAgcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaCBcCkBAIC0zMjYwLDEyICszMjYyLDE4IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9NRURJQV9TVFJFQU09MSkgewogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFjay5j
cHAgXAogICAgICAgICBkb20vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwIFwKICAgICAgICAgZG9t
L1N0cmVhbUV2ZW50LmNwcCBcCisgICAgICAgIHAycC9QZWVyQ29ubmVjdGlvbi5jcHAgXAogICAg
ICAgICBwYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAgXAogICAgICAgICBwYWdlL01lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyLmNwcAogCiAgICAgdjggewogICAgICAgICBTT1VSQ0VTICs9
IFwKLSAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAK
KyAgICAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hdmlnYXRvckN1c3RvbS5jcHAgXAor
ICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3Bw
CisgICAgfSBlbHNlIHsKKyAgICAgICAgU09VUkNFUyArPSBcCisgICAgICAgICAgICBiaW5kaW5n
cy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgXAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNQ
ZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYmYzNTZjYjEyZTQzMTk1NjNkMzUxNDVk
ZmEyNjk1ODlmYzFmMWIwMy4uZDljMDM4Yzk4MTBkZTExNzBlMjUyY2FmMjUxMmM1OTgzMzVkYjc1
YyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAg
LTEyMzkwLDYgKzEyMzkwLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNQZWVyQ29ubmVjdGlvbi5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQZWVyQ29ubmVjdGlvbi5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUGVy
Zm9ybWFuY2UuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTEzMjg2LDYg
KzEzMzQyLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlc1xK
U1NpZ25hbGluZ0NhbGxiYWNrLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
PgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJD
b3JlXERlcml2ZWRTb3VyY2VzXEpTU2lnbmFsaW5nQ2FsbGJhY2suaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1NRTEVycm9yLmNwcCIKIAkJCQk+
CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC0yNTE2Nyw2ICsyNTI3OSwyMiBAQAogCQkJPC9G
aWx0ZXI+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1lPSJwMnAiCisJCQk+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccDJwXFBlZXJDb25uZWN0aW9uLmNwcCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccDJwXFBlZXJDb25u
ZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGRvbVxTaWduYWxpbmdDYWxsYmFjay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9InBhZ2UiCiAJCQk+CiAJCQk8RmlsZQpAQCAtNDQ0NzAs
NiArNDQ1OTgsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZG9tXERpc3BhdGNoVGFzay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRG9jdW1lbnQuY3BwIgogCQkJCT4KIAkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KQEAgLTYzMjAxLDYgKzYzMzMzLDU4IEBACiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1BlZXJD
b25uZWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5j
cHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzBmNTgwM2JkMDI1NjZj
Njk5OTMwNzE0OGJkNmIzZTljZWRhNWEyOC4uN2ZhYjg2YWJmNWNlODgzNDlkMTA0Yzg4ZGMyOWI1
MTJlZjU0ZDRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTA5OSw2ICsxMDk5LDcgQEAKIAkJNDZGOUQ1REYwQjBENjAxNzAw
MjhFRTM2IC8qIHByb2dyZXNzQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGOUQ1REMwQjBENjAxNzAwMjhFRTM2IC8qIHByb2dyZXNz
Q3Vyc29yLnBuZyAqLzsgfTsKIAkJNDkwNzA3RTYxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2Vi
S2l0QnJpZGdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi87
IH07CiAJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkwNzA3RTUxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi87IH07CisJCTQ5MEM0N0NFMTNF
ODJEMTgwMEY3QUI4MiAvKiBEaXNwYXRjaFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MEM0N0NEMTNFODJEMTgwMEY3QUI4MiAvKiBEaXNwYXRj
aFRhc2suaCAqLzsgfTsKIAkJNDkyODYzOTkxMjUzQjhGQzAwRjc5MkQ2IC8qIFJlc291cmNlTG9h
ZEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
Mjg2Mzk4MTI1M0I4RkMwMEY3OTJENiAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDkyOTFFNEIxMzQxNzJDODAw
RTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVu
ZGVyaW5nTW9kZS5oICovOyB9OwogCQk0OTNFNUUwOTEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZv
cm1DQUxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0OTNFNUUwODEyRDY0MjA1MDAwMjAwODEgLyogUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEx
NDIsMTAgKzExNDMsMTggQEAKIAkJNDk5QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNz
TGF5ZXJDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OTlCM0VENDEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCAqLzsgfTsK
IAkJNDk5QjNFRDcxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5QjNFRDUxMjhDRDMxNDAw
RTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ5OUIzRUREMTI4REI1MDIwMEU3MjZDMiAvKiBQbGF0Zm9y
bUNBQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTlCM0VEQzEyOERCNTAxMDBFNzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ5QTVBNEZF
MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE1QTRGODEzRTJGMDFFMDBDRkRBRTAgLyog
UGVlckNvbm5lY3Rpb24uY3BwICovOyB9OworCQk0OUE1QTRGRjEzRTJGMDFFMDBDRkRBRTAgLyog
UGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5QTVBNEY5MTNFMkYwMUUwMENGREFFMCAvKiBQZWVyQ29ubmVjdGlvbi5oICovOyB9
OworCQk0OUE1QTUwMTEzRTJGMDFFMDBDRkRBRTAgLyogU2lnbmFsaW5nQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QTVBNEZCMTNFMkYw
MUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovOyB9OwogCQk0OUE4NUI2QjEzOEQ1
NzNBMDBFQ0I3QjMgLyogU3RyZWFtRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBODVCNjgxMzhENTczOTAwRUNCN0IzIC8qIFN0cmVhbUV2
ZW50LmNwcCAqLzsgfTsKIAkJNDlBODVCNkMxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUE4NUI2
OTEzOEQ1NzNBMDBFQ0I3QjMgLyogU3RyZWFtRXZlbnQuaCAqLzsgfTsKIAkJNDlBODVCNzcxMzhE
NThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBODVCNzUxMzhENThFRTAwRUNCN0IzIC8qIEpTU3Ry
ZWFtRXZlbnQuY3BwICovOyB9OwogCQk0OUE4NUI3ODEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJl
YW1FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlBODVCNzYxMzhENThFRTAwRUNCN0IzIC8qIEpTU3RyZWFtRXZlbnQuaCAqLzsgfTsKKwkJNDlC
RTMwRDIxM0Q5NzQ3QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCRTMwRDExM0Q5NzQ3
QjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwICovOyB9OworCQk0OUJFMzBG
MzEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBFRjEzRDk3NjQ2MDAzODA4QTkg
LyogSlNQZWVyQ29ubmVjdGlvbi5jcHAgKi87IH07CisJCTQ5QkUzMEY0MTNEOTc2NDYwMDM4MDhB
OSAvKiBKU1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUJFMzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlv
bi5oICovOyB9OworCQk0OUJFMzBGNTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OUJFMzBGMTEzRDk3NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5jcHAgKi87IH07
CisJCTQ5QkUzMEY2MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJFMzBGMjEzRDk3
NjQ2MDAzODA4QTkgLyogSlNTaWduYWxpbmdDYWxsYmFjay5oICovOyB9OwogCQk0OUM3Qjk5MzEw
NDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUM3Qjk4MDEwNDJEMkQzMDAwOUQ0NDcgLyogSlNX
ZWJHTEJ1ZmZlci5jcHAgKi87IH07CiAJCTQ5QzdCOTk0MTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dl
YkdMQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0OUM3Qjk4MTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTEJ1ZmZlci5oICovOyB9OwogCQk0
OUM3Qjk5NTEwNDJEMkQzMDAwOUQ0NDcgLyogSlNJbnQ4QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlDN0I5ODIxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTSW50OEFycmF5LmNwcCAqLzsgfTsKQEAgLTc2NTIsNiArNzY2MSw3IEBACiAJCTQ2RjlE
NURDMEIwRDYwMTcwMDI4RUUzNiAvKiBwcm9ncmVzc0N1cnNvci5wbmcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSBwcm9n
cmVzc0N1cnNvci5wbmc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJy
aWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTBDNDdDRDEzRTgyRDE4MDBGN0FC
ODIgLyogRGlzcGF0Y2hUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERp
c3BhdGNoVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI4NjM5ODEyNTNC
OEZDMDBGNzkyRDYgLyogUmVzb3VyY2VMb2FkSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZUxvYWRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5M0U1RTA4MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxh
dGZvcm1DQUxheWVyQ2xpZW50Lmg7IHBhdGggPSBjYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MDEsMTEgKzc3MTEsMjEgQEAKIAkJNDk5
QjNFRDQxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHcmFwaGljc0xheWVyQ0EuY3BwOyBwYXRoID0gY2Ev
R3JhcGhpY3NMYXllckNBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5QjNF
RDUxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBHcmFwaGljc0xheWVyQ0EuaDsgcGF0aCA9IGNhL0dyYXBoaWNzTGF5
ZXJDQS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTlCM0VEQzEyOERCNTAxMDBF
NzI2QzIgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQbGF0Zm9ybUNBQW5pbWF0aW9uLmg7IHBhdGggPSBjYS9QbGF0Zm9ybUNBQW5pbWF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QTVBNEY4MTNFMkYwMUUwMENG
REFFMCAvKiBQZWVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBQZWVyQ29ubmVjdGlvbi5jcHA7IHBhdGggPSBwMnAvUGVlckNvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAg
LyogUGVlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGVl
ckNvbm5lY3Rpb24uaDsgcGF0aCA9IHAycC9QZWVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rp
b24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFBlZXJDb25uZWN0aW9uLmlkbDsgcGF0aCA9
IHAycC9QZWVyQ29ubmVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5
QTVBNEZCMTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTaWduYWxpbmdDYWxsYmFjay5oOyBwYXRoID0gcDJwL1Np
Z25hbGluZ0NhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QTVBNEZD
MTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gU2lnbmFsaW5nQ2FsbGJhY2suaWRsOyBwYXRoID0gcDJwL1NpZ25hbGluZ0NhbGxi
YWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNjgxMzhENTczOTAw
RUNCN0IzIC8qIFN0cmVhbUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cmVhbUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlB
ODVCNjkxMzhENTczQTAwRUNCN0IzIC8qIFN0cmVhbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0cmVhbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5QTg1QjZBMTM4RDU3M0EwMEVDQjdCMyAvKiBTdHJlYW1FdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gU3RyZWFtRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OUE4NUI3NTEzOEQ1OEVFMDBFQ0I3QjMgLyogSlNTdHJlYW1FdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmVhbUV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlBODVCNzYxMzhENThFRTAwRUNCN0IzIC8qIEpTU3Ry
ZWFtRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJlYW1FdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OUJFMzBEMTEzRDk3NDdCMDAzODA4
QTkgLyogSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDlCRTMwRUYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTUGVlckNvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQZWVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEYwMTNEOTc2NDYw
MDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUGVlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDlCRTMwRjExM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaWduYWxpbmdDYWxsYmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QkUzMEYyMTNEOTc2NDYwMDM4MDhBOSAv
KiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU2lnbmFsaW5nQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlD
N0I5ODAxMDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xCdWZmZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5QzdCOTgxMTA0MkQyRDMwMDA5RDQ0NyAvKiBKU1dlYkdMQnVmZmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xCdWZmZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlDN0I5ODIxMDQyRDJEMzAwMDlENDQ3IC8qIEpT
SW50OEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50
OEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTA2LDYgKzEyOTI2
LDcgQEAKIAkJCQlCQ0IxNkJGQjA5NzlDMzg3MDA0Njc3NDEgLyogbG9hZGVyICovLAogCQkJCUZB
QkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8sCiAJCQkJMzMzRjcwM0QwRkI0OUMx
NjAwOEUxMkE2IC8qIG5vdGlmaWNhdGlvbnMgKi8sCisJCQkJNDlBNUE0RjYxM0UyRUZFNjAwQ0ZE
QUUwIC8qIHAycCAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLywK
IAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8sCiAJCQkJNURDRjgz
NjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCkBAIC0xNDAzMyw2ICsxNDA1NCwxOCBA
QAogCQkJbmFtZSA9IGNhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNDlB
NUE0RjYxM0UyRUZFNjAwQ0ZEQUUwIC8qIHAycCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJNDlBNUE0RjgxM0UyRjAxRTAwQ0ZEQUUwIC8qIFBlZXJDb25u
ZWN0aW9uLmNwcCAqLywKKwkJCQk0OUE1QTRGOTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5l
Y3Rpb24uaCAqLywKKwkJCQk0OUE1QTRGQTEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rp
b24uaWRsICovLAorCQkJCTQ5QTVBNEZCMTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxs
YmFjay5oICovLAorCQkJCTQ5QTVBNEZDMTNFMkYwMUUwMENGREFFMCAvKiBTaWduYWxpbmdDYWxs
YmFjay5pZGwgKi8sCisJCQkpOworCQkJbmFtZSA9IHAycDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3Mjg3LDYgKzE3
MzIwLDggQEAKIAkJCQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICov
LAogCQkJCTY1REYzMUU5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAqLywKIAkJ
CQk2NURGMzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJCTQ5QkUz
MEVGMTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0OUJF
MzBGMDEzRDk3NjQ2MDAzODA4QTkgLyogSlNQZWVyQ29ubmVjdGlvbi5oICovLAogCQkJCTU5ODM2
NUUzMTM1NUY2MDQwMDFCMTg1RCAvKiBKU1Bvc2l0aW9uQ2FsbGJhY2suY3BwICovLAogCQkJCTU5
ODM2NURDMTM1NUY1M0MwMDFCMTg1RCAvKiBKU1Bvc2l0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlG
RTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLywKQEAgLTE3
Mjk3LDYgKzE3MzMyLDggQEAKIAkJCQk2NURGMzFFQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywKIAkJCQlFNEI0MjM4NTBDQkZCNzNDMDBBRjJFQ0UgLyog
SlNQcm9ncmVzc0V2ZW50LmNwcCAqLywKIAkJCQlFNEI0MjM4NjBDQkZCNzNDMDBBRjJFQ0UgLyog
SlNQcm9ncmVzc0V2ZW50LmggKi8sCisJCQkJNDlCRTMwRjExM0Q5NzY0NjAwMzgwOEE5IC8qIEpT
U2lnbmFsaW5nQ2FsbGJhY2suY3BwICovLAorCQkJCTQ5QkUzMEYyMTNEOTc2NDYwMDM4MDhBOSAv
KiBKU1NpZ25hbGluZ0NhbGxiYWNrLmggKi8sCiAJCQkJNzU0MTVENEYxMjlBQjJEMjAwM0FENjY5
IC8qIEpTU3BlZWNoSW5wdXRFdmVudC5jcHAgKi8sCiAJCQkJNzU0MTVENTAxMjlBQjJEMjAwM0FE
NjY5IC8qIEpTU3BlZWNoSW5wdXRFdmVudC5oICovLAogCQkJCTc1NDE1RDUxMTI5QUIyRDIwMDNB
RDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0LmNwcCAqLywKQEAgLTE4NjQ5LDYgKzE4Njg2LDcg
QEAKIAkJCQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cCAqLywKIAkJCQkxQTc1MEREMzBBOTBFNzI5MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0
b20uY3BwICovLAogCQkJCUJDRDlDMjYxMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3Vz
dG9tLmNwcCAqLywKKwkJCQk0OUJFMzBEMTEzRDk3NDdCMDAzODA4QTkgLyogSlNQZWVyQ29ubmVj
dGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDEyRDUxMjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQk5RkEzN0VFNjExNzJGQ0YwMDBD
NENENTUgLyogSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJNTFEQ0U4MDEw
Q0FDOUYxQzAwNDg4MzU4IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgKi8sCkBA
IC0xOTcyNCw2ICsxOTc2Miw3IEBACiAJCQkJNTlBODVFQTExMTlENjhEOTAwREVGMUVGIC8qIERl
dmljZU9yaWVudGF0aW9uRXZlbnQuY3BwICovLAogCQkJCTU5QTg1RUEzMTE5RDY4RUMwMERFRjFF
RiAvKiBEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmggKi8sCiAJCQkJNTlBODVFQUExMTlEN0I2RTAw
REVGMUVGIC8qIERldmljZU9yaWVudGF0aW9uRXZlbnQuaWRsICovLAorCQkJCTQ5MEM0N0NEMTNF
ODJEMTgwMEY3QUI4MiAvKiBEaXNwYXRjaFRhc2suaCAqLywKIAkJCQlBODE4NUYzNDA5NzY1NzY1
MDA1ODI2RDkgLyogRG9jdW1lbnQuY3BwICovLAogCQkJCUE4MTg1RjM4MDk3NjU3NjUwMDU4MjZE
OSAvKiBEb2N1bWVudC5oICovLAogCQkJCTY1NDhFMjQ4MDlFMUUwNEQwMEFGODAyMCAvKiBEb2N1
bWVudC5pZGwgKi8sCkBAIC0yMTk3NCw2ICsyMjAxMyw3IEBACiAJCQkJQTgyNkU4QUUwQTFBOEYy
MzAwQ0QxQkI2IC8qIEpTT3B0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MEQ1NzQxMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUxMjg0QkIxMTA0NDlGRkEwMEVBRUI1MiAvKiBKU1BhZ2VUcmFuc2l0aW9uRXZlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ5QkUzMEY0MTNEOTc2NDYwMDM4MDhBOSAvKiBKU1BlZXJD
b25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEg
LyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMTk5NCw2ICsyMjAzNCw3IEBACiAJCQkJOUZBMzdFRkQxMTcyRkRBNjAwQzRD
RDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRDA3QTdG
MEZGOTM1Q0EwMDk1RURDRSAvKiBKU1NoYXJlZFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFEMTY5MDYxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVkV29ya2VyQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNDlCRTMwRjYxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDE1RDU2MTI5QUIyRDIwMDNBRDY2OSAvKiBK
U1NwZWVjaElucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc1NDE1RDU4MTI5QUIyRDIw
MDNBRDY2OSAvKiBKU1NwZWVjaElucHV0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQx
NUQ1QTEyOUFCMkQyMDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdExpc3QuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjI0MDcsNiArMjI0NDgsNyBAQAogCQkJCUE4RkE2RTVEMEU0Q0ZERUQwMEQ1
Q0Y0OSAvKiBQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3MTBEMDBCRjIyMDA3
MUI3ODIgLyogUGF0dGVybkF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY1
MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0OUE1QTRGRjEzRTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCThBN0NDOTZCMTIwNzZENzMwMDFENDU4OCAvKiBQZW5kaW5nU2NyaXB0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk4QTg0NEQwNTExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCThBRjRFNTU2MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3Jt
YW5jZU5hdmlnYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI3MDMsNiArMjI3NDUsNyBAQAog
CQkJCTQxRDE2OEU4MTAyMjZFODkwMDlCQzgyNyAvKiBTaGFyZWRXb3JrZXJDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUQxNjhFQTEwMjI2RTg5MDA5QkM4MjcgLyogU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFEMTY4RUUxMDIyNkU4OTAwOUJDODI3
IC8qIFNoYXJlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDlBNUE1MDExM0Uy
RjAxRTAwQ0ZEQUUwIC8qIFNpZ25hbGluZ0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREE2NTBEMDA2Q0Q2MDBFRjZGMjYgLyogU2ltcGxlRm9udERhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxMzI3RDYwMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5RTkxMUNEMEVGODZENDcwMDlEMENBRiAvKiBTa2V3VHJhbnNmb3JtT3Bl
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMjc5LDYgKzIzMzIyLDcgQEAKIAkJCQk1MDhD
Q0E0RjEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDcwQUQ2NTgxM0UxMzQyQjAwNUI1MEI0IC8qIFJlbmRlclJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNBQjQxODIxM0UzNTZFODAwRDhBQUYzIC8qIFJlZ2lvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDkwQzQ3Q0UxM0U4MkQxODAwRjdBQjgyIC8qIERpc3BhdGNoVGFzay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNDk1Myw2ICsyNDk5Nyw4IEBACiAJCQkJQTgyNkVDNDgwQTFCMENC
RTAwQ0QxQkI2IC8qIEpTT3B0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEwRDU3NDAwQTVDNzg2NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTI4NEJCMjEwNDQ5RkZBMDBFQUVCNTIgLyogSlNQYWdlVHJhbnNpdGlvbkV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QkUzMEYzMTNEOTc2NDYwMDM4MDhBOSAvKiBK
U1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5QkUzMEQyMTNEOTc0N0Iw
MDM4MDhBOSAvKiBKU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CThBOUE1ODc0MTFFODRDODEwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCThBOUE1ODcwMTFFODRDMzYwMDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdh
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTlBNTg4NzExRTg0RjM3MDA4QUNGRDEgLyog
SlNQZXJmb3JtYW5jZVRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI0OTc2LDYgKzI1MDIy
LDcgQEAKIAkJCQk0MUQwN0E3RTBGRjkzNUNBMDA5NUVEQ0UgLyogSlNTaGFyZWRXb3JrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFEMTY5MDUxMDIzOEI2NjAwOUJDODI3IC8qIEpTU2hhcmVk
V29ya2VyQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNENEOEQ4MjEwNkI1MjkwMDBB
NDZEMjMgLyogSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlC
RTMwRjUxM0Q5NzY0NjAwMzgwOEE5IC8qIEpTU2lnbmFsaW5nQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzU0MTVENTUxMjlBQjJEMjAwM0FENjY5IC8qIEpTU3BlZWNoSW5wdXRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTQxNUQ1NzEyOUFCMkQyMDAzQUQ2NjkgLyogSlNT
cGVlY2hJbnB1dFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NTQxNUQ1OTEyOUFCMkQy
MDAzQUQ2NjkgLyogSlNTcGVlY2hJbnB1dFJlc3VsdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNTM4Myw2ICsyNTQzMCw3IEBACiAJCQkJQThGQTZFNUUwRTRDRkRFRDAwRDVDRjQ5IC8qIFBh
dHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwQTM4RkUwRTUwQ0M4MjAwQTI1RUJDIC8q
IFBhdHRlcm5DRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2NDBCMDUzODE0MDAyQ0U2
NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0OUE1QTRGRTEz
RTJGMDFFMDBDRkRBRTAgLyogUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OEE3Q0M5NzAxMjA3NkY4QTAwMUQ0NTg4IC8qIFBlbmRpbmdTY3JpcHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOEE4NDREMDQxMUQzQzE4RTAwMTQwNjVDIC8qIFBlcmZvcm1hbmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCThBRjRFNTU1MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5h
dmlnYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDM0MzJkNzQ0
ZjJiZmY4OTVjYzQxMTEyYmQzNzM1ZTAzMGRjNmJlN2IuLjRlODQzNjc4MDA2NWVmMDRmYzMzNzU0
MzBjY2M5ZGU0ZDI5YjQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNDgsNiArMTQ4LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIG1lZGlhU3RyZWFtRW5hYmxlZCgpIHsgcmV0dXJuIGlz
TWVkaWFTdHJlYW1FbmFibGVkOyB9CiAgICAgc3RhdGljIHZvaWQgc2V0TWVkaWFTdHJlYW1FbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTWVkaWFTdHJlYW1FbmFibGVkID0gaXNFbmFibGVkOyB9
CiAgICAgc3RhdGljIGJvb2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCgpIHsgcmV0dXJuIGlz
TWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKFFVT1RBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAKaW5kZXggNTlhOTBiZmNlYmM1ZWQ4NGIyZWQ4ZTJkMTFkNjcyZTdmMzM3ZTQ4
YS4uNWUxNTgxNTIxNjdkNzMxNmRhNTM5NDIxYzI0MjExMTcxZTY4ZjQ3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC0xMjMs
NiArMTIzLDcgQEAKICNpbmNsdWRlICJKU05vZGVJdGVyYXRvckN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNOb2RlTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNPcHRpb25Db25zdHJ1Y3Rvci5j
cHAiCisjaW5jbHVkZSAiSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCIKICNpbmNsdWRlICJKU1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlv
bkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBiYjE3MmUwMTEwZGY5YzE2NDc5MDRhOGVkYzRhMzc5
MmFjMGFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNs
dWRlICJKU1BlZXJDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJK
U0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBlZXJDb25u
ZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1BlZXJDb25uZWN0aW9uQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTUGVlckNvbm5lY3Rpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpT
UGVlckNvbm5lY3Rpb25Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpT
UGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKworICAgIFN0cmlu
ZyBjb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIFJlZlB0cjxTaWduYWxpbmdDYWxs
YmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Np
Z25hbGluZ0NhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGFzSlNET01XaW5kb3coZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpOworICAgIE1lZGlhU3RyZWFtRnJhbWVD
b250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIgPSBmcmFtZSA/IGZyYW1lLT5tZWRpYVN0cmVhbUZy
YW1lQ29udHJvbGxlcigpIDogMDsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNv
bm5lY3Rpb247CisgICAgaWYgKGZyYW1lQ29udHJvbGxlcikKKyAgICAgICAgcGVlckNvbm5lY3Rp
b24gPSBmcmFtZUNvbnRyb2xsZXItPmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24s
IHNpZ25hbGluZ0NhbGxiYWNrKTsKKworICAgIGlmICghcGVlckNvbm5lY3Rpb24pCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3Qo
KSwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCAwMzRkNTQ3NTlkNmZmZGM5Y2NmZTVmN2M3NDhi
ZDRmOWQzMDQzOGM1Li4wODZhM2EyMTk2MWRjMjgwOWEyMDdjZmJhZTdmNTJkMDdlM2RmODFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTY1LDYg
KzY1LDcgQEAKICNpbmNsdWRlICJWOE5vZGVGaWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlICJW
OE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiVjhOb3RpZmljYXRpb24uaCIKKyNpbmNsdWRlICJWOFBl
ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4U2hhcmVk
V29ya2VyLmgiCiAjaW5jbHVkZSAiVjhTaGFyZWRXb3JrZXJDb250ZXh0LmgiCkBAIC00NTQsNiAr
NDU1LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50
VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKIAogICAgIGlmIChNZWRpYVN0cmVhbSog
c3RyZWFtID0gdGFyZ2V0LT50b01lZGlhU3RyZWFtKCkpCiAgICAgICAgIHJldHVybiB0b1Y4KHN0
cmVhbSk7CisKKyAgICBpZiAoUGVlckNvbm5lY3Rpb24qIHBlZXJDb25uZWN0aW9uID0gdGFyZ2V0
LT50b1BlZXJDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiB0b1Y4KHBlZXJDb25uZWN0aW9u
KTsKICNlbmRpZgogCiAgICAgQVNTRVJUKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk4MWNkYTExMzdhMjRhNTBlMzllOTg3ZWYxYWI0OTk1MjZjZDZmMDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZWVyQ29ubmVj
dGlvbkN1c3RvbS5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlY4UGVl
ckNvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtRnJh
bWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTaWduYWxpbmdD
YWxsYmFjay5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOFBlZXJDb25uZWN0aW9uOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uUGVlckNvbm5lY3Rpb24uQ29uc3RydWN0
b3IiKTsKKworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpbnQgYXJnTGVuZ3RoID0g
YXJncy5MZW5ndGgoKTsKKyAgICBpZiAoYXJnTGVuZ3RoICE9IDIpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKCJUaGUgUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgdGFrZXMgdHdvIGFyZ3Vt
ZW50cy4iLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisgICAgdjg6OlRyeUNhdGNoIGV4Y2VwdGlv
bkNhdGNoZXI7CisgICAgU3RyaW5nIGNvbmZpZ3VyYXRpb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXS0+VG9TdHJpbmcoKSk7CisgICAgaWYgKGV4Y2VwdGlvbkNhdGNoZXIuSGFzQ2F1Z2h0KCkp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4Y2VwdGlvbkNhdGNoZXIuRXhjZXB0aW9uKCkp
OworCisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8VjhT
aWduYWxpbmdDYWxsYmFjaz4oYXJnc1sxXSwgc3VjY2VlZGVkKTsKKyAgICBpZiAoIXN1Y2NlZWRl
ZCB8fCAhc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJUaGUg
UGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgbXVzdCBiZSBnaXZlbiBhIFNpZ25hbGluZ0NhbGxi
YWNrIGNhbGxiYWNrLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBGcmFtZSogZnJhbWUg
PSBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yRW50ZXJlZENvbnRleHQoKTsKKyAgICBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyID0gZnJhbWUgPyBmcmFtZS0+bWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIoKSA6IDA7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rp
b24+IHBlZXJDb25uZWN0aW9uOworICAgIGlmIChmcmFtZUNvbnRyb2xsZXIpCisgICAgICAgIHBl
ZXJDb25uZWN0aW9uID0gZnJhbWVDb250cm9sbGVyLT5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25m
aWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjayk7CisKKyAgICBpZiAoIXBlZXJDb25uZWN0aW9u
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZvLCBwZWVyQ29ubmVjdGlvbi5nZXQoKSk7
CisgICAgcmV0dXJuIHRvVjgocGVlckNvbm5lY3Rpb24ucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EaXNwYXRjaFRhc2suaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EaXNwYXRjaFRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDA0M2Y1MmQ0
OTI4N2IzNTg4MjYxNTgzMzQyMzU0OGQ0NWVhNDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0Rpc3BhdGNoVGFzay5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRGlzcGF0Y2hUYXNrX2gKKyNkZWZpbmUgRGlzcGF0Y2hUYXNrX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGJhY2tDbGFzcywgdHlwZW5hbWUgU2ltcGxlRGF0YVR5
cGU+CitjbGFzcyBTaW1wbGVEaXNwYXRjaFRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAgdHlwZWRlZiB2b2lkIChDYWxsYmFja0NsYXNzOjoq
Q2FsbGJhY2spKGNvbnN0IFNpbXBsZURhdGFUeXBlJik7CisKKyAgICBzdGF0aWMgUGFzc093blB0
cjxTaW1wbGVEaXNwYXRjaFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG9i
amVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBkYXRhKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTaW1wbGVEaXNwYXRjaFRhc2sob2JqZWN0
LCBjYWxsYmFjaywgZGF0YSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFz
ayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikKKyAgICB7CisgICAgICAgIChtX29iamVjdC5nZXQo
KS0+Km1fY2FsbGJhY2spKG1fZGF0YSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNpbXBsZURp
c3BhdGNoVGFzayhQYXNzUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG9iamVjdCwgQ2FsbGJhY2sgY2Fs
bGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBkYXRhKQorICAgICAgICA6IG1fb2JqZWN0KG9i
amVjdCkKKyAgICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fZGF0YShk
YXRhKSB7IH0KKworICAgIFJlZlB0cjxDYWxsYmFja0NsYXNzPiBtX29iamVjdDsKKyAgICBDYWxs
YmFjayBtX2NhbGxiYWNrOworICAgIFNpbXBsZURhdGFUeXBlIG1fZGF0YTsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDYWxsYmFja0NsYXNzLCB0eXBlbmFtZSBTaW1wbGVEYXRhVHlwZSwgdHlw
ZW5hbWUgUmVmQ291bnRlZERhdGFUeXBlPgorY2xhc3MgRGlzcGF0Y2hUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgeworcHVibGljOgorICAgIHR5cGVkZWYgdm9pZCAo
Q2FsbGJhY2tDbGFzczo6KkNhbGxiYWNrKShjb25zdCBTaW1wbGVEYXRhVHlwZSYsIFBhc3NSZWZQ
dHI8UmVmQ291bnRlZERhdGFUeXBlPik7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxEaXNwYXRj
aFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPENhbGxiYWNrQ2xhc3M+IG9iamVjdCwgQ2FsbGJhY2sg
Y2FsbGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBhcmcxLCBQYXNzUmVmUHRyPFJlZkNvdW50
ZWREYXRhVHlwZT4gYXJnMikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGlz
cGF0Y2hUYXNrKG9iamVjdCwgY2FsbGJhY2ssIGFyZzEsIGFyZzIpKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCisgICAgewor
ICAgICAgICAobV9vYmplY3QuZ2V0KCktPiptX2NhbGxiYWNrKShtX2FyZzEsIG1fYXJnMik7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIERpc3BhdGNoVGFzayhQYXNzUmVmUHRyPENhbGxiYWNrQ2xh
c3M+IG9iamVjdCwgQ2FsbGJhY2sgY2FsbGJhY2ssIGNvbnN0IFNpbXBsZURhdGFUeXBlJiBhcmcx
LCBQYXNzUmVmUHRyPFJlZkNvdW50ZWREYXRhVHlwZT4gYXJnMikKKyAgICAgICAgOiBtX29iamVj
dChvYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAgICAgLCBtX2Fy
ZzEoYXJnMSkKKyAgICAgICAgLCBtX2FyZzIoYXJnMikgeyB9CisKKyAgICBSZWZQdHI8Q2FsbGJh
Y2tDbGFzcz4gbV9vYmplY3Q7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBTaW1wbGVE
YXRhVHlwZSBtX2FyZzE7CisgICAgUmVmUHRyPFJlZkNvdW50ZWREYXRhVHlwZT4gbV9hcmcyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2VuZGlmIC8vIERpc3BhdGNoVGFza19oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CmluZGV4IDlkZDE4MzcwYTRkZDcxZjllM2M0ZDNiZjcyNDM4ZmJmYWM1MDgyZmUuLmQ4MTIzZTg0
MGE5YTIxZGZhOTAwNzAyYzUwZDAwZTA0N2I1ZmRhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aApAQCAtMTgwLDYgKzE4MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1h
Y3JvKGF1ZGlvcHJvY2VzcykgXAogICAgIFwKKyAgICBtYWNybyhjb25uZWN0aW5nKSBcCisgICAg
bWFjcm8oYWRkc3RyZWFtKSBcCisgICAgbWFjcm8ocmVtb3Zlc3RyZWFtKSBcCisgICAgXAorCiAv
LyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBjbGFzcyBFdmVudE5hbWVz
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IGMyMGIyMWMxM2M4OWIzNmZmYjM4
YWY0MWFjYjlmYmRkYTNjYTg5NjguLjQyYWVhNGFhNWJjNzFiN2JlZjU3NTU3ZmRjYjQ3YTk5ZTk3
YzZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjE2LDYgKzIxNiwxMSBA
QCBMb2NhbE1lZGlhU3RyZWFtKiBFdmVudFRhcmdldDo6dG9Mb2NhbE1lZGlhU3RyZWFtKCkKIHsK
ICAgICByZXR1cm4gMDsKIH0KKworUGVlckNvbm5lY3Rpb24qIEV2ZW50VGFyZ2V0Ojp0b1BlZXJD
b25uZWN0aW9uKCkKK3sKKyAgICByZXR1cm4gMDsKK30KICNlbmRpZgogCiBib29sIEV2ZW50VGFy
Z2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5oCmluZGV4IGJjYzc1OGMzMDM3MTM2MmZlYmMxNzI3Y2I4MjJhOTcxYzVm
YmM0NmYuLjgwZTFhZjVjMjJkMTgwNDI0N2Y2OTBiMjkwZTNlZDY0M2RhZGExOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oCkBAIC01OSw2ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBNZXNzYWdlUG9ydDsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIE5vdGlm
aWNhdGlvbjsKKyAgICBjbGFzcyBQZWVyQ29ubmVjdGlvbjsKICAgICBjbGFzcyBTVkdFbGVtZW50
SW5zdGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBT
aGFyZWRXb3JrZXI7CkBAIC0xNTIsNiArMTUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgICAgIHZpcnR1YWwgTWVkaWFTdHJlYW0qIHRvTWVk
aWFTdHJlYW0oKTsKICAgICAgICAgdmlydHVhbCBMb2NhbE1lZGlhU3RyZWFtKiB0b0xvY2FsTWVk
aWFTdHJlYW0oKTsKKyAgICAgICAgdmlydHVhbCBQZWVyQ29ubmVjdGlvbiogdG9QZWVyQ29ubmVj
dGlvbigpOwogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVy
Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFjYThkMTkwZWFhYmU4Yjg4ZDZkNGUwMGUyYTli
NGJlMGNhYzEwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29u
bmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgIkRpc3BhdGNoVGFzay5oIgorI2luY2x1ZGUgIkVycm9yRXZl
bnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgorI2luY2x1ZGUgIlN0cmVhbUV2ZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVl
ckNvbm5lY3Rpb246OmNyZWF0ZShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250
cm9sbGVyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxT
aWduYWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IFZl
cmlmeSB0aGF0IGNvbmZpZ3VyYXRpb24gZm9sbG93cyB0aGUgc3BlY2lmaWVkIGZvcm1hdCwgaWYg
bm90IHJldHVybiBudWxsLgorCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVj
dGlvbiA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihmcmFtZUNvbnRyb2xsZXIsIGlkLCBj
b25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOworICAgIHBlZXJDb25uZWN0aW9uLT5p
bml0KCk7CisgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnJlbGVhc2UoKTsKK30KKworUGVlckNv
bm5lY3Rpb246OlBlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiBmcmFt
ZUNvbnRyb2xsZXIsIGludCBpZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVm
UHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjaykKKyAgICA6IFBlZXJDb25u
ZWN0aW9uQ2xpZW50KGZyYW1lQ29udHJvbGxlciwgaWQpCisgICAgLCBtX2NvbmZpZ3VyYXRpb24o
Y29uZmlndXJhdGlvbikKKyAgICAsIG1fcmVhZHlTdGF0ZShORVcpCisgICAgLCBtX3NpZ25hbGlu
Z0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIEFTU0VSVChmcmFtZUNvbnRyb2xs
ZXIpOworICAgIG1fbG9jYWxTdHJlYW1MaXN0ID0gTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKTsK
KyAgICBtX3JlbW90ZVN0cmVhbUxpc3QgPSBNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpOworfQor
Cit2b2lkIFBlZXJDb25uZWN0aW9uOjppbml0KCkKK3sKKyAgICBpZiAoTWVkaWFTdHJlYW1GcmFt
ZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciA9IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KCkpCisgICAgICAgIGZyYW1lQ29udHJvbGxlci0+bmV3UGVlckNvbm5lY3Rpb24obV9jbGllbnRJ
ZCwgbV9jb25maWd1cmF0aW9uKTsKKworICAgIHBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpOwor
fQorCitQZWVyQ29ubmVjdGlvbjo6flBlZXJDb25uZWN0aW9uKCkKK3sKK30KKworTWVkaWFTdHJl
YW1MaXN0KiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkKK3sKKyAgICByZXR1cm4gbV9s
b2NhbFN0cmVhbUxpc3QuZ2V0KCk7Cit9CisKK01lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rp
b246OnJlbW90ZVN0cmVhbXMoKQoreworICAgIHJldHVybiBtX3JlbW90ZVN0cmVhbUxpc3QuZ2V0
KCk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5wcm9jZXNzU2lnbmFs
aW5nTWVzc2FnZShtX2NsaWVudElkLCBtZXNzYWdlKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIHV0ZjggPSB0ZXh0LnV0
ZjgoKTsKKyAgICBpZiAodXRmOC5sZW5ndGgoKSA+IGtNYXhNZXNzYWdlVVRGOExlbmd0aCkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpLT5tZXNzYWdlKG1fY2xpZW50SWQsIHRleHQpOworfQorCit2
b2lkIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJw
U3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENM
T1NFRCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gVGhlIFN0cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlz
dCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tpbmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQ
dHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKworICAgIGlmIChtX2xvY2FsU3Ry
ZWFtTGlzdC0+Y29udGFpbnMoc3RyZWFtKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2Nh
bFN0cmVhbUxpc3QtPmFkZChzdHJlYW0pOworCisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPmFkZFN0cmVh
bShtX2NsaWVudElkLCBzdHJlYW0pOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpyZW1vdmVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAobV9yZWFkeVN0YXRlID09IENMT1NFRCkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gVGhlIFN0
cmVhbSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSBTdHJpY3RUeXBlQ2hlY2tp
bmcgaXMgc2V0IGluIHRoZSBpZGwuCisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9
IHBycFN0cmVhbTsKKworICAgIGlmICghbV9sb2NhbFN0cmVhbUxpc3QtPmNvbnRhaW5zKHN0cmVh
bSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxTdHJlYW1MaXN0LT5yZW1vdmUoc3Ry
ZWFtKTsKKworICAgIGlmIChtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBt
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcigpLT5yZW1vdmVTdHJlYW0obV9jbGllbnRJZCwgc3Ry
ZWFtKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcigpKQorICAgICAgICBtZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxl
cigpLT5jbG9zZVBlZXJDb25uZWN0aW9uKG1fY2xpZW50SWQpOworCisgICAgbV9yZWFkeVN0YXRl
ID0gQ0xPU0VEOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpvbk5lZ290aWF0aW9uU3RhcnRl
ZCgpCit7CisgICAgbV9yZWFkeVN0YXRlID0gTkVHT1RJQVRJTkc7CisKKyAgICBwb3N0U2ltcGxl
RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RpbmdFdmVudCk7Cit9CisKK3ZvaWQgUGVlckNvbm5l
Y3Rpb246Om9uTmVnb3RpYXRpb25Eb25lKCkKK3sKKyAgICBtX3JlYWR5U3RhdGUgPSBBQ1RJVkU7
CisKKyAgICBwb3N0U2ltcGxlRXZlbnQoZXZlbnROYW1lcygpLm9wZW5FdmVudCk7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb246OnN0cmVhbUFkZGVkKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHBy
cFN0cmVhbSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsK
KyAgICBtX3JlbW90ZVN0cmVhbUxpc3QtPmFkZChzdHJlYW0pOworICAgIHBvc3RTdHJlYW1BZGRl
ZEV2ZW50KHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OnN0cmVhbVJlbW92ZWQo
Y29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1M
aXN0LT5jb250YWlucyhzdHJlYW1MYWJlbCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBz
dHJlYW0gPSBtX3JlbW90ZVN0cmVhbUxpc3QtPmdldChzdHJlYW1MYWJlbCk7CisgICAgbV9yZW1v
dGVTdHJlYW1MaXN0LT5yZW1vdmUoc3RyZWFtKTsKKyAgICBwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50
KHN0cmVhbSk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246Om9uTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2VFdmVudChtZXNzYWdlKTsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjo6b25TaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBwb3N0U2lnbmFsaW5nRXZlbnQobWVzc2FnZSk7Cit9CisKK1BlZXJDb25uZWN0
aW9uKiBQZWVyQ29ubmVjdGlvbjo6dG9QZWVyQ29ubmVjdGlvbigpCit7CisgICAgcmV0dXJuIHRo
aXM7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFBlZXJDb25uZWN0aW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWVkaWFTdHJlYW1GcmFtZUNv
bnRyb2xsZXIoKSA/IG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSA6IDA7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUGVlckNvbm5lY3Rpb246OmV2
ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwor
RXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkK
K3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit2b2lkIFBlZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUobWVzc2FnZSk7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgY29udGV4
dC0+cG9zdFRhc2soRGlzcGF0Y2hUYXNrPFBlZXJDb25uZWN0aW9uLCBpbnQsIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2Fn
ZUV2ZW50LCAwLCBkYXRhLnJlbGVhc2UoKSkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpw
b3N0U2lnbmFsaW5nRXZlbnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
aWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29u
dGV4dFRocmVhZCgpKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhTaW1wbGVEaXNwYXRjaFRhc2s8
UGVlckNvbm5lY3Rpb24sIFN0cmluZz46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRp
c3BhdGNoU2lnbmFsaW5nRXZlbnQsIG1lc3NhZ2UpKTsKK30KKwordm9pZCBQZWVyQ29ubmVjdGlv
bjo6cG9zdFN0cmVhbUFkZGVkRXZlbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFt
KQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgQVNT
RVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnBvc3RUYXNrKERpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgU3RyaW5nLCBNZWRp
YVN0cmVhbT46OmNyZWF0ZSh0aGlzLCAmUGVlckNvbm5lY3Rpb246OmRpc3BhdGNoU3RyZWFtRXZl
bnQsIGV2ZW50TmFtZXMoKS5hZGRzdHJlYW1FdmVudCwgcHJwU3RyZWFtKSk7Cit9CisKK3ZvaWQg
UGVlckNvbm5lY3Rpb246OnBvc3RTdHJlYW1SZW1vdmVkRXZlbnQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4gcHJwU3RyZWFtKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb250
ZXh0LT5wb3N0VGFzayhEaXNwYXRjaFRhc2s8UGVlckNvbm5lY3Rpb24sIFN0cmluZywgTWVkaWFT
dHJlYW0+OjpjcmVhdGUodGhpcywgJlBlZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0cmVhbUV2ZW50
LCBldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIHBycFN0cmVhbSkpOworfQorCit2b2lk
IFBlZXJDb25uZWN0aW9uOjpwb3N0U2ltcGxlRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
Cit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NF
UlQoY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKFNp
bXBsZURpc3BhdGNoVGFzazxQZWVyQ29ubmVjdGlvbiwgU3RyaW5nPjo6Y3JlYXRlKHRoaXMsICZQ
ZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTaW1wbGVFdmVudCwgZXZlbnROYW1lKSk7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb246OnBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpCit7CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoY29udGV4dC0+
aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKFNpbXBsZURpc3BhdGNo
VGFzazxQZWVyQ29ubmVjdGlvbiwgaW50Pjo6Y3JlYXRlKHRoaXMsICZQZWVyQ29ubmVjdGlvbjo6
ZGlzcGF0Y2hTdGFydE5lZ290aWF0aW9uVGFzaywgMCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0
aW9uOjpkaXNwYXRjaE1lc3NhZ2VFdmVudChjb25zdCBpbnQmLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gZGF0YSkKK3sKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkID0gZGF0YTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRBcnJheT4oKSwgZCkpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9u
OjpkaXNwYXRjaFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBt
X3NpZ25hbGluZ0NhbGxiYWNrLT5oYW5kbGVFdmVudChtZXNzYWdlLCB0aGlzKTsKK30KKwordm9p
ZCBQZWVyQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTdHJlYW1FdmVudChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJl
YW0+IHMgPSBzdHJlYW07CisgICAgZGlzcGF0Y2hFdmVudChTdHJlYW1FdmVudDo6Y3JlYXRlKG5h
bWUsIGZhbHNlLCBmYWxzZSwgcykpOworfQorCit2b2lkIFBlZXJDb25uZWN0aW9uOjpkaXNwYXRj
aFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQoreworICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWUsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIFBl
ZXJDb25uZWN0aW9uOjpkaXNwYXRjaFN0YXJ0TmVnb3RpYXRpb25UYXNrKGNvbnN0IGludCYpCit7
CisgICAgaWYgKG1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCkpCisgICAgICAgIG1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKCktPnN0YXJ0TmVnb3RpYXRpb24obV9jbGllbnRJZCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZDE2NWIwMjMxM2Zm
YmJlYzY1NjI5ZThlYzJmMmYwN2YwOWUwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wMnAvUGVlckNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIFBlZXJDb25uZWN0aW9uX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVkaWFTdHJlYW1MaXN0OworY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2Ns
YXNzIFNpZ25hbGluZ0NhbGxiYWNrOworCitjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgTWVk
aWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6OlBlZXJDb25uZWN0aW9uQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICAvLyBOYW1lIGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0aGUgY29ycmVz
c3BvbmRpbmcgY29uc3RhbnRzIGluIHRoZSAuaWRsIGZpbGUuCisgICAgZW51bSB7CisgICAgICAg
IE5FVyA9IDAsCisgICAgICAgIE5FR09USUFUSU5HID0gMSwKKyAgICAgICAgQUNUSVZFID0gMiwK
KyAgICAgICAgQ0xPU0VEID0gMworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQZWVy
Q29ubmVjdGlvbj4gY3JlYXRlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGlkLCBj
b25zdCBTdHJpbmcmIGNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+
KTsKKyAgICB2aXJ0dWFsIH5QZWVyQ29ubmVjdGlvbigpOworCisgICAgTWVkaWFTdHJlYW1MaXN0
KiBsb2NhbFN0cmVhbXMoKTsKKyAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVhbXMoKTsK
KworICAgIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5
U3RhdGU7IH0KKworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYg
dGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgYWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZW1vdmVTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsb3NlKEV4Y2Vw
dGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVj
dGluZyk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOworICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoYWRkc3RyZWFtKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVhbSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZp
cnR1YWwgUGVlckNvbm5lY3Rpb24qIHRvUGVlckNvbm5lY3Rpb24oKTsKKworICAgIC8vIEV2ZW50
VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgLy8gQ2FsbGJhY2tzCisg
ICAgdm9pZCBvbk1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG9uU2ln
bmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25OZWdvdGlh
dGlvblN0YXJ0ZWQoKTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25Eb25lKCk7CisgICAgdm9pZCBz
dHJlYW1BZGRlZChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7CisgICAgdm9pZCBzdHJlYW1SZW1v
dmVkKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxQ
ZWVyQ29ubmVjdGlvbj46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9u
Pjo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICAvLyBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlv
bi4KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOworCitwcml2
YXRlOgorICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga01heE1lc3NhZ2VVVEY4TGVuZ3RoID0gNTA0
OworCisgICAgUGVlckNvbm5lY3Rpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQg
aWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxs
YmFjaz4pOworICAgIHZvaWQgaW5pdCgpOworCisgICAgdm9pZCBwb3N0U2ltcGxlRXZlbnQoY29u
c3QgU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgcG9zdE1lc3NhZ2VFdmVudChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgcG9zdFNpZ25hbGluZ0V2ZW50KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdm9pZCBwb3N0U3RyZWFtQWRkZWRFdmVudChQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPik7CisgICAgdm9pZCBwb3N0U3RyZWFtUmVtb3ZlZEV2ZW50KFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHBvc3RTdGFydE5lZ290aWF0aW9uVGFzaygpOworCisg
ICAgdm9pZCBkaXNwYXRjaFNpbXBsZUV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKKyAg
ICB2b2lkIGRpc3BhdGNoTWVzc2FnZUV2ZW50KGNvbnN0IGludCYsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKTsKKyAgICB2b2lkIGRpc3BhdGNoU2lnbmFsaW5nRXZlbnQo
Y29uc3QgU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgZGlzcGF0Y2hTdHJlYW1FdmVudChj
b25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIGRp
c3BhdGNoU3RhcnROZWdvdGlhdGlvblRhc2soY29uc3QgaW50Jik7CisKKyAgICAvLyBFdmVudFRh
cmdldCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7
IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7
IH0KKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIFN0cmlu
ZyBtX2NvbmZpZ3VyYXRpb247CisgICAgdW5zaWduZWQgc2hvcnQgbV9yZWFkeVN0YXRlOworICAg
IFJlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4gbV9zaWduYWxpbmdDYWxsYmFjazsKKyAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1MaXN0PiBtX2xvY2FsU3RyZWFtTGlzdDsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1MaXN0PiBtX3JlbW90ZVN0cmVhbUxpc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUGVlckNv
bm5lY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcDJwL1BlZXJDb25uZWN0aW9u
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmM5YTE5ZGIwYTU5YzUwYjEzYzdmMGFhOTIzMTNhYWYyYTEzZDk0MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3AycC9QZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHAycCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIENhbkJlQ29uc3RydWN0ZWQsCisg
ICAgICAgIEN1c3RvbUNvbnN0cnVjdEZ1bmN0aW9uLAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFt
ZXRlcnM9MiwKKyAgICAgICAgVjhDdXN0b21Db25zdHJ1Y3RvciwKKyAgICAgICAgRXZlbnRUYXJn
ZXQKKyAgICBdIFBlZXJDb25uZWN0aW9uIHsKKyAgICAgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5n
TWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVyA9IDA7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFUSU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgQUNUSVZFID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0xP
U0VEID0gMzsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5
U3RhdGU7CisKKyAgICAgICAgdm9pZCBzZW5kKGluIERPTVN0cmluZyB0ZXh0KQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZv
aWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSkKKyAgICAgICAgICAgIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2b2lkIHJlbW92ZVN0
cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IGxvY2Fs
U3RyZWFtczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtTGlzdCByZW1v
dGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKQorICAgICAgICAgICAgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb25uZWN0
aW5nOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47CisgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25hZGRzdHJlYW07CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
cmVtb3Zlc3RyZWFtOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAg
ICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW29wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAg
ICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW29wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisg
ICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5oIGIvU291cmNlL1dlYkNv
cmUvcDJwL1NpZ25hbGluZ0NhbGxiYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRhMzBlNzEyNjc1NGE1MWMz
MjhiMjg3NDc2MjYwYWJkOGZjNGI4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3AycC9TaWduYWxpbmdDYWxsYmFjay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU2lnbmFsaW5nQ2FsbGJhY2tfaAorI2RlZmluZSBTaWduYWxpbmdDYWxsYmFja19o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQZWVyQ29ubmVjdGlvbjsKKworY2xh
c3MgU2lnbmFsaW5nQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTaWduYWxpbmdDYWxsYmFj
az4geworcHVibGljOgorICAgIHZpcnR1YWwgflNpZ25hbGluZ0NhbGxiYWNrKCkgeyB9CisgICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KGNvbnN0IFN0cmluZyYsIFBlZXJDb25uZWN0aW9uKikg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFNpZ25hbGluZ0NhbGxiYWNrX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3AycC9TaWduYWxpbmdDYWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMzJmY2YwZWM3ZGM1MjQ4
ZTA0MTY4ZDdmNjFjZDk0ZTY5YTg4YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wMnAvU2lnbmFsaW5nQ2FsbGJhY2suaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK21vZHVsZSBwMnAgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLAorICAgICAgICBDYWxsYmFjaz1GdW5jdGlvbk9ubHkKKyAgICBdIFNpZ25h
bGluZ0NhbGxiYWNrIHsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBET01TdHJpbmcg
bWVzc2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICB9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKaW5kZXggMGYzMTYyZjFkNzgxYzExM2M5N2VjNGQ0Zjk3M2VkYjMz
ZDk1NmU3MS4uNWUzOTIxZmZlYjM1YzE4NTdmZmNiMWM0NTEyNzk2YjQ4MTk1ODVmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmlkbApAQCAtMzM3LDYgKzMzNyw4IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPURFVklDRV9PUklFTlRBVElPTixFbmFi
bGVkQXRSdW50aW1lXSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q29uc3RydWN0b3IgRGV2aWNlT3Jp
ZW50YXRpb25FdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1ERVZJQ0VfT1JJ
RU5UQVRJT04sRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbmRldmljZW9yaWVudGF0
aW9uOwogCisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLEVuYWJs
ZWRBdFJ1bnRpbWVdIFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IgUGVlckNvbm5lY3Rpb247CisK
ICAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgICAgIFtDdXN0b21dIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVkaWFTdHJlYW1DbGllbnQuaAppbmRleCAwM2RlZGZkODhjNGZkMzE4YTc4MDMxNjVh
ZDE5MTE5ZWNmY2I1Y2M5Li43YWMyZjA3ZTk1Y2NkYjQyOWQxYmMyMjk1YTkyZjlhYWRjOGYxMWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNsaWVudC5oCkBAIC00MywxOCArNDMs
MjEgQEAgdHlwZWRlZiB1bnNpZ25lZCBHZW5lcmF0ZVN0cmVhbU9wdGlvbkZsYWdzOwogCiBjbGFz
cyBNZWRpYVN0cmVhbUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgLy8gTm90aWZ5IHRoZSBlbWJlZGRl
ciBjbGllbnQgYWJvdXQgdGhlIHBhZ2UgY29udHJvbGxlciBiZWluZyBkZXN0cm95ZWQuCisgICAg
Ly8gTWVkaWFTdHJlYW0gZnVuY3Rpb25zLgogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVN0cmVhbURl
c3Ryb3llZCgpID0gMDsKLQotICAgIC8vIEdlbmVyYXRlIGEgbmV3IGxvY2FsIHN0cmVhbS4KICAg
ICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVTdHJlYW0oaW50IHJlcXVlc3RJZCwgR2VuZXJhdGVTdHJl
YW1PcHRpb25GbGFncywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pID0gMDsKLQotICAgIC8v
IFN0b3AgYSBnZW5lcmF0ZWQgc3RyZWFtLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wR2VuZXJhdGVk
U3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpID0gMDsKLQotICAgIC8vIEVuYWJsZS9k
aXNhYmxlIGFuIHRyYWNrLgogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVN0cmVhbVRyYWNrRW5h
YmxlZChjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGJvb2wgZW5hYmxlZCkgPSAwOwogCisgICAgLy8g
UGVlckNvbm5lY3Rpb24gZnVuY3Rpb25zLgorICAgIHZpcnR1YWwgdm9pZCBuZXdQZWVyQ29ubmVj
dGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TmVnb3RpYXRpb24oaW50IHBlZXJDb25uZWN0aW9u
SWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoaW50IHBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBtZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0
cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBlZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlv
bklkKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUNsaWVudCgp
IHsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVyLmNw
cAppbmRleCBhYWRjZjYwZjI3MzVhNGVhNzM1YzFhODk0NTQ3ZWM2ZDgwOWMzMWFkLi41ZjYwNGVj
Y2MwYjA3MTNmYmMwZTM4NTRhMWYzMjA5ZjdkY2MxYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFRoaXMgaXMgdXNlZCBmb3IgaG9sZGluZyBsaXN0
IG9mIFBlZXJDb25uZWN0aW9uIGFzIHdlbGwsCisvLyBzbyByZW5hbWUgY2xhc3MgaXMgaW4gb3Jk
ZXIuCiBjbGFzcyBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OlJlcXVlc3QgewogcHVibGljOgogICAg
IFJlcXVlc3QoKQpAQCAtNTUsNiArNTcsNyBAQCBwcml2YXRlOgogTWVkaWFTdHJlYW1Db250cm9s
bGVyOjpNZWRpYVN0cmVhbUNvbnRyb2xsZXIoTWVkaWFTdHJlYW1DbGllbnQqIGNsaWVudCkKICAg
ICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fbmV4dEdsb2JhbFJlcXVlc3RJZCgxKQorICAg
ICwgbV9uZXh0R2xvYmFsUGVlckNvbm5lY3Rpb25JZCgxKQogewogfQogCkBAIC04OSw2ICs5Miw4
IEBAIHZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjp1bnJlZ2lzdGVyRnJhbWVDb250cm9sbGVy
KE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyCiAKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpp
dGVyYXRvciBpdCA9IGZyYW1lU3RyZWFtcy5iZWdpbigpOyBpdCAhPSBmcmFtZVN0cmVhbXMuZW5k
KCk7ICsraXQpCiAgICAgICAgIG1fc3RyZWFtcy5yZW1vdmUoKml0KTsKKworICAgIC8vIEZJWE1F
OiBBZGQgdW5yZWdpc3RlciBmdW5jdGlvbmFsaXR5IGZvciBwZWVyIGNvbm5lY3Rpb24gb2JqZWN0
cy4KIH0KIAogaW50IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVnaXN0ZXJSZXF1ZXN0KGludCBs
b2NhbElkLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciogZnJhbWVDb250cm9sbGVyKQpAQCAt
MTUyLDYgKzE1NywxMzAgQEAgdm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0cmVhbUZhaWxl
ZChjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQogICAgICAgICBtX3N0cmVhbXMuZ2V0KHN0cmVh
bUxhYmVsKS0+c3RyZWFtRmFpbGVkKHN0cmVhbUxhYmVsKTsKIH0KIAordm9pZCBNZWRpYVN0cmVh
bUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2lu
Y2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQuCisgICAgaWYg
KG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkg
eworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rp
b25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVy
Q29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZy
YW1lQ29udHJvbGxlcigpLT5vblNpZ25hbGluZ01lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJ
ZCgpLCBtZXNzYWdlKTsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpm
cmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZy
YW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgaW50JiBwYWdlUGVlckNv
bm5lY3Rpb25JZCkKK3sKKyAgICBwYWdlUGVlckNvbm5lY3Rpb25JZCA9IC0xOworICAgIC8vIEZJ
WE1FOiBJcyB0aGVyZSBhIGJldHRlciB3YXkgdG8gZmluZCB0aGUgZ2xvYmFsIElEIGluIHRoZSBt
YXA/CisgICAgZm9yIChSZXF1ZXN0TWFwOjppdGVyYXRvciBpdCA9IG1fcGVlckNvbm5lY3Rpb25z
LmJlZ2luKCk7IGl0ICE9IG1fcGVlckNvbm5lY3Rpb25zLmVuZCgpOyArK2l0KSB7CisgICAgICAg
IGlmIChpdC0+c2Vjb25kLmZyYW1lQ29udHJvbGxlcigpID09IGZyYW1lQ29udHJvbGxlciAmJiBp
dC0+c2Vjb25kLmxvY2FsSWQoKSA9PSBmcmFtZVBlZXJDb25uZWN0aW9uSWQpIHsKKyAgICAgICAg
ICAgIHBhZ2VQZWVyQ29ubmVjdGlvbklkID0gaXQtPmZpcnN0OworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtQ29udHJvbGxlcjo6cHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25J
ZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGludCBwYWdlUGVlckNvbm5lY3Rpb25J
ZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklkKGZyYW1lQ29udHJvbGxlciwg
ZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVlckNvbm5lY3Rpb25JZCkpCisgICAgICAgIG1f
Y2xpZW50LT5wcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVz
c2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjptZXNzYWdlKE1lZGlhU3Ry
ZWFtRnJhbWVDb250cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0
aW9uSWQ7CisgICAgaWYgKGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xs
ZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgcGFnZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAg
ICBtX2NsaWVudC0+bWVzc2FnZShwYWdlUGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisK
K3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbk1lc3NhZ2UoaW50IGNvbnRyb2xsZXJQZWVy
Q29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gRG9uJ3QgYXNz
ZXJ0IHNpbmNlIHRoZSBmcmFtZSBjb250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisg
ICAgaWYgKG1fcGVlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlv
bklkKSkgeworICAgICAgICBjb25zdCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNv
bm5lY3Rpb25zLmdldChjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VS
VChwZWVyQ29ubmVjdGlvbi5mcmFtZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0
aW9uLmZyYW1lQ29udHJvbGxlcigpLT5vbk1lc3NhZ2UocGVlckNvbm5lY3Rpb24ubG9jYWxJZCgp
LCBtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjphZGRT
dHJlYW0oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZy
YW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCkKK3sKKyAgICBp
bnQgcGFnZVBlZXJDb25uZWN0aW9uSWQ7CisgICAgaWYgKGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rp
b25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgcGFnZVBlZXJDb25u
ZWN0aW9uSWQpKQorICAgICAgICBtX2NsaWVudC0+YWRkU3RyZWFtKHBhZ2VQZWVyQ29ubmVjdGlv
bklkLCBzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Db250cm9sbGVyOjpvbkFk
ZFN0cmVhbShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3Ry
ZWFtTGFiZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcykKK3sKKyAg
ICAvLyBEb24ndCBhc3NlcnQgc2luY2UgdGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVl
biBkZXN0cm95ZWQKKyAgICBpZiAobV9wZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxl
clBlZXJDb25uZWN0aW9uSWQpKSB7CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0
aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsK
KyAgICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAg
ICAgcGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uQWRkU3RyZWFtKHBlZXJDb25u
ZWN0aW9uLmxvY2FsSWQoKSwgc3RyZWFtTGFiZWwsIHRyYWNrcyk7CisgICAgfQorfQorCit2b2lk
IE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250
cm9sbGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0
IFN0cmluZyYgc3RyZWFtTGFiZWwpCit7CisgICAgaW50IHBhZ2VQZWVyQ29ubmVjdGlvbklkOwor
ICAgIGlmIChmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoZnJhbWVDb250cm9sbGVyLCBmcmFt
ZVBlZXJDb25uZWN0aW9uSWQsIHBhZ2VQZWVyQ29ubmVjdGlvbklkKSkKKyAgICAgICAgbV9jbGll
bnQtPnJlbW92ZVN0cmVhbShwYWdlUGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtTGFiZWwpOworfQor
Cit2b2lkIE1lZGlhU3RyZWFtQ29udHJvbGxlcjo6b25SZW1vdmVTdHJlYW0oaW50IGNvbnRyb2xs
ZXJQZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsKQoreworICAgIC8v
IERvbid0IGFzc2VydCBzaW5jZSB0aGUgZnJhbWUgY29udHJvbGxlciBjYW4gaGF2ZSBiZWVuIGRl
c3Ryb3llZAorICAgIGlmIChtX3BlZXJDb25uZWN0aW9ucy5jb250YWlucyhjb250cm9sbGVyUGVl
ckNvbm5lY3Rpb25JZCkpIHsKKyAgICAgICAgLy8gVE9ETzogQmV0dGVyIG5hbWUgb2YgcGVlckNv
bm5lY3Rpb24gdmFyaWFibGU/CisgICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9u
ID0gbV9wZWVyQ29ubmVjdGlvbnMuZ2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAg
ICAgICAgQVNTRVJUKHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAg
cGVlckNvbm5lY3Rpb24uZnJhbWVDb250cm9sbGVyKCktPm9uUmVtb3ZlU3RyZWFtKHBlZXJDb25u
ZWN0aW9uLmxvY2FsSWQoKSwgc3RyZWFtTGFiZWwpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0
cmVhbUNvbnRyb2xsZXI6Om5ld1BlZXJDb25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9s
bGVyKiBmcmFtZUNvbnRyb2xsZXIsIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0
cmluZyYgY29uZmlndXJhdGlvbikKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQgPSBt
X25leHRHbG9iYWxQZWVyQ29ubmVjdGlvbklkKys7CisgICAgbV9wZWVyQ29ubmVjdGlvbnMuYWRk
KHBhZ2VQZWVyQ29ubmVjdGlvbklkLCBSZXF1ZXN0KGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgZnJh
bWVDb250cm9sbGVyKSk7CisKKyAgICBtX2NsaWVudC0+bmV3UGVlckNvbm5lY3Rpb24ocGFnZVBl
ZXJDb25uZWN0aW9uSWQsIGNvbmZpZ3VyYXRpb24pOworfQorCit2b2lkIE1lZGlhU3RyZWFtQ29u
dHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciog
ZnJhbWVDb250cm9sbGVyLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkKQoreworICAgIGludCBw
YWdlUGVlckNvbm5lY3Rpb25JZDsKKyAgICBpZiAoZnJhbWVUb1BhZ2VQZWVyQ29ubmVjdGlvbklk
KGZyYW1lQ29udHJvbGxlciwgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBwYWdlUGVlckNvbm5lY3Rp
b25JZCkpCisgICAgICAgIG1fY2xpZW50LT5jbG9zZVBlZXJDb25uZWN0aW9uKHBhZ2VQZWVyQ29u
bmVjdGlvbklkKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6OnN0YXJ0TmVnb3Rp
YXRpb24oTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxlciwgaW50IGZy
YW1lUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICBpbnQgcGFnZVBlZXJDb25uZWN0aW9uSWQ7Cisg
ICAgaWYgKGZyYW1lVG9QYWdlUGVlckNvbm5lY3Rpb25JZChmcmFtZUNvbnRyb2xsZXIsIGZyYW1l
UGVlckNvbm5lY3Rpb25JZCwgcGFnZVBlZXJDb25uZWN0aW9uSWQpKQorICAgICAgICBtX2NsaWVu
dC0+c3RhcnROZWdvdGlhdGlvbihwYWdlUGVlckNvbm5lY3Rpb25JZCk7Cit9CisKK3ZvaWQgTWVk
aWFTdHJlYW1Db250cm9sbGVyOjpvbk5lZ290aWF0aW9uU3RhcnRlZChpbnQgY29udHJvbGxlclBl
ZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gRG9uJ3QgYXNzZXJ0IHNpbmNlIHRoZSBmcmFtZSBj
b250cm9sbGVyIGNhbiBoYXZlIGJlZW4gZGVzdHJveWVkCisgICAgaWYgKG1fcGVlckNvbm5lY3Rp
b25zLmNvbnRhaW5zKGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKSkgeworICAgICAgICBjb25z
dCBSZXF1ZXN0JiBwZWVyQ29ubmVjdGlvbiA9IG1fcGVlckNvbm5lY3Rpb25zLmdldChjb250cm9s
bGVyUGVlckNvbm5lY3Rpb25JZCk7CisgICAgICAgIEFTU0VSVChwZWVyQ29ubmVjdGlvbi5mcmFt
ZUNvbnRyb2xsZXIoKSk7CisgICAgICAgIHBlZXJDb25uZWN0aW9uLmZyYW1lQ29udHJvbGxlcigp
LT5vbk5lZ290aWF0aW9uU3RhcnRlZChwZWVyQ29ubmVjdGlvbi5sb2NhbElkKCkpOworICAgIH0K
K30KKwordm9pZCBNZWRpYVN0cmVhbUNvbnRyb2xsZXI6Om9uTmVnb3RpYXRpb25Eb25lKGludCBj
b250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBEb24ndCBhc3NlcnQgc2luY2Ug
dGhlIGZyYW1lIGNvbnRyb2xsZXIgY2FuIGhhdmUgYmVlbiBkZXN0cm95ZWQKKyAgICBpZiAobV9w
ZWVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQpKSB7Cisg
ICAgICAgIGNvbnN0IFJlcXVlc3QmIHBlZXJDb25uZWN0aW9uID0gbV9wZWVyQ29ubmVjdGlvbnMu
Z2V0KGNvbnRyb2xsZXJQZWVyQ29ubmVjdGlvbklkKTsKKyAgICAgICAgQVNTRVJUKHBlZXJDb25u
ZWN0aW9uLmZyYW1lQ29udHJvbGxlcigpKTsKKyAgICAgICAgcGVlckNvbm5lY3Rpb24uZnJhbWVD
b250cm9sbGVyKCktPm9uTmVnb3RpYXRpb25Eb25lKHBlZXJDb25uZWN0aW9uLmxvY2FsSWQoKSk7
CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVh
bUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1Db250cm9sbGVy
LmgKaW5kZXggMTBhYzRjZWYxMWM5M2NmZmQxOTQ2MjJmNDc2Mzc2OTY1MmQzYWIxMC4uNTU1MzU4
N2VjMzc2MWRlM2IxMDQ4NzE0YWQxYzVkODkwNTYzMTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9NZWRpYVN0cmVhbUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lZGlhU3RyZWFtQ29udHJvbGxlci5oCkBAIC02MCwxOSArNjAsNDAgQEAgcHVibGljOgog
ICAgIHZvaWQgc3RyZWFtR2VuZXJhdGlvbkZhaWxlZChpbnQgcmVxdWVzdElkLCBOYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvcjo6RXJyb3JDb2RlKTsKICAgICB2b2lkIHN0cmVhbUZhaWxlZChjb25zdCBT
dHJpbmcmIHN0cmVhbUxhYmVsKTsKIAorICAgIC8qIEpTIC0+IFVBICovCisgICAgdm9pZCBuZXdQ
ZWVyQ29ubmVjdGlvbihNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJD
b25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgY29uZmlndXJhdGlvbik7CisgICAgdm9pZCBzdGFy
dE5lZ290aWF0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNv
bm5lY3Rpb25JZCk7CisgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CisgICAgdm9pZCBtZXNzYWdlKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
KiwgaW50IGZyYW1lUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAg
ICB2b2lkIGFkZFN0cmVhbShNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlciosIGludCBmcmFtZVBl
ZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOworICAgIHZvaWQgcmVt
b3ZlU3RyZWFtKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5l
Y3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJlbCk7CisgICAgdm9pZCBjbG9zZVBlZXJD
b25uZWN0aW9uKE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKiwgaW50IGZyYW1lUGVlckNvbm5l
Y3Rpb25JZCk7CisKKyAgICAvKiBVQSAtPiBKUyAqLworICAgIHZvaWQgb25TaWduYWxpbmdNZXNz
YWdlKGludCBjb250cm9sbGVyUGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKKyAgICB2b2lkIG9uTWVzc2FnZShpbnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBvbkFkZFN0cmVhbShpbnQgY29udHJvbGxl
clBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwsIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcyk7CisgICAgdm9pZCBvblJlbW92ZVN0cmVhbShp
bnQgY29udHJvbGxlclBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwp
OworICAgIHZvaWQgb25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IGNvbnRyb2xsZXJQZWVyQ29ubmVj
dGlvbklkKTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25Eb25lKGludCBjb250cm9sbGVyUGVlckNv
bm5lY3Rpb25JZCk7CisKIHByaXZhdGU6CiAgICAgaW50IHJlZ2lzdGVyUmVxdWVzdChpbnQgbG9j
YWxSZXF1ZXN0SWQsIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKik7CiAgICAgdm9pZCByZWdp
c3RlclN0cmVhbShjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBNZWRpYVN0cmVhbUZyYW1lQ29u
dHJvbGxlciopOwogCisgICAgYm9vbCBmcmFtZVRvUGFnZVBlZXJDb25uZWN0aW9uSWQoTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXIqLCBpbnQgZnJhbWVQZWVyQ29ubmVjdGlvbklkLCBpbnQmIHBh
Z2VQZWVyQ29ubmVjdGlvbklkKTsKKwogICAgIGNsYXNzIFJlcXVlc3Q7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludCwgUmVxdWVzdD4gUmVxdWVzdE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcio+IFN0cmVhbU1hcDsKIAogICAgIFJlcXVl
c3RNYXAgbV9yZXF1ZXN0czsKICAgICBTdHJlYW1NYXAgbV9zdHJlYW1zOworICAgIFJlcXVlc3RN
YXAgbV9wZWVyQ29ubmVjdGlvbnM7CiAKICAgICBNZWRpYVN0cmVhbUNsaWVudCogbV9jbGllbnQ7
CiAgICAgaW50IG1fbmV4dEdsb2JhbFJlcXVlc3RJZDsKKyAgICBpbnQgbV9uZXh0R2xvYmFsUGVl
ckNvbm5lY3Rpb25JZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKaW5kZXggOTIw
NTMzOGQwMDc3Y2IzZDE2YjFiYzFhOGQ5ZTBjOWU2Y2U0ZTMzOS4uOWI2NzkyYWNiOGVhODFlYWVl
NGViYTFmODc4ZjNlOTg0ZmE3ZGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5jcHAKQEAgLTM2LDcgKzM2LDkgQEAKICNpbmNsdWRl
ICJOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9y
VXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlBlZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRl
ICJTaWduYWxpbmdDYWxsYmFjay5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDYgKzUxLDcgQEAgcHVibGljOgogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNHZW5lcmF0ZVN0
cmVhbVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c1JlY29yZGVkRGF0YVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1NpZ25hbGluZ1JlcXVlc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogCkBAIC0zNjAsNiArMzYzLDEyNiBAQCB2b2lk
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpzdHJlYW1GYWlsZWQoY29uc3QgU3RyaW5nJiBs
YWJlbCkKICAgICBnZXRTdHJlYW1Gcm9tTGFiZWwobGFiZWwpLT5zdHJlYW1FbmRlZCgpOwogfQog
CitQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
Y3JlYXRlUGVlckNvbm5lY3Rpb24oY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uLCBQYXNzUmVm
UHRyPFNpZ25hbGluZ0NhbGxiYWNrPiBzaWduYWxpbmdDYWxsYmFjaykKK3sKKyAgICBpbnQgY2xp
ZW50SWQgPSBtX2NsaWVudHMuZ2V0TmV4dElkKCk7CisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9u
PiBwZWVyQ29ubmVjdGlvbiA9IFBlZXJDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgY2xpZW50SWQs
IGNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKTsKKyAgICBpZiAocGVlckNvbm5lY3Rp
b24pCisgICAgICAgIG1fY2xpZW50cy5hZGQoY2xpZW50SWQsIHBlZXJDb25uZWN0aW9uLmdldCgp
KTsKKyAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlh
U3RyZWFtRnJhbWVDb250cm9sbGVyOjpuZXdQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rp
b25JZCwgY29uc3QgU3RyaW5nJiBjb25maWd1cmF0aW9uKQoreworICAgIGlmIChwYWdlQ29udHJv
bGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5uZXdQZWVyQ29ubmVjdGlvbih0aGlz
LCBwZWVyQ29ubmVjdGlvbklkLCBjb25maWd1cmF0aW9uKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bUZyYW1lQ29udHJvbGxlcjo6Y2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25J
ZCkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIo
KS0+Y2xvc2VQZWVyQ29ubmVjdGlvbih0aGlzLCBwZWVyQ29ubmVjdGlvbklkKTsKK30KKwordm9p
ZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6c3RhcnROZWdvdGlhdGlvbihpbnQgcGVlckNv
bm5lY3Rpb25JZCkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNv
bnRyb2xsZXIoKS0+c3RhcnROZWdvdGlhdGlvbih0aGlzLCBwZWVyQ29ubmVjdGlvbklkKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6cHJvY2Vzc1NpZ25hbGluZ01lc3Nh
Z2UoaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBp
ZiAocGFnZUNvbnRyb2xsZXIoKSkKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+cHJvY2Vzc1Np
Z25hbGluZ01lc3NhZ2UodGhpcywgcGVlckNvbm5lY3Rpb25JZCwgbWVzc2FnZSk7Cit9CisKK3Zv
aWQgTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXI6Om1lc3NhZ2UoaW50IHBlZXJDb25uZWN0aW9u
SWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAocGFnZUNvbnRyb2xsZXIoKSkK
KyAgICAgICAgcGFnZUNvbnRyb2xsZXIoKS0+bWVzc2FnZSh0aGlzLCBwZWVyQ29ubmVjdGlvbklk
LCBtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6YWRkU3Ry
ZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBwcnBTdHJl
YW0pCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBwcnBTdHJlYW07CisgICAg
QVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhzdHJlYW0tPmxhYmVsKCkpKTsKKworICAgIGlmIChw
YWdlQ29udHJvbGxlcigpKQorICAgICAgICBwYWdlQ29udHJvbGxlcigpLT5hZGRTdHJlYW0odGhp
cywgcGVlckNvbm5lY3Rpb25JZCwgc3RyZWFtLT5sYWJlbCgpKTsKK30KKwordm9pZCBNZWRpYVN0
cmVhbUZyYW1lQ29udHJvbGxlcjo6cmVtb3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBwcnBTdHJlYW0pCit7CisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBzdHJlYW0gPSBwcnBTdHJlYW07CisgICAgQVNTRVJUKG1fc3RyZWFtcy5jb250YWlucyhz
dHJlYW0tPmxhYmVsKCkpKTsKKworICAgIGlmIChwYWdlQ29udHJvbGxlcigpKQorICAgICAgICBw
YWdlQ29udHJvbGxlcigpLT5yZW1vdmVTdHJlYW0odGhpcywgcGVlckNvbm5lY3Rpb25JZCwgc3Ry
ZWFtLT5sYWJlbCgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6b25N
ZXNzYWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNT
RVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7
CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nh
c3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKwor
ICAgIHBlZXJDb25uZWN0aW9uLT5vbk1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK3ZvaWQgTWVkaWFT
dHJlYW1GcmFtZUNvbnRyb2xsZXI6Om9uQWRkU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBj
b25zdCBTdHJpbmcmIHN0cmVhbUxhYmVsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0
PiB0cmFja3MpCit7CisgICAgQVNTRVJUKCFzdHJlYW1MYWJlbC5pc0VtcHR5KCkpOworICAgIEFT
U0VSVChtX2NsaWVudHMuY29udGFpbnMocGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVCht
X2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKHRoaXMs
IHN0cmVhbUxhYmVsLCB0cmFja3MpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBwZWVy
Q29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRzLmdldChw
ZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPnN0cmVhbUFkZGVkKHN0cmVh
bS5yZWxlYXNlKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvblJl
bW92ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgY29uc3QgU3RyaW5nJiBzdHJlYW1MYWJl
bCkKK3sKKyAgICBBU1NFUlQoIXN0cmVhbUxhYmVsLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1f
Y2xpZW50cy5jb250YWlucyhwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50
cy5nZXQocGVlckNvbm5lY3Rpb25JZCktPmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQ
dHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5l
Y3Rpb24qPihtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0aW9uSWQpKTsKKyAgICBwZWVyQ29ubmVj
dGlvbi0+c3RyZWFtUmVtb3ZlZChzdHJlYW1MYWJlbCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1G
cmFtZUNvbnRyb2xsZXI6Om9uU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMo
cGVlckNvbm5lY3Rpb25JZCkpOworICAgIEFTU0VSVChtX2NsaWVudHMuZ2V0KHBlZXJDb25uZWN0
aW9uSWQpLT5pc1BlZXJDb25uZWN0aW9uKCkpOworCisgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9u
PiBwZWVyQ29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFBlZXJDb25uZWN0aW9uKj4obV9jbGllbnRz
LmdldChwZWVyQ29ubmVjdGlvbklkKSk7CisgICAgcGVlckNvbm5lY3Rpb24tPm9uU2lnbmFsaW5n
TWVzc2FnZShtZXNzYWdlKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcjo6
b25OZWdvdGlhdGlvblN0YXJ0ZWQoaW50IHBlZXJDb25uZWN0aW9uSWQpCit7CisgICAgLy8gRklY
TUU6IEFzc2VydCBvciBub3Q/CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucyhwZWVyQ29u
bmVjdGlvbklkKSk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25JZCkt
PmlzUGVlckNvbm5lY3Rpb24oKSk7CisKKyAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJD
b25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UGVlckNvbm5lY3Rpb24qPihtX2NsaWVudHMuZ2V0KHBl
ZXJDb25uZWN0aW9uSWQpKTsKKworICAgIHBlZXJDb25uZWN0aW9uLT5vbk5lZ290aWF0aW9uU3Rh
cnRlZCgpOworfQorCit2b2lkIE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyOjpvbk5lZ290aWF0
aW9uRG9uZShpbnQgcGVlckNvbm5lY3Rpb25JZCkKK3sKKyAgICAvLyBGSVhNRTogQXNzZXJ0IG9y
IG5vdD8KKyAgICBBU1NFUlQobV9jbGllbnRzLmNvbnRhaW5zKHBlZXJDb25uZWN0aW9uSWQpKTsK
KyAgICBBU1NFUlQobV9jbGllbnRzLmdldChwZWVyQ29ubmVjdGlvbklkKS0+aXNQZWVyQ29ubmVj
dGlvbigpKTsKKworICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gcGVlckNvbm5lY3Rpb24gPSBz
dGF0aWNfY2FzdDxQZWVyQ29ubmVjdGlvbio+KG1fY2xpZW50cy5nZXQocGVlckNvbm5lY3Rpb25J
ZCkpOworCisgICAgcGVlckNvbm5lY3Rpb24tPm9uTmVnb3RpYXRpb25Eb25lKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyLmgKaW5k
ZXggYjU1ZTBkMDVhYTc5YjM5MDc5MTYxYzI0NTQyMDdhMGU5ODdiNzI1MC4uZTUxNDcyNWFjNjUw
M2Y0OThjZTMyZTcwOGE4YjRlNWIyYTRlNjE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9NZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIuaApAQCAtNDUsOCArNDUsMTAgQEAgY2xhc3Mg
TWVkaWFTdHJlYW1UcmFja0xpc3Q7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrOwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwogY2xhc3MgUGFn
ZTsKK2NsYXNzIFBlZXJDb25uZWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2lnbmFsaW5nQ2FsbGJhY2s7CiAKIGNsYXNz
IE1lZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShN
ZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcik7CkBAIC02OSw2ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGlzTWVkaWFTdHJlYW0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhbE1lZGlhU3RyZWFtKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzR2VuZXJpY0NsaWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1BlZXJDb25uZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUg
ZnJhbWUgY29udHJvbGxlciBpcyBiZWluZyBkaXNjb25uZWN0ZWQgdG8gdGhlIE1lZGlhU3RyZWFt
Q2xpZW50IGVtYmVkZGVyLgogICAgICAgICAvLyBDbGllbnRzIHNob3VsZCBvdmVycmlkZSB0aGlz
IHRvIHNlbmQgYW55IHJlcXVpcmVkIHNodXRkb3duIG1lc3NhZ2VzLgpAQCAtMTM3LDYgKzE0MCwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyKCkgeyB1bnJlZ2lz
dGVyQ2xpZW50KHRoaXMpOyB9CiAgICAgfTsKIAorICAgIGNsYXNzIFBlZXJDb25uZWN0aW9uQ2xp
ZW50IDogcHVibGljIEdlbmVyaWNDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGVlckNv
bm5lY3Rpb25DbGllbnQoTWVkaWFTdHJlYW1GcmFtZUNvbnRyb2xsZXIqIGZyYW1lQ29udHJvbGxl
ciwgaW50IGlkKSA6IEdlbmVyaWNDbGllbnQoZnJhbWVDb250cm9sbGVyLCBpZCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgflBlZXJDb25uZWN0aW9uQ2xpZW50KCkgeyB9CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1BlZXJDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIH07CisK
ICAgICBNZWRpYVN0cmVhbUZyYW1lQ29udHJvbGxlcihGcmFtZSopOwogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtRnJhbWVDb250cm9sbGVyKCk7CiAKQEAgLTE0OCwyOSArMTU4LDMzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwogICAgIHZvaWQgdHJhbnNmZXJUb05ld1Bh
Z2UoUGFnZSopOwogCi0gICAgLy8gUGFyc2UgdGhlIG9wdGlvbnMgc3RyaW5nIHByb3ZpZGVkIHRv
IHRoZSBnZW5lcmF0ZVN0cmVhbSBtZXRob2QuCiAgICAgc3RhdGljIEdlbmVyYXRlU3RyZWFtT3B0
aW9uRmxhZ3MgcGFyc2VHZW5lcmF0ZVN0cmVhbU9wdGlvbnMoY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICAvLyBDcmVhdGUgYSBuZXcgZ2VuZXJhdGVkIHN0cmVhbSBhc3luY2hyb25vdXNseSB3aXRoIHRo
ZSBwcm92aWRlZCBvcHRpb25zLgogICAgIHZvaWQgZ2VuZXJhdGVTdHJlYW0oY29uc3QgU3RyaW5n
JiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNv
ZGUmKTsKLQotICAgIC8vIFN0b3AgYSBsb2NhbCBtZWRpYSBzdHJlYW0uCiAgICAgdm9pZCBzdG9w
R2VuZXJhdGVkU3RyZWFtKGNvbnN0IFN0cmluZyYgc3RyZWFtTGFiZWwpOwotCi0gICAgLy8gRW5h
YmxlL2Rpc2FibGUgYW4gdHJhY2suCiAgICAgdm9pZCBzZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxl
ZChjb25zdCBTdHJpbmcmIHRyYWNrSWQsIGJvb2wgZW5hYmxlZCk7CiAKKyAgICBQYXNzUmVmUHRy
PFBlZXJDb25uZWN0aW9uPiBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25zdCBTdHJpbmcmIGNvbmZp
Z3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsKKyAgICB2b2lkIG5ld1Bl
ZXJDb25uZWN0aW9uKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIGNvbmZpZ3Vy
YXRpb24pOworICAgIHZvaWQgc3RhcnROZWdvdGlhdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCk7
CisgICAgdm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbnQgcGVlckNvbm5lY3Rpb25JZCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIG1lc3NhZ2UoaW50IHBlZXJDb25uZWN0
aW9uSWQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBhZGRTdHJlYW0oaW50IHBl
ZXJDb25uZWN0aW9uSWQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICB2b2lkIHJlbW92
ZVN0cmVhbShpbnQgcGVlckNvbm5lY3Rpb25JZCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOwor
ICAgIHZvaWQgY2xvc2VQZWVyQ29ubmVjdGlvbihpbnQgcGVlckNvbm5lY3Rpb25JZCk7CisKICAg
ICAvLyAtLS0gQ2FsbHMgY29taW5nIGJhY2sgZnJvbSB0aGUgY29udHJvbGxlci4gLS0tIC8vCiAK
LSAgICAvLyBSZXBvcnQgdGhlIGdlbmVyYXRpb24gb2YgYSBuZXcgbG9jYWwgc3RyZWFtLgogICAg
IHZvaWQgc3RyZWFtR2VuZXJhdGVkKGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrcyk7Ci0KLSAgICAv
LyBSZXBvcnQgYSBmYWlsdXJlIGluIHRoZSBnZW5lcmF0aW9uIG9mIGEgbmV3IHN0cmVhbS4KICAg
ICB2b2lkIHN0cmVhbUdlbmVyYXRpb25GYWlsZWQoaW50IHJlcXVlc3RJZCwgTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3I6OkVycm9yQ29kZSk7Ci0KLSAgICAvLyBSZXBvcnQgdGhlIGVuZCBvZiBhIHN0
cmVhbSBmb3IgZXh0ZXJuYWwgcmVhc29ucy4KICAgICB2b2lkIHN0cmVhbUZhaWxlZChjb25zdCBT
dHJpbmcmIHN0cmVhbUxhYmVsKTsKIAorICAgIHZvaWQgb25TaWduYWxpbmdNZXNzYWdlKGludCBw
ZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgb25NZXNz
YWdlKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgb25BZGRTdHJlYW0oaW50IHBlZXJDb25uZWN0aW9uSWQsIGNvbnN0IFN0cmluZyYgc3RyZWFt
TGFiZWwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+KTsKKyAgICB2b2lkIG9uUmVt
b3ZlU3RyZWFtKGludCBwZWVyQ29ubmVjdGlvbklkLCBjb25zdCBTdHJpbmcmIHN0cmVhbUxhYmVs
KTsKKyAgICB2b2lkIG9uTmVnb3RpYXRpb25TdGFydGVkKGludCBwZWVyQ29ubmVjdGlvbklkKTsK
KyAgICB2b2lkIG9uTmVnb3RpYXRpb25Eb25lKGludCBwZWVyQ29ubmVjdGlvbklkKTsKKwogcHJp
dmF0ZToKICAgICBjbGFzcyBSZXF1ZXN0OwogICAgIGNsYXNzIEdlbmVyYXRlU3RyZWFtUmVxdWVz
dDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>