<?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>69834</bug_id>
          
          <creation_ts>2011-10-11 06:32:09 -0700</creation_ts>
          <short_desc>[GStreamer] WebAudio AudioFileReader implementation</short_desc>
          <delta_ts>2012-01-17 01:04:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61355</blocked>
    
    <blocked>69835</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>crogers</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>dw.im</cc>
    
    <cc>mrobinson</cc>
    
    <cc>s.choi</cc>
    
    <cc>s.choi</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481603</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-11 06:32:09 -0700</bug_when>
    <thetext>A pipeline needs to be setup to decode memory chunks (using giostreamsrc) and files using filesrc.

filesrc ! decodebin2 ! deinterleave ! queue ! appsink
                                    ! queue ! appsink

Individual channel data has to be stored in float arrays and an AudioBus is created from this. For now we should support only one or 2 channels, like the Chromium implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481609</commentid>
    <comment_count>1</comment_count>
      <attachid>110510</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-11 06:52:16 -0700</bug_when>
    <thetext>Created attachment 110510
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481650</commentid>
    <comment_count>2</comment_count>
      <attachid>110510</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-11 08:50:45 -0700</bug_when>
    <thetext>Comment on attachment 110510
WebAudio GStreamer implementation: step 1

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

Nice. Below are some initial comments. I have not yet been able to look at the way you are setting up your pipeline in detail, but perhaps sometime later you can walk me through it. I have tried not to Martinize too intensely!

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:27
&gt; +#include &quot;AudioDestinationGStreamer.h&quot;
&gt; +
&gt; +#include &quot;AudioChannel.h&quot;
&gt; +#include &quot;AudioSourceProvider.h&quot;
&gt; +#include &quot;GOwnPtr.h&quot;

This should be one block of headers.

&gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:38
&gt; +    return 44100.0;

Omit the final .0 here.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:35
&gt; +#include &quot;AudioBus.h&quot;
&gt; +#include &quot;AudioFileReader.h&quot;
&gt; +#include &quot;GOwnPtr.h&quot;
&gt; +#include &quot;GRefPtr.h&quot;
&gt; +
&gt; +#include &lt;gio/gio.h&gt;
&gt; +#include &lt;gst/app/gstappsink.h&gt;
&gt; +#include &lt;gst/audio/multichannel.h&gt;
&gt; +#include &lt;gst/base/gstbytereader.h&gt;
&gt; +#include &lt;gst/pbutils/pbutils.h&gt;

Clump these together.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:37
&gt; +#define WEBAUDIO_GST_CAPS_TEMPLATE &quot;audio/x-raw-float, rate=(int)%d, channels=(int)%d, endianness=(int)%d, width=(int)32&quot;

String constants like this are typically defined as static const char*.  Since it&apos;s only used in getGStreamerAudioCaps it would be better to have it in the body of that method too.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:43
&gt; +#if G_BYTE_ORDER == G_LITTLE_ENDIAN
&gt; +#define _webaudio_gst_byte_reader_get_float gst_byte_reader_get_float32_le
&gt; +#else
&gt; +#define _webaudio_gst_byte_reader_get_float gst_byte_reader_get_float32_be
&gt; +#endif

Instead of doing it this way, I prefer something like:

static inline bool getFloatFromByteReader(GstByteReader *reader, float *val)
{
#if G_BYTE_ORDER == G_LITTLE_ENDIAN

#else

#endif
}


&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:56
&gt; +    gpointer buf = g_malloc0(size);
&gt; +    float* current = (float*) buf;

I think you can avoid this allocation (see below). If not, please use the WTF allocator here instead of the GLib one and a C++ cast.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:62
&gt; +    while (_webaudio_gst_byte_reader_get_float(byteReader, &amp;value))
&gt; +        *current++ = (float) value;
&gt; +    gst_byte_reader_free(byteReader);

You shouldn&apos;t need to cast between float and gfloat. In fact, it might be better to use float here to begin with.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:69
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    reader-&gt;handleEndOfStream();

Might as well make this just one line. Alternatively, just accept an AudioFileReader as an argument. I&apos;m almost certain you only need a static_cast here.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:75
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    return reader-&gt;handleBuffer(sink);

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:81
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    return reader-&gt;handleMessage(message);

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:88
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    reader-&gt;handleNewDeinterleavePad(pad);
&gt; +}

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:94
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    reader-&gt;deinterleavePadsConfigured();
&gt; +}

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:99
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    reader-&gt;plugDeinterleave(pad);

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:105
&gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; +    reader-&gt;start();

Ditto.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:169
&gt; +    const GValue* value = gst_structure_get_value(structure, &quot;channel-positions&quot;);

Might want to give this a more descrptive name like channelPositionsValue. I had to look back to figure out what it was.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:173
&gt; +    if (channels &amp;&amp; value &amp;&amp; gst_value_is_fixed(value)) {

Is this an error situation? You don&apos;t return GST_FLOW_ERROR in the else case.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:180
&gt; +            mergedBuffer = gst_buffer_join(m_bufferFrontLeft, buffer);
&gt; +            m_bufferFrontLeft = gst_buffer_ref(mergedBuffer);

Why not just do m_bufferFrontLeft = gst_buffer_ref(gst_buffer_join(m_bufferFrontLeft, buffer)); and dispsense with mergedBuffer altogether?

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:215
&gt; +    gchar* padName = gst_pad_get_name(pad);

I recommend a GOwnPtr here.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:233
&gt; +    gst_object_unref(GST_OBJECT(sinkPad));

Please use GRefPtr in these cases.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:252
&gt; +    GstElement* audioconvert  = gst_element_factory_make(&quot;audioconvert&quot;, 0);
&gt; +    GstElement* audioresample = gst_element_factory_make(&quot;audioresample&quot;, 0);
&gt; +    GstElement* capsfilter = gst_element_factory_make(&quot;capsfilter&quot;, 0);
&gt; +    GstElement* deinterleave = gst_element_factory_make(&quot;deinterleave&quot;, &quot;deinterleave&quot;);

Please use camelCase for these names.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:258
&gt; +    g_object_set(capsfilter, &quot;caps&quot;, getGStreamerAudioCaps(2, m_sampleRate), NULL);

Does gst_caps_from_string return a newly-allocated GstCaps? If so, isn&apos;t this a memory leak?

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:313
&gt; +    GOwnPtr&lt;GError&gt; error;
&gt; +    gstInitialized = gst_init_check(0, 0, &amp;error.outPtr());
&gt; +    if (!gstInitialized)
&gt; +        return nullptr;

Will this interact nicely with the version of this in MediaPlayerPrivateGStreamer.cpp? Nice use of nullptr!

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:316
&gt; +    // properly dispatch its messages to our end.

Nit: dispatches

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; +    m_context = g_main_context_new();
&gt; +    g_main_context_push_thread_default(m_context);
&gt; +    m_loop = g_main_loop_new(m_context, FALSE);

I guess this blocks the main loop. :(

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:327
&gt; +    g_source_set_callback(timeoutSource, (GSourceFunc) enteredMainLoopCallback, this, 0);

Please use reinterpret_cast instead of a C style cast.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:333
&gt; +    guint size = GST_BUFFER_SIZE(m_bufferFrontLeft);

We try not to use the simple Glib wrappers for C types that are local. Thus this can be unsigned.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:344
&gt; +    float* bufferLeft = getGStreamerAudioData(m_bufferFrontLeft, size);
&gt; +    float* bufferRight = getGStreamerAudioData(m_bufferFrontRight, size);
&gt; +
&gt; +    memcpy(audioBus-&gt;channel(0)-&gt;data(), bufferLeft, size);
&gt; +    if (!mixToMono)
&gt; +        memcpy(audioBus-&gt;channel(1)-&gt;data(), bufferRight, size);
&gt; +

I think here you should pass (audioBus-&gt;channel(0)-&gt;data() directly to getGStreamerAudioData and avoid a memory copy and duplicate allocation entirely.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:360
&gt; +    AudioFileReader* reader = new AudioFileReader(filePath);
&gt; +    return reader-&gt;createBus(sampleRate, mixToMono);

Aren&apos;t you leaking the reader here? Why not just stack allocate it?

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:366
&gt; +    AudioFileReader* reader = new AudioFileReader(data, dataSize);
&gt; +    return reader-&gt;createBus(sampleRate, mixToMono);

Ditto. This factory seems to be unused currently...

&gt; Source/WebCore/platform/audio/gtk/AudioBusGtk.cpp:37
&gt; +    return createBusFromAudioFile(absoluteFilename.get(), false, sampleRate);

You only use the createBusFromAudioFile in one place and it&apos;s just two lines. I think it&apos;s clearer to just put the code here, unless you plan to use it a lot in followup patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483048</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 01:03:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 110510 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110510&amp;action=review
&gt; 
&gt; Nice. Below are some initial comments. I have not yet been able to look at the way you are setting up your pipeline in detail, but perhaps sometime later you can walk me through it. I have tried not to Martinize too intensely!
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:27
&gt; &gt; +#include &quot;AudioDestinationGStreamer.h&quot;
&gt; &gt; +
&gt; &gt; +#include &quot;AudioChannel.h&quot;
&gt; &gt; +#include &quot;AudioSourceProvider.h&quot;
&gt; &gt; +#include &quot;GOwnPtr.h&quot;
&gt; 
&gt; This should be one block of headers.
&gt; 

Hum. nop! If I do that the style-bot complains:
Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:23:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:38
&gt; &gt; +    return 44100.0;
&gt; 
&gt; Omit the final .0 here.
&gt; 

Ok

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:35
&gt; &gt; +#include &quot;AudioBus.h&quot;
&gt; &gt; +#include &quot;AudioFileReader.h&quot;
&gt; &gt; +#include &quot;GOwnPtr.h&quot;
&gt; &gt; +#include &quot;GRefPtr.h&quot;
&gt; &gt; +
&gt; &gt; +#include &lt;gio/gio.h&gt;
&gt; &gt; +#include &lt;gst/app/gstappsink.h&gt;
&gt; &gt; +#include &lt;gst/audio/multichannel.h&gt;
&gt; &gt; +#include &lt;gst/base/gstbytereader.h&gt;
&gt; &gt; +#include &lt;gst/pbutils/pbutils.h&gt;
&gt; 
&gt; Clump these together.
&gt; 

Ok

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:37
&gt; &gt; +#define WEBAUDIO_GST_CAPS_TEMPLATE &quot;audio/x-raw-float, rate=(int)%d, channels=(int)%d, endianness=(int)%d, width=(int)32&quot;
&gt; 
&gt; String constants like this are typically defined as static const char*.  Since it&apos;s only used in getGStreamerAudioCaps it would be better to have it in the body of that method too.
&gt; 

Ok!

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:43
&gt; &gt; +#if G_BYTE_ORDER == G_LITTLE_ENDIAN
&gt; &gt; +#define _webaudio_gst_byte_reader_get_float gst_byte_reader_get_float32_le
&gt; &gt; +#else
&gt; &gt; +#define _webaudio_gst_byte_reader_get_float gst_byte_reader_get_float32_be
&gt; &gt; +#endif
&gt; 
&gt; Instead of doing it this way, I prefer something like:
&gt; 
&gt; static inline bool getFloatFromByteReader(GstByteReader *reader, float *val)
&gt; {
&gt; #if G_BYTE_ORDER == G_LITTLE_ENDIAN
&gt; 
&gt; #else
&gt; 
&gt; #endif
&gt; }
&gt; 

Looks cleaner indeed :)

&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:56
&gt; &gt; +    gpointer buf = g_malloc0(size);
&gt; &gt; +    float* current = (float*) buf;
&gt; 
&gt; I think you can avoid this allocation (see below). If not, please use the WTF allocator here instead of the GLib one and a C++ cast.
&gt; 

Oh yes! Seems indeed the allocation can be avoided.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:62
&gt; &gt; +    while (_webaudio_gst_byte_reader_get_float(byteReader, &amp;value))
&gt; &gt; +        *current++ = (float) value;
&gt; &gt; +    gst_byte_reader_free(byteReader);
&gt; 
&gt; You shouldn&apos;t need to cast between float and gfloat. In fact, it might be better to use float here to begin with.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:69
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    reader-&gt;handleEndOfStream();
&gt; 
&gt; Might as well make this just one line. Alternatively, just accept an AudioFileReader as an argument. I&apos;m almost certain you only need a static_cast here.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:75
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    return reader-&gt;handleBuffer(sink);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:81
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    return reader-&gt;handleMessage(message);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:88
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    reader-&gt;handleNewDeinterleavePad(pad);
&gt; &gt; +}
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:94
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    reader-&gt;deinterleavePadsConfigured();
&gt; &gt; +}
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:99
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    reader-&gt;plugDeinterleave(pad);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:105
&gt; &gt; +    AudioFileReader* reader = reinterpret_cast&lt;AudioFileReader*&gt;(userData);
&gt; &gt; +    reader-&gt;start();
&gt; 
&gt; Ditto.
&gt; 

Ok

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:169
&gt; &gt; +    const GValue* value = gst_structure_get_value(structure, &quot;channel-positions&quot;);
&gt; 
&gt; Might want to give this a more descrptive name like channelPositionsValue. I had to look back to figure out what it was.
&gt; 

Yep :)

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:173
&gt; &gt; +    if (channels &amp;&amp; value &amp;&amp; gst_value_is_fixed(value)) {
&gt; 
&gt; Is this an error situation? You don&apos;t return GST_FLOW_ERROR in the else case.
&gt; 

Hum, you&apos;re right indeed, the else case should be there.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:180
&gt; &gt; +            mergedBuffer = gst_buffer_join(m_bufferFrontLeft, buffer);
&gt; &gt; +            m_bufferFrontLeft = gst_buffer_ref(mergedBuffer);
&gt; 
&gt; Why not just do m_bufferFrontLeft = gst_buffer_ref(gst_buffer_join(m_bufferFrontLeft, buffer)); and dispsense with mergedBuffer altogether?
&gt; 

Yeah, why not ;)

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:215
&gt; &gt; +    gchar* padName = gst_pad_get_name(pad);
&gt; 
&gt; I recommend a GOwnPtr here.
&gt; 

Ok

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:233
&gt; &gt; +    gst_object_unref(GST_OBJECT(sinkPad));
&gt; 
&gt; Please use GRefPtr in these cases.
&gt; 

Will do. I actually have a patch somewhere for GRefPtrGStreamer about this, I&apos;ll send a separate patch to uniformize the GstPad usage in the graphics/gstreamer code.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:252
&gt; &gt; +    GstElement* audioconvert  = gst_element_factory_make(&quot;audioconvert&quot;, 0);
&gt; &gt; +    GstElement* audioresample = gst_element_factory_make(&quot;audioresample&quot;, 0);
&gt; &gt; +    GstElement* capsfilter = gst_element_factory_make(&quot;capsfilter&quot;, 0);
&gt; &gt; +    GstElement* deinterleave = gst_element_factory_make(&quot;deinterleave&quot;, &quot;deinterleave&quot;);
&gt; 
&gt; Please use camelCase for these names.
&gt; 

Hum ok, this is not what I use to do in other GStreamer code though. Usually the convention is that the variable name matches the element name when possible.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:258
&gt; &gt; +    g_object_set(capsfilter, &quot;caps&quot;, getGStreamerAudioCaps(2, m_sampleRate), NULL);
&gt; 
&gt; Does gst_caps_from_string return a newly-allocated GstCaps? If so, isn&apos;t this a memory leak?
&gt; 

Heh. Right, the caps needs to be unref&apos;d. Same in handleNewDeinterleavePad().

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:313
&gt; &gt; +    GOwnPtr&lt;GError&gt; error;
&gt; &gt; +    gstInitialized = gst_init_check(0, 0, &amp;error.outPtr());
&gt; &gt; +    if (!gstInitialized)
&gt; &gt; +        return nullptr;
&gt; 
&gt; Will this interact nicely with the version of this in MediaPlayerPrivateGStreamer.cpp? Nice use of nullptr!
&gt; 

I believe so! I&apos;ll do some tests about this in a page containing media elements and WebAudio code.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:316
&gt; &gt; +    // properly dispatch its messages to our end.
&gt; 
&gt; Nit: dispatches
&gt; 

Ok

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; &gt; +    m_context = g_main_context_new();
&gt; &gt; +    g_main_context_push_thread_default(m_context);
&gt; &gt; +    m_loop = g_main_loop_new(m_context, FALSE);
&gt; 
&gt; I guess this blocks the main loop. :(
&gt; 

Well yeah indeed, the createBus needs to block, not much I can do about this I&apos;m afraid.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:327
&gt; &gt; +    g_source_set_callback(timeoutSource, (GSourceFunc) enteredMainLoopCallback, this, 0);
&gt; 
&gt; Please use reinterpret_cast instead of a C style cast.
&gt; 

Oh, right.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:333
&gt; &gt; +    guint size = GST_BUFFER_SIZE(m_bufferFrontLeft);
&gt; 
&gt; We try not to use the simple Glib wrappers for C types that are local. Thus this can be unsigned.
&gt; 

Ok.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:344
&gt; &gt; +    float* bufferLeft = getGStreamerAudioData(m_bufferFrontLeft, size);
&gt; &gt; +    float* bufferRight = getGStreamerAudioData(m_bufferFrontRight, size);
&gt; &gt; +
&gt; &gt; +    memcpy(audioBus-&gt;channel(0)-&gt;data(), bufferLeft, size);
&gt; &gt; +    if (!mixToMono)
&gt; &gt; +        memcpy(audioBus-&gt;channel(1)-&gt;data(), bufferRight, size);
&gt; &gt; +
&gt; 
&gt; I think here you should pass (audioBus-&gt;channel(0)-&gt;data() directly to getGStreamerAudioData and avoid a memory copy and duplicate allocation entirely.
&gt; 

Very good point indeed! This should boost the performance a bit :)

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:360
&gt; &gt; +    AudioFileReader* reader = new AudioFileReader(filePath);
&gt; &gt; +    return reader-&gt;createBus(sampleRate, mixToMono);
&gt; 
&gt; Aren&apos;t you leaking the reader here? Why not just stack allocate it?
&gt; 

Yeah, good point.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:366
&gt; &gt; +    AudioFileReader* reader = new AudioFileReader(data, dataSize);
&gt; &gt; +    return reader-&gt;createBus(sampleRate, mixToMono);
&gt; 
&gt; Ditto. This factory seems to be unused currently...
&gt; 

Well createBusFromAudioFile is used in HRTFElevation at least. createBusFromInMemoryAudioFile is called in the AudioBuffer code.

&gt; &gt; Source/WebCore/platform/audio/gtk/AudioBusGtk.cpp:37
&gt; &gt; +    return createBusFromAudioFile(absoluteFilename.get(), false, sampleRate);
&gt; 
&gt; You only use the createBusFromAudioFile in one place and it&apos;s just two lines. I think it&apos;s clearer to just put the code here, unless you plan to use it a lot in followup patches.

I have a followup patch about this yeah. 
Anyway createBusFromAudioFile is defined in AudioFileReader.h so we need to implement it.

Moreover I wanted to split the &quot;Gtk&quot; part from the GStreamer code. Later on other ports using this WebAudio implementation will most likely only need a port specific AudioBus implementation, apart from the websettings and DRT stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483122</commentid>
    <comment_count>4</comment_count>
      <attachid>110827</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 04:45:49 -0700</bug_when>
    <thetext>Created attachment 110827
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483125</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 04:48:48 -0700</bug_when>
    <thetext>Attachment 110827 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1

Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:23:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483151</commentid>
    <comment_count>6</comment_count>
      <attachid>110835</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 06:03:04 -0700</bug_when>
    <thetext>Created attachment 110835
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483156</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 06:35:24 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; &gt; +    m_context = g_main_context_new();
&gt; &gt; +    g_main_context_push_thread_default(m_context);
&gt; &gt; +    m_loop = g_main_loop_new(m_context, FALSE);
&gt; 
&gt; I guess this blocks the main loop. :(
&gt; 

This issue is quite annoying, I&apos;ll give it some more thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483196</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 08:20:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #2)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; &gt; &gt; +    m_context = g_main_context_new();
&gt; &gt; &gt; +    g_main_context_push_thread_default(m_context);
&gt; &gt; &gt; +    m_loop = g_main_loop_new(m_context, FALSE);
&gt; &gt; 
&gt; &gt; I guess this blocks the main loop. :(
&gt; &gt; 
&gt; 
&gt; This issue is quite annoying, I&apos;ll give it some more thinking.

I&apos;m surprised the platform-independent code isn&apos;t loading this on another thread and making sounds only after it&apos;s loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483197</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 08:21:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 110510 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110510&amp;action=review
&gt; &gt; 
&gt; &gt; Nice. Below are some initial comments. I have not yet been able to look at the way you are setting up your pipeline in detail, but perhaps sometime later you can walk me through it. I have tried not to Martinize too intensely!
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioDestinationGStreamer.cpp:27
&gt; &gt; &gt; +#include &quot;AudioDestinationGStreamer.h&quot;
&gt; &gt; &gt; +
&gt; &gt; &gt; +#include &quot;AudioChannel.h&quot;
&gt; &gt; &gt; +#include &quot;AudioSourceProvider.h&quot;
&gt; &gt; &gt; +#include &quot;GOwnPtr.h&quot;
&gt; &gt; 
&gt; &gt; This should be one block of headers.

Apologies. I misread that section.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483268</commentid>
    <comment_count>10</comment_count>
      <attachid>110867</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 10:16:44 -0700</bug_when>
    <thetext>Created attachment 110867
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483272</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-13 10:19:12 -0700</bug_when>
    <thetext>Changes:

- killed some leaks found by Martin and Zan
- don&apos;t block the main loop anymore
- added comments about how the pipeline is built, hopefully it&apos;s now easier to understand.

I can now run the drum-machine demo :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483274</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 10:20:58 -0700</bug_when>
    <thetext>Attachment 110867 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1

Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:302:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483499</commentid>
    <comment_count>13</comment_count>
      <attachid>110867</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-13 14:34:19 -0700</bug_when>
    <thetext>Comment on attachment 110867
WebAudio GStreamer implementation: step 1

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

I&apos;m not sure I understand why you export the AudioFileReader class in AudioFileReaderGStreamer.h. Will you be using from another class in a later patch? if not, might be better to simply stick the class definition in AudioFileReaderGstreamer.cpp and delete AudioFileReaderGStreamer.h.

Looking good in general. I&apos;m tempted to r+ this, but I&apos;ll let you respond to my latest comments. Perhaps someone with more GStreamer experience can take a peak too.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:138
&gt; +    if (channels &amp;&amp; channelPositionsValue &amp;&amp; gst_value_is_fixed(channelPositionsValue)) {
&gt; +        GstAudioChannelPosition* positions = gst_audio_get_channel_positions(structure);

It&apos;d be better to ues an early return here for the error case.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:164
&gt; +    GOwnPtr&lt;GError&gt; err;

err should be called &quot;error&quot;

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:165
&gt; +    GOwnPtr&lt;gchar&gt; debug;

debug is unused, so you can just pass 0 (null) to gst_message_parse_warning as the last argument.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:259
&gt; +static bool gstInitialized = false;

This variable should be declared locally to method it&apos;s used in.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:268
&gt; +    gstInitialized = gst_init_check(0, 0, &amp;error.outPtr());
&gt; +    if (!gstInitialized)
&gt; +        return nullptr;

You never check the value of gstInitialized before running gst_init_check. What&apos;s the point of making it static?

&gt;&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:302

&gt; 
&gt; One line control clauses should not use braces.  [whitespace/braces] [4]

Please fix.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.h:34
&gt; +PassOwnPtr&lt;AudioBus&gt; createBusFromAudioFile(const char* filePath, bool mixToMono, float sampleRate);
&gt; +PassOwnPtr&lt;AudioBus&gt; createBusFromInMemoryAudioFile(const void* data, size_t dataSize, bool mixToMono, float sampleRate);

If you don&apos;t delete this header, I think it would be better to simply include AudioFileReader.h, instead of redclaring these factories. It&apos;s weird to have the declarations in two places.

&gt; Source/WebCore/platform/audio/gtk/AudioBusGtk.cpp:29
&gt; +#include &quot;AudioFileReaderGStreamer.h&quot;
&gt; +#include &quot;GOwnPtr.h&quot;
&gt; +
&gt; +#include &lt;gio/gio.h&gt;
&gt; +#include &lt;glib.h&gt;

These can be one clump.  Wouldn&apos;t it make more sense to just include AudioFileReader.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483831</commentid>
    <comment_count>14</comment_count>
      <attachid>110974</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-14 01:23:53 -0700</bug_when>
    <thetext>Created attachment 110974
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483832</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-14 01:27:12 -0700</bug_when>
    <thetext>Attachment 110974 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1

Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:25:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483835</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-14 01:30:18 -0700</bug_when>
    <thetext>Hi Sebastian,

Would you mind having a look at this patch? It&apos;s the first of a series dedicated to a GStreamer WebAudio implementation! See also bug 61355.

Martin and Zan already helped quite a lot on the iterations of this patch, it&apos;s almost ready to land and it&apos;d be great to have your opinion as well :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483844</commentid>
    <comment_count>17</comment_count>
      <attachid>110979</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-14 01:38:42 -0700</bug_when>
    <thetext>Created attachment 110979
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483845</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-14 01:39:17 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=110979) [details]
&gt; WebAudio GStreamer implementation: step 1

This one fixes the style-bot complains, hopefully!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483847</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-14 01:41:51 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 110867 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110867&amp;action=review
&gt; 
&gt; I&apos;m not sure I understand why you export the AudioFileReader class in AudioFileReaderGStreamer.h. Will you be using from another class in a later patch? if not, might be better to simply stick the class definition in AudioFileReaderGstreamer.cpp and delete AudioFileReaderGStreamer.h.
&gt; 

Indeed no need to export that class!
Thanks for the reviews Martin, I uploaded a new patch taking in account your latest feedback :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483861</commentid>
    <comment_count>20</comment_count>
      <attachid>110979</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2011-10-14 02:09:22 -0700</bug_when>
    <thetext>Comment on attachment 110979
WebAudio GStreamer implementation: step 1

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:73
&gt; +    GOwnPtr&lt;gchar&gt; capsDescription(g_strdup_printf(capsTemplate, static_cast&lt;int&gt;(sampleRate), channels, G_BYTE_ORDER));

You can use BYTE_ORDER directly in the caps template string or even easier:
return gst_caps_new_simple (&quot;audio/x-raw-float&quot;, &quot;rate&quot;, G_TYPE_INT, (int) sampleRate, &quot;channels&quot;, G_TYPE_INT, channels, &quot;endianness&quot;, G_TYPE_INT, G_BYTE_ORDER, &quot;width&quot;, G_TYPE_INT, 32, NULL)

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:88
&gt; +    GstByteReader* byteReader = gst_byte_reader_new_from_buffer(buffer);

GstByteReader byteReader = GST_BYTE_READER_INIT_FROM_BUFFER(buffer)

No need to free it later then, keeps memory fragmentation smaller, etc.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:92
&gt; +        *audioChannel++ = value;

You can simple memcpy() here. Just cast GST_BUFFER_DATA() to a float*. It already has correct alignment and endianness and everything.

Also, how do you know that audioChannel is large enough for all samples inside the buffer?

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:162
&gt; +    if (!channels || !channelPositionsValue || !gst_value_is_fixed(channelPositionsValue)) {

No need to check for !fixed here. That can never ever happen

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:174
&gt; +        m_bufferFrontRight = gst_buffer_join(m_bufferFrontRight, buffer);

Instead of joining the buffers here you might want to keep a list of buffers and copy from them in copyGstreamerBufferToAudioChannel(). That keeps the copying, reallocations, etc lower. Just make sure to get an additional ref of the buffer.

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:216
&gt; +    GstElement* sink = gst_element_factory_make(&quot;appsink&quot;, 0);

You probably want to set &quot;sync&quot; to FALSE on appsink. Otherwise it will only give you buffers in real time, not as fast as it can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485128</commentid>
    <comment_count>21</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2011-10-17 07:24:19 -0700</bug_when>
    <thetext>&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:201
&gt; +        ASSERT_WITH_MESSAGE(&quot;Fatal error: %d, %s&quot;, error-&gt;code,  error-&gt;message);

This assert is incorrectly utilized, causing build failures in debug build. You probably had a zero as the first argument in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485149</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-17 08:05:12 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:201
&gt; &gt; +        ASSERT_WITH_MESSAGE(&quot;Fatal error: %d, %s&quot;, error-&gt;code,  error-&gt;message);
&gt; 
&gt; This assert is incorrectly utilized, causing build failures in debug build. You probably had a zero as the first argument in mind.

Right, I fixed it locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487529</commentid>
    <comment_count>23</comment_count>
      <attachid>111762</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-20 06:32:52 -0700</bug_when>
    <thetext>Created attachment 111762
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487531</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-20 06:34:26 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Created an attachment (id=111762) [details]
&gt; WebAudio GStreamer implementation: step 1

Sebastian, do you mind having another look? I think I managed to apply all the things you asked :)

The style-bot will complain about NULL and gst_caps_new_simple... will file a  bug for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487532</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-20 06:34:44 -0700</bug_when>
    <thetext>Attachment 111762 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1

Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:74:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487537</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-20 06:45:10 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Attachment 111762 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:74:  Use 0 instead of NULL.  [readability/null] [5]
&gt; Total errors found: 1 in 13 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

See bug 70498</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487544</commentid>
    <comment_count>27</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2011-10-20 07:11:25 -0700</bug_when>
    <thetext>Looks good IMHO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487545</commentid>
    <comment_count>28</comment_count>
      <attachid>111762</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-20 07:13:31 -0700</bug_when>
    <thetext>Comment on attachment 111762
WebAudio GStreamer implementation: step 1

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

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:156
&gt; +        gst_buffer_list_iterator_add(m_frontLeftBuffersIterator, gst_buffer_ref(buffer));

oops this gst_buffer_ref call should not be!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487605</commentid>
    <comment_count>29</comment_count>
      <attachid>111782</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-20 08:53:39 -0700</bug_when>
    <thetext>Created attachment 111782
WebAudio GStreamer implementation: step 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491007</commentid>
    <comment_count>30</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-26 10:42:40 -0700</bug_when>
    <thetext>Ping Martin? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491345</commentid>
    <comment_count>31</comment_count>
      <attachid>111782</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-10-26 21:33:47 -0700</bug_when>
    <thetext>Comment on attachment 111782
WebAudio GStreamer implementation: step 1

Okay. This looks sane to me and the other reviews seem positive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491480</commentid>
    <comment_count>32</comment_count>
      <attachid>111782</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-27 05:31:57 -0700</bug_when>
    <thetext>Comment on attachment 111782
WebAudio GStreamer implementation: step 1

Clearing flags on attachment: 111782

Committed r98554: &lt;http://trac.webkit.org/changeset/98554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491481</commentid>
    <comment_count>33</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-10-27 05:32:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536890</commentid>
    <comment_count>34</comment_count>
    <who name="Dongwoo Joshua Im (dwim)">dw.im</who>
    <bug_when>2012-01-16 22:16:06 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=111782&amp;action=review

&gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; +        g_main_context_iteration(0, FALSE);

While I&apos;m reading your patches (and conversation history with mrobinson), it came to me a question why you have not give a separate/dedicated context to &quot;g_main_context_iteration&quot;. AFAIK, this will pop out a task from the work queue of the main thread if you give &apos;0&apos; to this API. 

Wouldn&apos;t it be clearer to create a new context (using g_main_context_new()) and pass the newly created context to the first argument of g_main_context_iteration()...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536944</commentid>
    <comment_count>35</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-17 01:04:50 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=111782&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:319
&gt; &gt; +        g_main_context_iteration(0, FALSE);
&gt; 
&gt; While I&apos;m reading your patches (and conversation history with mrobinson), it came to me a question why you have not give a separate/dedicated context to &quot;g_main_context_iteration&quot;. AFAIK, this will pop out a task from the work queue of the main thread if you give &apos;0&apos; to this API. 
&gt; 
&gt; Wouldn&apos;t it be clearer to create a new context (using g_main_context_new()) and pass the newly created context to the first argument of g_main_context_iteration()...?

I tried that at some point but it wasn&apos;t working well, I don&apos;t remember exactly what were the issues but if you can come up with a patch (in a new bugzilla entry) that uses a different context and works well, we can consider it :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110510</attachid>
            <date>2011-10-11 06:52:16 -0700</date>
            <delta_ts>2011-10-13 04:45:49 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>42618</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4ZTRmYTNlOGNmYzA0NTY0NDQwOTI5ODRjMjBiODFjNTE4YTgyMjAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1MCArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTYgKysrKysrLQogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCAgfCAgIDY1ICsrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oICAgIHwgICA0OSArKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgIDM3MSArKysrKysrKysrKysrKysrKysrKwogLi4uL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCAgICAgfCAgIDc1ICsrKysK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAgIHwgICA0
MiArKysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgOSArCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAg
ICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDgyMSBpbnNlcnRp
b25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVy
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKCmRpZmYgLS1n
aXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMjRhZDU5Yi4uMTkyNGMwYSAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEw
LTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFphbiBEb2Jl
cnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBXZWJB
dWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBsaWJm
ZnR3IGFuZCBnc3RyZWFtZXItYXVkaW8gaWYgV2ViQXVkaW8KKyAgICAgICAgYnVpbGQgaXMgZW5h
YmxlZC4KKwogMjAxMS0xMC0xMSAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gUVRESVJf
YnVpbGQgYW5kIHN0YW5kYWxvbmVfcGFja2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMjdiYWYuLmJjMTEy
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVh
ZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJhc2ljIEZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24sIHN1cHBvcnRpbmcgb25l
IG9yIDIgYXVkaW8KKyAgICAgICAgY2hhbm5lbHMuIEFuIGVtcHR5IEF1ZGlvRGVzdGluYXRpb24g
aXMgYWxzbyBwcm92aWRlZCwgaXRzIGNvbXBsZXRlCisgICAgICAgIGltcGxlbWVudGF0aW9uIGlz
IGhhbmRsZWQgaW4gYnVnIDY5ODM1LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0
b3ApOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcjo6aXNQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXI6OnNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcjo6c291cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdldEdTdHJlYW1lckF1ZGlvQ2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRHU3Ry
ZWFtZXJBdWRpb0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6b25HU3RyZWFtZXJFbmRPZlN0cmVh
bUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6b25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Om9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjplbnRlcmVkTWFpbkxvb3BDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVFbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVS
ZWFkZXI6OmhhbmRsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6
OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5k
bGVOZXdEZWludGVybGVhdmVQYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVy
OjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0
ZUJ1cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZSk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisKIDIw
MTEtMTAtMTEgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgog
CiAgICAgICAgIFtRdF0gUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIFFURElSX2J1aWxkIGFuZCBz
dGFuZGFsb25lX3BhY2thZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNjEyODg1NS4uODU3ZjJh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk5LDYgKzk5LDcgQEAgd2ViY29yZWd0a19jcHBm
bGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2d0ayBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NhaXJvIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2d0ayBcCkBAIC01MjQsNiArNTI1LDE0IEBAIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvWExpbmtOYW1lcy5jcHAgOiAkKFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2Vi
Q29yZSkvCiBpZiBFTkFCTEVfV0VCX0FVRElPCiBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dF
Ql9BVURJTz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCisKK2lm
IFVTRV9XRUJBVURJT19GRlRXCitGRUFUVVJFX0RFRklORVMgKz0gV1RGX1VTRV9XRUJBVURJT19G
RlRXPTEKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MQord2Vi
Y29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZnR3L0ZG
VEZyYW1lRkZUVy5jcHAKK2VuZGlmCisKIGVuZGlmCiAKICMgLS0tLQpAQCAtODI4LDYgKzgzNyw3
IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBc
CiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFH
UykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhT
TFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhOTk0Nzg2Li4x
MjkyNTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0NCw2ICsxNDQsOCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01VUkwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3cuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbnRpdHkuY3BwIFwKQEAgLTUwNyw2ICs1MDksOCBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNW
YWxpZGl0eVN0YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2su
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR0xBY3RpdmVJbmZvLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0
aXZlSW5mby5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xCdWZmZXIuY3BwIFwK
QEAgLTQ2MDMsOCArNDYwNywxNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfU1ZHCiAjIC0tLS0KICMg
V2ViIEF1ZGlvIFN1cHBvcnQKICMgLS0tLQorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJT
b3VyY2VOb2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlv
Tm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29udm9sdmVy
Tm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlw
dEF1ZGlvTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2
ZVNoYXBlck5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1
ZGlvRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2Rl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUu
aCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTQ2MzQs
NDIgKzQ2NDcsMTMwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
UGFyYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAorCVNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvU291cmNlTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJu
ZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCisJ
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlx
dWFkUHJvY2Vzc29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlbGF5Tm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hp
Z2hQYXNzMkZpbHRlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFz
czJGaWx0ZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2Rl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCisJU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCVNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9S
ZWFsdGltZUFuYWx5c2VyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hh
cGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNz
b3IuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCisJU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRmlsZVJlYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9Tb3VyY2VQcm92aWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1V0aWxpdGllcy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
VXRpbGl0aWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQ29uZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVT
dHViLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURktlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
UGFubmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1
ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVm
ZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
WmVyb1BvbGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVk
aW9CdXNHdGsuY3BwCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb0J1ZmZlci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxs
YmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlckNhbGxiYWNr
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsTWVyZ2VyLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db250ZXh0LmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
Q29udGV4dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvR2Fpbi5jcHAgXApAQCAtNDY4MCwx
NCArNDc4MSwxNCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb05vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmggXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYW5uZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1BhcmFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
UGFyYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50Lmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1NvdXJjZU5vZGUuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0JpcXVhZEZpbHRlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnZv
bHZlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29udm9sdmVyTm9kZS5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVsYXlOb2RlLmNwcCBcCkBAIC00Njk2LDEy
ICs0Nzk3LDE3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hpZ2hQYXNzMkZpbHRlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SmF2YVNjcmlwdEF1ZGlvTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TG93UGFzczJGaWx0ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bh
c3MyRmlsdGVyTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRp
bWVBbmFseXNlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVB
bmFseXNlck5vZGUuaAogZW5kaWYKIAorCiAjIC0tLS0KICMgV2ViIFNvY2tldHMgU3VwcG9ydAog
IyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg4NWI2NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oIgorCisjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCisjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVyJiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
cHJvdmlkZXIsIHNhbXBsZVJhdGUpKTsKK30KKworZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFy
ZHdhcmVTYW1wbGVSYXRlKCkKK3sKKyAgICByZXR1cm4gNDQxMDAuMDsKK30KKworQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb1NvdXJjZVBy
b3ZpZGVyJiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICA6IG1fcHJvdmlkZXIocHJv
dmlkZXIpCisgICAgLCBtX3JlbmRlckJ1cygyLCAxMjgsIHRydWUpCisgICAgLCBtX3NhbXBsZVJh
dGUoc2FtcGxlUmF0ZSkKKyAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQoreworfQorCitBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcigpCit7Cit9CisK
K3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQoKQoreworICAgIG1faXNQbGF5
aW5nID0gdHJ1ZTsKK30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKCkK
K3sKKyAgICBtX2lzUGxheWluZyA9IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NmMzc5OAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTEgUGhpbGlwcGUgTm9ybWFuZCA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcl9oCisjZGVmaW5lIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaAorCisjaW5j
bHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lciA6IHB1Ymxp
YyBBdWRpb0Rlc3RpbmF0aW9uIHsKK3B1YmxpYzoKKyAgICBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKEF1ZGlvU291cmNlUHJvdmlkZXImLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICB2aXJ0dWFs
IH5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworCisgICAgYm9vbCBpc1BsYXlpbmcoKSB7IHJl
dHVybiBtX2lzUGxheWluZzsgfQorICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyJiBzb3VyY2VQcm92aWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlkZXI7IH0KKworcHJpdmF0ZToKKyAgICBBdWRpb1Nv
dXJjZVByb3ZpZGVyJiBtX3Byb3ZpZGVyOworICAgIEF1ZGlvQnVzIG1fcmVuZGVyQnVzOworCisg
ICAgZmxvYXQgbV9zYW1wbGVSYXRlOworICAgIGJvb2wgbV9pc1BsYXlpbmc7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2NiMTBmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIu
Y3BwCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9G
aWxlUmVhZGVyLmgiCisjaW5jbHVkZSAiR093blB0ci5oIgorI2luY2x1ZGUgIkdSZWZQdHIuaCIK
KworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4K
KyNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2Uv
Z3N0Ynl0ZXJlYWRlci5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KKworI2Rl
ZmluZSBXRUJBVURJT19HU1RfQ0FQU19URU1QTEFURSAiYXVkaW8veC1yYXctZmxvYXQsIHJhdGU9
KGludCklZCwgY2hhbm5lbHM9KGludCklZCwgZW5kaWFubmVzcz0oaW50KSVkLCB3aWR0aD0oaW50
KTMyIgorCisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorI2RlZmluZSBfd2Vi
YXVkaW9fZ3N0X2J5dGVfcmVhZGVyX2dldF9mbG9hdCBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2Zsb2F0
MzJfbGUKKyNlbHNlCisjZGVmaW5lIF93ZWJhdWRpb19nc3RfYnl0ZV9yZWFkZXJfZ2V0X2Zsb2F0
IGdzdF9ieXRlX3JlYWRlcl9nZXRfZmxvYXQzMl9iZQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIEdzdENhcHMqIGdldEdTdHJlYW1lckF1ZGlvQ2FwcyhpbnQgY2hhbm5l
bHMsIGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIEdPd25QdHI8Z2NoYXI+IGNhcHNEZXNjcmlw
dGlvbihnX3N0cmR1cF9wcmludGYoV0VCQVVESU9fR1NUX0NBUFNfVEVNUExBVEUsIHN0YXRpY19j
YXN0PGludD4oc2FtcGxlUmF0ZSksIGNoYW5uZWxzLCBHX0JZVEVfT1JERVIpKTsKKyAgICByZXR1
cm4gZ3N0X2NhcHNfZnJvbV9zdHJpbmcoY2Fwc0Rlc2NyaXB0aW9uLmdldCgpKTsKK30KKworc3Rh
dGljIGZsb2F0KiBnZXRHU3RyZWFtZXJBdWRpb0RhdGEoR3N0QnVmZmVyKiBidWZmZXIsIGd1aW50
IHNpemUpCit7CisgICAgZ3BvaW50ZXIgYnVmID0gZ19tYWxsb2MwKHNpemUpOworICAgIGZsb2F0
KiBjdXJyZW50ID0gKGZsb2F0KikgYnVmOworICAgIGdmbG9hdCB2YWx1ZTsKKyAgICBHc3RCeXRl
UmVhZGVyKiBieXRlUmVhZGVyID0gZ3N0X2J5dGVfcmVhZGVyX25ld19mcm9tX2J1ZmZlcihidWZm
ZXIpOworCisgICAgd2hpbGUgKF93ZWJhdWRpb19nc3RfYnl0ZV9yZWFkZXJfZ2V0X2Zsb2F0KGJ5
dGVSZWFkZXIsICZ2YWx1ZSkpCisgICAgICAgICpjdXJyZW50KysgPSAoZmxvYXQpIHZhbHVlOwor
ICAgIGdzdF9ieXRlX3JlYWRlcl9mcmVlKGJ5dGVSZWFkZXIpOworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGZsb2F0Kj4oYnVmKTsKK30KKworc3RhdGljIHZvaWQgb25HU3RyZWFtZXJFbmRP
ZlN0cmVhbUNhbGxiYWNrKEdzdEFwcFNpbmsqIHNpbmssIGdwb2ludGVyIHVzZXJEYXRhKQorewor
ICAgIEF1ZGlvRmlsZVJlYWRlciogcmVhZGVyID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0ZpbGVS
ZWFkZXIqPih1c2VyRGF0YSk7CisgICAgcmVhZGVyLT5oYW5kbGVFbmRPZlN0cmVhbSgpOworfQor
CitzdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFwcHNpbmtOZXdCdWZmZXJDYWxsYmFjayhHc3RBcHBT
aW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkKK3sKKyAgICBBdWRpb0ZpbGVSZWFkZXIqIHJl
YWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNlckRhdGEpOworICAg
IHJldHVybiByZWFkZXItPmhhbmRsZUJ1ZmZlcihzaW5rKTsKK30KKworZ2Jvb2xlYW4gbWVzc2Fn
ZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBncG9pbnRlciB1c2Vy
RGF0YSkKK3sKKyAgICBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
QXVkaW9GaWxlUmVhZGVyKj4odXNlckRhdGEpOworICAgIHJldHVybiByZWFkZXItPmhhbmRsZU1l
c3NhZ2UobWVzc2FnZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZl
UGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQqIHBhZCwgZ3BvaW50
ZXIgdXNlckRhdGEpCit7CisgICAgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIgPSByZWludGVycHJl
dF9jYXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKTsKKyAgICByZWFkZXItPmhhbmRsZU5l
d0RlaW50ZXJsZWF2ZVBhZChwYWQpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlaW50
ZXJsZWF2ZVJlYWR5Q2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIgPSByZWludGVycHJldF9jYXN0PEF1
ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKTsKKyAgICByZWFkZXItPmRlaW50ZXJsZWF2ZVBhZHND
b25maWd1cmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRk
ZWRDYWxsYmFjayhHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQqIHBhZCwgZ3BvaW50ZXIgdXNl
ckRhdGEpCit7CisgICAgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIgPSByZWludGVycHJldF9jYXN0
PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKTsKKyAgICByZWFkZXItPnBsdWdEZWludGVybGVh
dmUocGFkKTsKK30KKworZ2Jvb2xlYW4gZW50ZXJlZE1haW5Mb29wQ2FsbGJhY2soZ3BvaW50ZXIg
dXNlckRhdGEpCit7CisgICAgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIgPSByZWludGVycHJldF9j
YXN0PEF1ZGlvRmlsZVJlYWRlcio+KHVzZXJEYXRhKTsKKyAgICByZWFkZXItPnN0YXJ0KCk7Cisg
ICAgcmV0dXJuIEZBTFNFOworfQorCitBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihj
b25zdCBjaGFyKiBmaWxlUGF0aCkKKyAgICA6IG1fZGF0YSgwKQorICAgICwgbV9kYXRhU2l6ZSgw
KQorICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKK3sKK30KKworQXVkaW9GaWxlUmVhZGVyOjpB
dWRpb0ZpbGVSZWFkZXIoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQorICAgIDog
bV9kYXRhKGRhdGEpCisgICAgLCBtX2RhdGFTaXplKGRhdGFTaXplKQorICAgICwgbV9maWxlUGF0
aCgwKQoreworfQorCitBdWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQoreworfQor
Cit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlRW5kT2ZTdHJlYW0oKQoreworICAgIEdzdEJ1
cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKTsK
KworICAgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2lzX2Nvbm5lY3RlZChidXMsIG1fYnVzU2lnbmFs
SGFuZGxlcklkKSkKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGJ1cywgbV9i
dXNTaWduYWxIYW5kbGVySWQpOworCisgICAgZ3N0X29iamVjdF91bnJlZihidXMpOworCisgICAg
aWYgKEdzdEVsZW1lbnQqIGRlaW50ZXJsZWF2ZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgImRlaW50ZXJsZWF2ZSIpKSB7CisgICAgICAgIGlmIChnX3NpZ25hbF9o
YW5kbGVyX2lzX2Nvbm5lY3RlZChkZWludGVybGVhdmUsIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRT
aWduYWxIYW5kbGVySWQpKQorICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0
KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCk7Cisg
ICAgICAgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2lzX2Nvbm5lY3RlZChkZWludGVybGVhdmUsIG1f
ZGVpbnRlcmxlYXZlTm9Nb3JlUGFkU2lnbmFsSGFuZGxlcklkKSkKKyAgICAgICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdChkZWludGVybGVhdmUsIG1fZGVpbnRlcmxlYXZlTm9Nb3Jl
UGFkU2lnbmFsSGFuZGxlcklkKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihkZWludGVybGVh
dmUpOworICAgIH0KKworICAgIGlmIChHc3RFbGVtZW50KiBkZWNvZGViaW4gPSBnc3RfYmluX2dl
dF9ieV9uYW1lKEdTVF9CSU4obV9waXBlbGluZSksICJkZWNvZGViaW4iKSkgeworICAgICAgICBp
ZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25uZWN0ZWQoZGVjb2RlYmluLCBtX2RlY29kZWJpblBh
ZEFkZGVkU2lnbmFsSGFuZGxlcklkKSkKKyAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlz
Y29ubmVjdChkZWNvZGViaW4sIG1fZGVjb2RlYmluUGFkQWRkZWRTaWduYWxIYW5kbGVySWQpOwor
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKGRlY29kZWJpbik7CisgICAgfQorCisgICAgZ19tYWlu
X2xvb3BfcXVpdChtX2xvb3ApOworICAgIG1fbG9vcCA9IDA7Cit9CisKK0dzdEZsb3dSZXR1cm4g
QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVCdWZmZXIoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBH
c3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9hcHBfc2lua19wdWxsX2J1ZmZlcihzaW5rKTsKKyAgICBp
ZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0Q2Fw
cyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMoYnVmZmVyKTsKKyAgICBHc3RTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisKKyAgICBnaW50
IGNoYW5uZWxzID0gMDsKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUs
ICJjaGFubmVscyIsICZjaGFubmVscykpIHsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7
CisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBjb25zdCBHVmFs
dWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3RydWN0dXJlLCAiY2hhbm5lbC1w
b3NpdGlvbnMiKTsKKworICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUg
YnVmZmVyIGlzIHN1cHBvc2VkIHRvIHN0b3JlCisgICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFu
bmVsIGFueXdheS4KKyAgICBpZiAoY2hhbm5lbHMgJiYgdmFsdWUgJiYgZ3N0X3ZhbHVlX2lzX2Zp
eGVkKHZhbHVlKSkgeworICAgICAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiogcG9zaXRpb25z
ID0gZ3N0X2F1ZGlvX2dldF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1Y3R1cmUpOworICAgICAgICBH
c3RCdWZmZXIqIG1lcmdlZEJ1ZmZlcjsKKworICAgICAgICBzd2l0Y2ggKHBvc2l0aW9uc1swXSkg
eworICAgICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQ6Cisg
ICAgICAgICAgICBtZXJnZWRCdWZmZXIgPSBnc3RfYnVmZmVyX2pvaW4obV9idWZmZXJGcm9udExl
ZnQsIGJ1ZmZlcik7CisgICAgICAgICAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9idWZmZXJf
cmVmKG1lcmdlZEJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1Rf
QVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoKKyAgICAgICAgICAgIG1lcmdlZEJ1
ZmZlciA9IGdzdF9idWZmZXJfam9pbihtX2J1ZmZlckZyb250UmlnaHQsIGJ1ZmZlcik7CisgICAg
ICAgICAgICBtX2J1ZmZlckZyb250UmlnaHQgPSBnc3RfYnVmZmVyX3JlZihtZXJnZWRCdWZmZXIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBnX2ZyZWUocG9zaXRpb25zKTsKKyAgICB9CisKKyAgICBn
c3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK2dib29s
ZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQor
eworICAgIGlmICghbV9sb29wKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIHN3aXRjaCAo
R1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgor
ICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbG9vcCk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9p
ZCBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQqIHBhZCkK
K3sKKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVl
dWUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJhcHBzaW5rIiwgMCk7CisgICAgZ2NoYXIqIHBhZE5hbWUgPSBnc3RfcGFkX2dldF9uYW1lKHBh
ZCk7CisKKyAgICBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBjYWxsYmFja3Mu
bmV3X3ByZXJvbGwgPSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOworICAg
IGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisgICAg
aWYgKCFnX3N0cmNtcDAocGFkTmFtZSwgInNyYzAiKSkKKyAgICAgICAgY2FsbGJhY2tzLmVvcyA9
IG9uR1N0cmVhbWVyRW5kT2ZTdHJlYW1DYWxsYmFjazsKKyAgICBlbHNlCisgICAgICAgIGNhbGxi
YWNrcy5lb3MgPSAwOworCisgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9T
SU5LKHNpbmspLCAmY2FsbGJhY2tzLCB0aGlzLCAwKTsKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2Nh
cHMoR1NUX0FQUF9TSU5LKHNpbmspLCBnZXRHU3RyZWFtZXJBdWRpb0NhcHMoMSwgbV9zYW1wbGVS
YXRlKSk7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHF1ZXVl
LCBzaW5rLCBOVUxMKTsKKworICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVtZW50X2dldF9z
dGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQp
OworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisgICAgZ19mcmVl
KHBhZE5hbWUpOworCisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMi
LCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKworICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShxdWV1ZSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUoc2luaywgR1NUX1NUQVRFX1JFQURZKTsKK30KKwordm9pZCBBdWRpb0ZpbGVS
ZWFkZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCkKK3sKKyAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpOworfQorCit2b2lkIEF1ZGlv
RmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJsZWF2ZShHc3RQYWQqIHBhZCkKK3sKKyAgICBHc3RFbGVt
ZW50KiBhdWRpb2NvbnZlcnQgID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb2NvbnZl
cnQiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBhdWRpb3Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFj
dG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgMCk7CisgICAgR3N0RWxlbWVudCogY2Fwc2ZpbHRl
ciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiY2Fwc2ZpbHRlciIsIDApOworICAgIEdzdEVs
ZW1lbnQqIGRlaW50ZXJsZWF2ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVpbnRlcmxl
YXZlIiwgImRlaW50ZXJsZWF2ZSIpOworCisgICAgZ19vYmplY3Rfc2V0KGRlaW50ZXJsZWF2ZSwg
ImtlZXAtcG9zaXRpb25zIiwgVFJVRSwgTlVMTCk7CisgICAgbV9kZWludGVybGVhdmVQYWRBZGRl
ZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCAicGFkLWFk
ZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2sp
LCB0aGlzKTsKKyAgICBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJZCA9IGdf
c2lnbmFsX2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSyhv
bkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIGdfb2Jq
ZWN0X3NldChjYXBzZmlsdGVyLCAiY2FwcyIsIGdldEdTdHJlYW1lckF1ZGlvQ2FwcygyLCBtX3Nh
bXBsZVJhdGUpLCBOVUxMKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVs
aW5lKSwgYXVkaW9jb252ZXJ0LCBhdWRpb3Jlc2FtcGxlLCBjYXBzZmlsdGVyLCBkZWludGVybGVh
dmUsIE5VTEwpOworCisgICAgR3N0UGFkKiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQoYXVkaW9jb252ZXJ0LCAic2luayIpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQ
YWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBn
c3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb2NvbnZlcnQsICJzcmMiLCBhdWRpb3Jlc2Ft
cGxlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVu
dF9saW5rX3BhZHNfZnVsbChhdWRpb3Jlc2FtcGxlLCAic3JjIiwgY2Fwc2ZpbHRlciwgInNpbmsi
LCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRz
X2Z1bGwoY2Fwc2ZpbHRlciwgInNyYyIsIGRlaW50ZXJsZWF2ZSwgInNpbmsiLCBHU1RfUEFEX0xJ
TktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFy
ZW50KGF1ZGlvY29udmVydCk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVu
dChhdWRpb3Jlc2FtcGxlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50
KGNhcHNmaWx0ZXIpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoZGVp
bnRlcmxlYXZlKTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFkZXI6OnN0YXJ0KCkKK3sKKyAgICBt
X3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKKworICAgIEdzdEJ1cyogYnVzID0gZ3N0
X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKTsKKyAgICBnc3RfYnVz
X2FkZF9zaWduYWxfd2F0Y2goYnVzKTsKKyAgICBtX2J1c1NpZ25hbEhhbmRsZXJJZCA9IGdfc2ln
bmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwg
dGhpcyk7CisgICAgZ3N0X29iamVjdF91bnJlZihidXMpOworCisgICAgR3N0RWxlbWVudCogc291
cmNlOworICAgIGlmIChtX2RhdGEpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YVNpemUpOworICAg
ICAgICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImdpb3N0cmVhbXNyYyIsIDAp
OworICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbWVtb3J5U3RyZWFtID0gZ19tZW1vcnlf
aW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEobV9kYXRhLCBtX2RhdGFTaXplLCAwKTsKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgInN0cmVhbSIsIG1lbW9yeVN0cmVhbS5nZXQoKSwgTlVM
TCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJmaWxlc3JjIiwgMCk7CisgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlv
biIsIG1fZmlsZVBhdGgsIE5VTEwpOworICAgIH0KKworICAgIEdzdEVsZW1lbnQqIGRlY29kZWJp
biA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVjb2RlYmluMiIsICJkZWNvZGViaW4iKTsK
KyAgICBtX2RlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVj
dChkZWNvZGViaW4sICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyRGVjb2RlYmlu
UGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklO
KG1fcGlwZWxpbmUpLCBzb3VyY2UsIGRlY29kZWJpbiwgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwoc291cmNlLCAic3JjIiwgZGVjb2RlYmluLCAic2luayIsIEdTVF9QQURf
TElOS19DSEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGlu
ZSwgR1NUX1NUQVRFX1BBVVNFRCk7Cit9CisKK3N0YXRpYyBib29sIGdzdEluaXRpYWxpemVkID0g
ZmFsc2U7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVz
KGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIG1fc2FtcGxlUmF0ZSA9
IHNhbXBsZVJhdGU7CisKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZ3N0SW5pdGlh
bGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGlmICgh
Z3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVGhlIGxv
b3AgbmVlZHMgaXRzIGNvbnRleHQgdG8gYmUgdGhlIHRocmVhZC1kZWZhdWx0IHNvIGdzdCBidXMK
KyAgICAvLyBwcm9wZXJseSBkaXNwYXRjaCBpdHMgbWVzc2FnZXMgdG8gb3VyIGVuZC4KKyAgICBt
X2NvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcoKTsKKyAgICBnX21haW5fY29udGV4dF9wdXNo
X3RocmVhZF9kZWZhdWx0KG1fY29udGV4dCk7CisgICAgbV9sb29wID0gZ19tYWluX2xvb3BfbmV3
KG1fY29udGV4dCwgRkFMU0UpOworCisgICAgbV9idWZmZXJGcm9udExlZnQgPSBnc3RfYnVmZmVy
X25ldygpOworICAgIG1fYnVmZmVyRnJvbnRSaWdodCA9IGdzdF9idWZmZXJfbmV3KCk7CisKKyAg
ICAvLyBTdGFydCB0aGUgcGlwZWxpbmUgcHJvY2Vzc2luZyBqdXN0IGFmdGVyIHRoZSBsb29wIGlz
IHN0YXJ0ZWQuCisgICAgR1NvdXJjZSogdGltZW91dFNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2Vf
bmV3KDApOworICAgIGdfc291cmNlX2F0dGFjaCh0aW1lb3V0U291cmNlLCBtX2NvbnRleHQpOwor
ICAgIGdfc291cmNlX3NldF9jYWxsYmFjayh0aW1lb3V0U291cmNlLCAoR1NvdXJjZUZ1bmMpIGVu
dGVyZWRNYWluTG9vcENhbGxiYWNrLCB0aGlzLCAwKTsKKworICAgIGdfbWFpbl9sb29wX3J1biht
X2xvb3ApOworICAgIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdChtX2NvbnRleHQp
OworICAgIGdfbWFpbl9jb250ZXh0X3VucmVmKG1fY29udGV4dCk7CisKKyAgICBndWludCBzaXpl
ID0gR1NUX0JVRkZFUl9TSVpFKG1fYnVmZmVyRnJvbnRMZWZ0KTsKKyAgICB1bnNpZ25lZCBjaGFu
bmVscyA9IG1peFRvTW9ubyA/IDEgOiAyOworICAgIE93blB0cjxBdWRpb0J1cz4gYXVkaW9CdXMg
PSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoY2hhbm5lbHMsIHNpemUgLyBzaXplb2YoZmxvYXQpKSk7
CisgICAgYXVkaW9CdXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsKKworICAgIGZsb2F0
KiBidWZmZXJMZWZ0ID0gZ2V0R1N0cmVhbWVyQXVkaW9EYXRhKG1fYnVmZmVyRnJvbnRMZWZ0LCBz
aXplKTsKKyAgICBmbG9hdCogYnVmZmVyUmlnaHQgPSBnZXRHU3RyZWFtZXJBdWRpb0RhdGEobV9i
dWZmZXJGcm9udFJpZ2h0LCBzaXplKTsKKworICAgIG1lbWNweShhdWRpb0J1cy0+Y2hhbm5lbCgw
KS0+ZGF0YSgpLCBidWZmZXJMZWZ0LCBzaXplKTsKKyAgICBpZiAoIW1peFRvTW9ubykKKyAgICAg
ICAgbWVtY3B5KGF1ZGlvQnVzLT5jaGFubmVsKDEpLT5kYXRhKCksIGJ1ZmZlclJpZ2h0LCBzaXpl
KTsKKworICAgIGdfZnJlZShidWZmZXJMZWZ0KTsKKyAgICBnX2ZyZWUoYnVmZmVyUmlnaHQpOwor
CisgICAgZ3N0X2J1ZmZlcl91bnJlZihtX2J1ZmZlckZyb250TGVmdCk7CisgICAgZ3N0X2J1ZmZl
cl91bnJlZihtX2J1ZmZlckZyb250UmlnaHQpOworCisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9P
QkpFQ1QobV9waXBlbGluZSkpOworCisgICAgcmV0dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKK30K
KworUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFy
KiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgQXVk
aW9GaWxlUmVhZGVyKiByZWFkZXIgPSBuZXcgQXVkaW9GaWxlUmVhZGVyKGZpbGVQYXRoKTsKKyAg
ICByZXR1cm4gcmVhZGVyLT5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4VG9Nb25vKTsKK30KKwor
UGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBs
ZVJhdGUpCit7CisgICAgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIgPSBuZXcgQXVkaW9GaWxlUmVh
ZGVyKGRhdGEsIGRhdGFTaXplKTsKKyAgICByZXR1cm4gcmVhZGVyLT5jcmVhdGVCdXMoc2FtcGxl
UmF0ZSwgbWl4VG9Nb25vKTsKK30KKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMTYwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVh
bWVyLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlh
IFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMSBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIEF1ZGlv
RmlsZVJlYWRlckdTdHJlYW1lcl9oCisjZGVmaW5lIEF1ZGlvRmlsZVJlYWRlckdTdHJlYW1lcl9o
CisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dNYWluQ29udGV4
dCBHTWFpbkNvbnRleHQ7Cit0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKK3R5
cGVkZWYgc3RydWN0IF9Hc3RBcHBTaW5rIEdzdEFwcFNpbms7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQXVkaW9CdXM7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zy
b21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBz
YW1wbGVSYXRlKTsKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1
ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25v
LCBmbG9hdCBzYW1wbGVSYXRlKTsKKworY2xhc3MgQXVkaW9GaWxlUmVhZGVyIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBdWRpb0ZpbGVSZWFkZXIpOworcHVibGljOgorICAgIEF1ZGlvRmls
ZVJlYWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCk7CisgICAgQXVkaW9GaWxlUmVhZGVyKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7CisgICAgfkF1ZGlvRmlsZVJlYWRlcigpOwor
CisgICAgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJv
b2wgbWl4VG9Nb25vKTsKKworICAgIHZvaWQgaGFuZGxlRW5kT2ZTdHJlYW0oKTsKKyAgICBHc3RG
bG93UmV0dXJuIGhhbmRsZUJ1ZmZlcihHc3RBcHBTaW5rKik7CisgICAgZ2Jvb2xlYW4gaGFuZGxl
TWVzc2FnZShHc3RNZXNzYWdlKik7CisgICAgdm9pZCBoYW5kbGVOZXdEZWludGVybGVhdmVQYWQo
R3N0UGFkKik7CisgICAgdm9pZCBkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpOworICAgIHZv
aWQgcGx1Z0RlaW50ZXJsZWF2ZShHc3RQYWQqKTsKKyAgICB2b2lkIHN0YXJ0KCk7CisKK3ByaXZh
dGU6CisgICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAgIHNpemVfdCBtX2RhdGFTaXplOworICAg
IGNvbnN0IGNoYXIqIG1fZmlsZVBhdGg7CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAg
R01haW5Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgR01haW5Mb29wKiBtX2xvb3A7CisgICAgR3N0
QnVmZmVyKiBtX2J1ZmZlckZyb250TGVmdDsKKyAgICBHc3RCdWZmZXIqIG1fYnVmZmVyRnJvbnRS
aWdodDsKKyAgICBHc3RFbGVtZW50KiBtX3BpcGVsaW5lOworCisgICAgZ3Vsb25nIG1fYnVzU2ln
bmFsSGFuZGxlcklkOworICAgIGd1bG9uZyBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkU2lnbmFsSGFu
ZGxlcklkOworICAgIGd1bG9uZyBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJ
ZDsKKyAgICBndWxvbmcgbV9kZWNvZGViaW5QYWRBZGRlZFNpZ25hbEhhbmRsZXJJZDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1ZGlvRmlsZVJlYWRlckdTdHJl
YW1lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVk
aW9CdXNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVz
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTQ2OTY1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVz
R3RrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oIgorI2luY2x1ZGUgIkdPd25QdHIu
aCIKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9y
bVJlc291cmNlKGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgR093
blB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy53YXYiLCBuYW1lKSk7Cisg
ICAgR093blB0cjxnY2hhcj4gYWJzb2x1dGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKERBVEFf
RElSLCAid2Via2l0Z3RrLSJXRUJLSVRHVEtfQVBJX1ZFUlNJT05fU1RSSU5HLCAicmVzb3VyY2Vz
IiwgImF1ZGlvIiwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICByZXR1cm4gY3JlYXRlQnVz
RnJvbUF1ZGlvRmlsZShhYnNvbHV0ZUZpbGVuYW1lLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmFkNGUyZC4uMzRlZWQ0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVS
ZWFkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogTGluayBhZ2FpbnN0IGxpYmZmdHcuCisKIDIw
MTEtMDktMjggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIE1vdmUgZHJhZy1hbmQtZHJvcCBjb2RlIHdoaWNoIGNhbiBiZSBzaGFyZWQgd2l0
aCBXZWJLaXQyIHRvIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggZGUwZTg2
MC4uOWRkNGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
KysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTY2LDYgKzY2LDcgQEAg
bGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX0NQUEYKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUS19D
RkxBR1MpIFwKIAkkKEhJTERPTl9DRkxBR1MpIFwKKwkkKExJQkZGVFdfQ0ZMQUdTKSBcCiAJJChM
SUJTT1VQX0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFHUykgXAogCSQoTElCWFNMVF9DRkxBR1Mp
IFwKQEAgLTk2LDYgKzk3LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJT
KSBcCiAJJChISUxET05fTElCUykgXAogCSQoSlBFR19MSUJTKSBcCisJJChMSUJGRlRXX0xJQlMp
IFwKIAkkKExJQlNPVVBfTElCUykgXAogCSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElC
UykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDQ1YTY2MTkuLmYwM2JkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06IExpbmsgYWdhaW5zdCBsaWJmZnR3LgorCiAyMDExLTEwLTExICBU
b3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBRVERJUl9idWlsZCBhbmQgc3RhbmRhbG9uZV9w
YWNrYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGUzZjk4NDYuLjMwNmU5YWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtCkBAIC0xMzg0LDYgKzEzODQsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Q
cm9jZXNzX0xEQUREID0gXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChX
SU5NTV9MSUJTKSBcCisJJChMSUJGRlRXX0xJQlMpIFwKIAkkKFpMSUJfTElCUykKIAogUHJvZ3Jh
bXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREZMQUdTID0gXApkaWZmIC0tZ2l0IGEvY29uZmlndXJl
LmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDIxNzFkOGQuLjUyNDQyZDMgMTAwNjQ0Ci0tLSBhL2Nv
bmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTI3NCw2ICsyNzQsNyBAQCBTUUxJVEVf
UkVRVUlSRURfVkVSU0lPTj0zLjAKIEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OPTAuMTAKIEdT
VFJFQU1FUl9QTFVHSU5TX0JBU0VfUkVRVUlSRURfVkVSU0lPTj0wLjEwLjMwCiBFTkNIQU5UX1JF
UVVJUkVEX1ZFUlNJT049MC4yMgorTElCRkZUV19SRVFVSVJFRF9WRVJTSU9OPTMuMi4yCiAKICMg
QXZhaWxhYmxlIG1vZHVsZXMKICMKQEAgLTEwNDgsMTAgKzEwNDksMTEgQEAgaWYgdGVzdCAiJG9z
X3dpbjMyIiA9ICJubyI7IHRoZW4KIGZpCiAKICMgY2hlY2sgaWYgZ3N0cmVhbWVyIGlzIGF2YWls
YWJsZQotaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgoraWYgdGVzdCAiJGVu
YWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsg
dGhlbgogICAgUEtHX0NIRUNLX01PRFVMRVMoW0dTVFJFQU1FUl0sCiAgICAgICAgICAgICAgICAg
ICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAgICAg
ICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAuMTAKKyAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1hdWRpby0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYmFz
ZS0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAg
ICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1dGlscy0wLjEwCkBAIC0xMDYzLDYgKzEw
NjUsMTcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VC
U1QoW0dTVFJFQU1FUl9MSUJTXSkKIGZpCiAKKyMgY2hlY2sgaWYgbGliZmZ0dyBpcyBhdmFpbGFi
bGUKK2lmIHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hF
Q0tfTU9EVUxFUyhbTElCRkZUV10sCisgICAgICAgICAgICAgICAgICAgICBbZmZ0dzMgPj0gJExJ
QkZGVFdfUkVRVUlSRURfVkVSU0lPTgorICAgICAgICAgICAgICAgICAgICAgZmZ0dzNmID49ICRM
SUJGRlRXX1JFUVVJUkVEX1ZFUlNJT05dLAorICAgICAgICAgICAgICAgICAgICAgW2hhdmVfZmZ0
dz15ZXNdKQorCisgICAgQUNfU1VCU1QoW0xJQkZGVFdfQ0ZMQUdTXSkKKyAgICBBQ19TVUJTVChb
TElCRkZUV19MSUJTXSkKK2ZpCisKICMgY2hlY2sgZm9yIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydAog
aWYgdGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAieWVzIjsgdGhlbgogICAgQ09WRVJBR0VfQ0ZM
QUdTPSItTUQiCkBAIC0xMTM2LDYgKzExNDksOSBAQCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdP
XSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAicGFuZ28iXSkKICMgR1N0cmVhbWVyIGZl
YXR1cmUgY29uZGl0aW9uYWwKIEFNX0NPTkRJVElPTkFMKFtVU0VfR1NUUkVBTUVSXSwgW3Rlc3Qg
IiRoYXZlX2dzdHJlYW1lciIgPSAieWVzIl0pCiAKKyMgV2ViIEF1ZGlvIGZlYXR1cmUgY29uZGl0
aW9uYWwKK0FNX0NPTkRJVElPTkFMKFtVU0VfV0VCQVVESU9fRkZUV10sIFt0ZXN0ICIkaGF2ZV9m
ZnR3IiA9ICJ5ZXMiXSkKKwogIyBXZWJLaXQgZmVhdHVyZSBjb25kaXRpb25hbHMKIEFNX0NPTkRJ
VElPTkFMKFtFTkFCTEVfREVCVUddLFt0ZXN0ICIkZW5hYmxlX2RlYnVnX2ZlYXR1cmVzIiA9ICJ5
ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfM0RfUkVOREVSSU5HXSxbdGVzdCAiJGVuYWJs
ZV8zZF9yZW5kZXJpbmciID0gInllcyJdKQotLSAKMS43LjcucmMx
</data>
<flag name="review"
          id="108038"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110827</attachid>
            <date>2011-10-13 04:45:49 -0700</date>
            <delta_ts>2011-10-13 06:03:04 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>41749</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkZmMxNWIyMjZlN2Q5YzgyNjRlMDg1YzY0ZDdlZjEwNGJkMTRkM2IyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NiArKysr
CiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTAgKwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAg
fCAgMTE2ICsrKysrKystCiAuLi4vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwICB8ICAgNjQgKysrKwogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmggICAgfCAgIDQ5ICsrKwogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMzQ3ICsrKysrKysrKysrKysrKysrKysrCiAuLi4v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oICAgICB8ICAgNzUgKysr
KysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAgIHwg
ICA0MiArKysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDgwMiBpbnNl
cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVh
bWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMmM5NjRhZi4uYzhmMTg4YyAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFphbiBE
b2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBX
ZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBs
aWJmZnR3IGFuZCBnc3RyZWFtZXItYXVkaW8gaWYgV2ViQXVkaW8KKyAgICAgICAgYnVpbGQgaXMg
ZW5hYmxlZC4KKwogMjAxMS0xMC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBFTkFCTEUoWEhUTUxNUCkgYW5kIGFzc29jaWF0ZWQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDYwMDBkYjAuLjhmOGI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2ljIEZpbGVSZWFkZXIgaW1wbGVt
ZW50YXRpb24sIHN1cHBvcnRpbmcgb25lIG9yIDIgYXVkaW8KKyAgICAgICAgY2hhbm5lbHMuIEFu
IGVtcHR5IEF1ZGlvRGVzdGluYXRpb24gaXMgYWxzbyBwcm92aWRlZCwgaXRzIGNvbXBsZXRlCisg
ICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGhhbmRsZWQgaW4gYnVnIDY5ODM1LgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmlzUGxh
eWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzYW1w
bGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnNv
dXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRHU3Ry
ZWFtZXJBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmxvYXRGcm9tQnl0ZVJlYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6bWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uR1N0cmVh
bWVyRGVpbnRlcmxlYXZlUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdT
dHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6b25H
U3RyZWFtZXJEZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmVu
dGVyZWRNYWluTG9vcENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6QXVkaW9GaWxlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
fkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6Omhh
bmRsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWludGVy
bGVhdmVQYWRzQ29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6
OnBsdWdEZWludGVybGVhdmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisKIDIwMTEtMTAtMTIg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBQYXNzIFBh
cnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8gV2ViS2l0IENsaWVudHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggYzcwNzkzYy4uYzViZmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTk5LDYgKzk5LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ayBcCkBAIC01
MTYsNiArNTE3LDE0IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWExpbmtOYW1lcy5jcHAgOiAk
KFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvCiBpZiBFTkFCTEVfV0VCX0FV
RElPCiBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJjb3JlX2NwcGZs
YWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCisKK2lmIFVTRV9XRUJBVURJT19GRlRXCitGRUFU
VVJFX0RFRklORVMgKz0gV1RGX1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVfY3BwZmxhZ3Mg
Kz0gLURXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAKK2VuZGlmCisK
IGVuZGlmCiAKICMgLS0tLQpAQCAtODIwLDYgKzgyOSw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQ
RkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChI
SUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1Mp
IFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCAwMjRkMTcwLi5jNzFkOGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTE0NCw2ICsxNDQsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01VUkwuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01XaW5kb3cuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNFbnRpdHkuY3BwIFwKQEAgLTUwNyw2ICs1MDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZl
U2hhcGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9k
ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZvLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xCdWZmZXIuY3BwIFwKQEAgLTQ2MDUsOCArNDYwOSwxNyBAQCBl
bmRpZiAjIEVORCBFTkFCTEVfU1ZHCiAjIC0tLS0KICMgV2ViIEF1ZGlvIFN1cHBvcnQKICMgLS0t
LQorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29udm9sdmVyTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTQ2MzYsNDIgKzQ2NDksMTMwIEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdF
dmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2Vy
bmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EZWxheVByb2Nlc3Nvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJO
b2RlLmgKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCisJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2
ZVNoYXBlclByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0NoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RT
UEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5l
bFByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RmlsZVJlYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Tb3VyY2VQcm92aWRlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZUQ29udm9sdmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
Q29udm9sdmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1ZlY3Rvck1hdGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0
b3JNYXRoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCiB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9DaGFubmVsTWVyZ2VyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5u
ZWxTcGxpdHRlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxT
cGxpdHRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcCBc
Ci0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvR2Fpbi5jcHAgXApAQCAtNDY4MiwxNCArNDc4MywxNCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVy
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb05vZGUuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Q
YW5uZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFyYW0uaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1NvdXJjZU5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9Tb3VyY2VOb2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0JpcXVhZEZpbHRlck5vZGUuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnZvbHZlck5vZGUuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQ29udm9sdmVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRGVsYXlOb2RlLmNwcCBcCkBAIC00Njk4LDEyICs0Nzk5LDE3IEBAIHdlYmNvcmVfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hpZ2hQYXNzMkZpbHRl
ck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG93UGFzczJGaWx0ZXJOb2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuaAogZW5kaWYKIAor
CiAjIC0tLS0KICMgV2ViIFNvY2tldHMgU3VwcG9ydAogIyAtLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDBkOGE5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDY0
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIgorI2luY2x1
ZGUgIkF1ZGlvQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJHT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxB
dWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9Tb3VyY2VQcm92
aWRlciYgcHJvdmlkZXIsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7Cit9
CisKK2Zsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCit7CisgICAg
cmV0dXJuIDQ0MTAwOworfQorCitBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1w
bGVSYXRlKQorICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fcmVuZGVyQnVzKDIs
IDEyOCwgdHJ1ZSkKKyAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9pc1Bs
YXlpbmcoZmFsc2UpCit7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyOjpzdGFydCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworfQorCit2b2lkIEF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXI6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVE
SU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43Y2YzNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
aApAQCAtMCwwICsxLDQ5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBQaGlsaXBwZSBO
b3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKyNkZWZpbmUgQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lcl9oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUg
IkF1ZGlvRGVzdGluYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworcHVibGlj
OgorICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZs
b2F0IHNhbXBsZVJhdGUpOworICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7
CisKKyAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxv
YXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIEF1ZGlv
U291cmNlUHJvdmlkZXImIHNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRl
cjsgfQorCitwcml2YXRlOgorICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7Cisg
ICAgQXVkaW9CdXMgbV9yZW5kZXJCdXM7CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAg
Ym9vbCBtX2lzUGxheWluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVy
R1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzA5MTYy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSAi
QXVkaW9CdXMuaCIKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJHT3du
UHRyLmgiCisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNs
dWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFu
bmVsLmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oPgorI2luY2x1ZGUgPGdz
dC9wYnV0aWxzL3BidXRpbHMuaD4KKworCisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VO
RElBTgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEdzdENhcHMqIGdl
dEdTdHJlYW1lckF1ZGlvQ2FwcyhpbnQgY2hhbm5lbHMsIGRvdWJsZSBzYW1wbGVSYXRlKQorewor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjYXBzVGVtcGxhdGUgPSAiYXVkaW8veC1yYXctZmxvYXQs
IHJhdGU9KGludCklZCwgY2hhbm5lbHM9KGludCklZCwgZW5kaWFubmVzcz0oaW50KSVkLCB3aWR0
aD0oaW50KTMyIjsKKyAgICBHT3duUHRyPGdjaGFyPiBjYXBzRGVzY3JpcHRpb24oZ19zdHJkdXBf
cHJpbnRmKGNhcHNUZW1wbGF0ZSwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVSYXRlKSwgY2hhbm5l
bHMsIEdfQllURV9PUkRFUikpOworICAgIHJldHVybiBnc3RfY2Fwc19mcm9tX3N0cmluZyhjYXBz
RGVzY3JpcHRpb24uZ2V0KCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgZ2V0RmxvYXRGcm9t
Qnl0ZVJlYWRlcihHc3RCeXRlUmVhZGVyICpyZWFkZXIsIGZsb2F0ICp2YWwpCit7CisjaWYgR19C
WVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorICAgIHJldHVybiBnc3RfYnl0ZV9yZWFkZXJf
Z2V0X2Zsb2F0MzJfbGUocmVhZGVyLCB2YWwpOworI2Vsc2UKKyAgICByZXR1cm4gZ3N0X2J5dGVf
cmVhZGVyX2dldF9mbG9hdDMyX2JlKHJlYWRlciwgdmFsKTsKKyNlbmRpZgorfQorCitzdGF0aWMg
dm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwoR3N0QnVmZmVyKiBidWZmZXIs
IGZsb2F0KiBhdWRpb0NoYW5uZWwpCit7CisgICAgR3N0Qnl0ZVJlYWRlciogYnl0ZVJlYWRlciA9
IGdzdF9ieXRlX3JlYWRlcl9uZXdfZnJvbV9idWZmZXIoYnVmZmVyKTsKKyAgICBmbG9hdCB2YWx1
ZTsKKworICAgIHdoaWxlIChnZXRGbG9hdEZyb21CeXRlUmVhZGVyKGJ5dGVSZWFkZXIsICZ2YWx1
ZSkpCisgICAgICAgICphdWRpb0NoYW5uZWwrKyA9IHZhbHVlOworICAgIGdzdF9ieXRlX3JlYWRl
cl9mcmVlKGJ5dGVSZWFkZXIpOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFwcHNpbmtO
ZXdCdWZmZXJDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0YSkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNlckRhdGEpLT5oYW5k
bGVCdWZmZXIoc2luayk7Cit9CisKK2dib29sZWFuIG1lc3NhZ2VDYWxsYmFjayhHc3RCdXMqIGJ1
cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAg
cmV0dXJuIHJlYWRlci0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKK30KKworc3RhdGljIHZvaWQg
b25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKEdzdEVsZW1lbnQqIGVsZW1l
bnQsIEdzdFBhZCogcGFkLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZWFkZXIt
PmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChwYWQpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJl
YW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgQXVkaW9G
aWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5kZWludGVybGVhdmVQYWRzQ29uZmln
dXJlZCgpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2Fs
bGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEF1ZGlvRmlsZVJlYWRlciog
cmVhZGVyKQoreworICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQpOworfQorCitnYm9v
bGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sK
KyAgICByZWFkZXItPnN0YXJ0KCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitBdWRpb0ZpbGVS
ZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCkKKyAgICA6IG1fZGF0
YSgwKQorICAgICwgbV9kYXRhU2l6ZSgwKQorICAgICwgbV9maWxlUGF0aChmaWxlUGF0aCkKK3sK
K30KKworQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGRhdGFTaXplKQorICAgIDogbV9kYXRhKGRhdGEpCisgICAgLCBtX2RhdGFTaXplKGRh
dGFTaXplKQorICAgICwgbV9maWxlUGF0aCgwKQoreworfQorCitBdWRpb0ZpbGVSZWFkZXI6On5B
dWRpb0ZpbGVSZWFkZXIoKQoreworfQorCitHc3RGbG93UmV0dXJuIEF1ZGlvRmlsZVJlYWRlcjo6
aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCit7CisgICAgR3N0QnVmZmVyKiBidWZmZXIg
PSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CisgICAgaWYgKCFidWZmZXIpCisgICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICAgIEdzdENhcHMqIGNhcHMgPSBnc3RfYnVm
ZmVyX2dldF9jYXBzKGJ1ZmZlcik7CisgICAgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3Rf
Y2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworCisgICAgZ2ludCBjaGFubmVscyA9IDA7Cisg
ICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAmY2hh
bm5lbHMpKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgICAgICByZXR1cm4g
R1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgY29uc3QgR1ZhbHVlKiBjaGFubmVsUG9zaXRp
b25zVmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShzdHJ1Y3R1cmUsICJjaGFubmVsLXBv
c2l0aW9ucyIpOworCisgICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNoYW5uZWwuIFRoZSBi
dWZmZXIgaXMgc3VwcG9zZWQgdG8gc3RvcmUKKyAgICAvLyBkYXRhIG9mIGEgc2luZ2xlIGNoYW5u
ZWwgYW55d2F5LgorICAgIGlmIChjaGFubmVscyAmJiBjaGFubmVsUG9zaXRpb25zVmFsdWUgJiYg
Z3N0X3ZhbHVlX2lzX2ZpeGVkKGNoYW5uZWxQb3NpdGlvbnNWYWx1ZSkpIHsKKyAgICAgICAgR3N0
QXVkaW9DaGFubmVsUG9zaXRpb24qIHBvc2l0aW9ucyA9IGdzdF9hdWRpb19nZXRfY2hhbm5lbF9w
b3NpdGlvbnMoc3RydWN0dXJlKTsKKworICAgICAgICBzd2l0Y2ggKHBvc2l0aW9uc1swXSkgewor
ICAgICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQ6CisgICAg
ICAgICAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9idWZmZXJfcmVmKGdzdF9idWZmZXJfam9p
bihtX2J1ZmZlckZyb250TGVmdCwgYnVmZmVyKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoKKyAgICAgICAg
ICAgIG1fYnVmZmVyRnJvbnRSaWdodCA9IGdzdF9idWZmZXJfcmVmKGdzdF9idWZmZXJfam9pbiht
X2J1ZmZlckZyb250UmlnaHQsIGJ1ZmZlcikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBnX2ZyZWUo
cG9zaXRpb25zKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsK
KyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdzdF9jYXBzX3Vu
cmVmKGNhcHMpOworICAgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworZ2Jvb2xlYW4gQXVkaW9G
aWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgaWYg
KCFtX2xvb3ApCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgc3dpdGNoIChHU1RfTUVTU0FH
RV9UWVBFKG1lc3NhZ2UpKSB7CisgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6CisgICAgICAgIGlm
IChHc3RFbGVtZW50KiBkZWludGVybGVhdmUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4o
bV9waXBlbGluZSksICJkZWludGVybGVhdmUiKSkgeworICAgICAgICAgICAgaWYgKGdfc2lnbmFs
X2hhbmRsZXJfaXNfY29ubmVjdGVkKGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVQYWRBZGRl
ZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNj
b25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJ
ZCk7CisgICAgICAgICAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25uZWN0ZWQoZGVpbnRl
cmxlYXZlLCBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAg
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWlu
dGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpOworICAgICAgICAgICAgZ3N0X29iamVj
dF91bnJlZihkZWludGVybGVhdmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEdzdEVsZW1l
bnQqIGRlY29kZWJpbiA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTihtX3BpcGVsaW5lKSwg
ImRlY29kZWJpbiIpKSB7CisgICAgICAgICAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25u
ZWN0ZWQoZGVjb2RlYmluLCBtX2RlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxlcklkKSkKKyAg
ICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVjb2RlYmluLCBtX2Rl
Y29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxlcklkKTsKKyAgICAgICAgICAgIGdzdF9vYmplY3Rf
dW5yZWYoZGVjb2RlYmluKTsKKyAgICAgICAgfQorICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1f
bG9vcCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU5l
d0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQqIHBhZCkKK3sKKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBz
aW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgMCk7CisKKyAgICBHc3RB
cHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBjYWxsYmFja3MuZW9zID0gMDsKKyAgICBj
YWxsYmFja3MubmV3X3ByZXJvbGwgPSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3Qg
PSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJh
Y2s7CisKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoc2luayks
ICZjYWxsYmFja3MsIHRoaXMsIDApOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdldEdTdHJlYW1l
ckF1ZGlvQ2FwcygxLCBtX3NhbXBsZVJhdGUpOworICAgIGdzdF9hcHBfc2lua19zZXRfY2FwcyhH
U1RfQVBQX1NJTksoc2luayksIGNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworCisg
ICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBxdWV1ZSwgc2luaywgTlVM
TCk7CisKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChx
dWV1ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsocGFkLCBzaW5rUGFkKTsKKyAgICBnc3Rf
b2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgZ3N0X2VsZW1lbnRfbGlu
a19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVD
S19OT1RISU5HKTsKKworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZSwgR1NUX1NUQVRF
X1JFQURZKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoc2luaywgR1NUX1NUQVRFX1JFQURZ
KTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFkZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVk
KCkKK3sKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BM
QVlJTkcpOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJsZWF2ZShHc3RQ
YWQqIHBhZCkKK3sKKyAgICBHc3RFbGVtZW50KiBhdWRpb0NvbnZlcnQgID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9tYWtlKCJhdWRpb2NvbnZlcnQiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBhdWRpb1Jl
c2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgMCk7Cisg
ICAgR3N0RWxlbWVudCogY2Fwc0ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiY2Fw
c2ZpbHRlciIsIDApOworICAgIEdzdEVsZW1lbnQqIGRlSW50ZXJsZWF2ZSA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgiZGVpbnRlcmxlYXZlIiwgImRlaW50ZXJsZWF2ZSIpOworCisgICAgZ19v
YmplY3Rfc2V0KGRlSW50ZXJsZWF2ZSwgImtlZXAtcG9zaXRpb25zIiwgVFJVRSwgTlVMTCk7Cisg
ICAgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5l
Y3QoZGVJbnRlcmxlYXZlLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50
ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX2RlaW50ZXJsZWF2ZU5vTW9y
ZVBhZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVJbnRlcmxlYXZlLCAibm8t
bW9yZS1wYWRzIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJh
Y2spLCB0aGlzKTsKKworICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFtZXJBdWRpb0NhcHMo
MiwgbV9zYW1wbGVSYXRlKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRlciwgImNhcHMiLCBj
YXBzLCBOVUxMKTsKKyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgIGdzdF9iaW5fYWRk
X21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBj
YXBzRmlsdGVyLCBkZUludGVybGVhdmUsIE5VTEwpOworCisgICAgR3N0UGFkKiBzaW5rUGFkID0g
Z3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAic2luayIpOworICAgIGdz
dF9wYWRfbGluayhwYWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVD
VChzaW5rUGFkKSk7CisKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb0NvbnZl
cnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RI
SU5HKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1Jlc2FtcGxlLCAic3Jj
IiwgY2Fwc0ZpbHRlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAg
Z3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoY2Fwc0ZpbHRlciwgInNyYyIsIGRlSW50ZXJsZWF2
ZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBnc3RfZWxlbWVu
dF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGF1ZGlvQ29udmVydCk7CisgICAgZ3N0X2VsZW1lbnRf
c3luY19zdGF0ZV93aXRoX3BhcmVudChhdWRpb1Jlc2FtcGxlKTsKKyAgICBnc3RfZWxlbWVudF9z
eW5jX3N0YXRlX3dpdGhfcGFyZW50KGNhcHNGaWx0ZXIpOworICAgIGdzdF9lbGVtZW50X3N5bmNf
c3RhdGVfd2l0aF9wYXJlbnQoZGVJbnRlcmxlYXZlKTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFk
ZXI6OnN0YXJ0KCkKK3sKKyAgICBtX3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldygwKTsKKwor
ICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJUEVMSU5FKG1fcGlw
ZWxpbmUpKTsKKyAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2goYnVzKTsKKyAgICBtX2J1c1Np
Z25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIsIEdfQ0FMTEJB
Q0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ3N0X29iamVjdF91bnJlZihidXMpOwor
CisgICAgR3N0RWxlbWVudCogc291cmNlOworICAgIGlmIChtX2RhdGEpIHsKKyAgICAgICAgQVNT
RVJUKG1fZGF0YVNpemUpOworICAgICAgICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoImdpb3N0cmVhbXNyYyIsIDApOworICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gbWVt
b3J5U3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEobV9kYXRhLCBt
X2RhdGFTaXplLCAwKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgInN0cmVhbSIsIG1l
bW9yeVN0cmVhbS5nZXQoKSwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmaWxlc3JjIiwgMCk7CisgICAgICAgIGdfb2JqZWN0
X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgsIE5VTEwpOworICAgIH0KKworICAg
IEdzdEVsZW1lbnQqIGRlY29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVjb2Rl
YmluMiIsICJkZWNvZGViaW4iKTsKKyAgICBtX2RlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxl
cklkID0gZ19zaWduYWxfY29ubmVjdChkZWNvZGViaW4sICJwYWQtYWRkZWQiLCBHX0NBTExCQUNL
KG9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgZ3N0
X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBzb3VyY2UsIGRlY29kZWJpbiwgTlVM
TCk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoc291cmNlLCAic3JjIiwgZGVjb2Rl
YmluLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BBVVNFRCk7Cit9CisKK3N0YXRpYyBi
b29sIGdzdEluaXRpYWxpemVkID0gZmFsc2U7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlv
RmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQor
eworICAgIG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisKKyAgICBHT3duUHRyPEdFcnJvcj4g
ZXJyb3I7CisgICAgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAmZXJyb3Iu
b3V0UHRyKCkpOworICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgLy8gVGhlIGxvb3AgbmVlZHMgaXRzIGNvbnRleHQgdG8gYmUgdGhlIHRocmVh
ZC1kZWZhdWx0IHNvIGdzdCBidXMKKyAgICAvLyBwcm9wZXJseSBkaXNwYXRjaGVzIGl0cyBtZXNz
YWdlcyB0byBvdXIgZW5kLgorICAgIG1fY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldygpOwor
ICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQobV9jb250ZXh0KTsKKyAgICBt
X2xvb3AgPSBnX21haW5fbG9vcF9uZXcobV9jb250ZXh0LCBGQUxTRSk7CisKKyAgICBtX2J1ZmZl
ckZyb250TGVmdCA9IGdzdF9idWZmZXJfbmV3KCk7CisgICAgbV9idWZmZXJGcm9udFJpZ2h0ID0g
Z3N0X2J1ZmZlcl9uZXcoKTsKKworICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGluZSBwcm9jZXNzaW5n
IGp1c3QgYWZ0ZXIgdGhlIGxvb3AgaXMgc3RhcnRlZC4KKyAgICBHU291cmNlKiB0aW1lb3V0U291
cmNlID0gZ190aW1lb3V0X3NvdXJjZV9uZXcoMCk7CisgICAgZ19zb3VyY2VfYXR0YWNoKHRpbWVv
dXRTb3VyY2UsIG1fY29udGV4dCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHRpbWVvdXRT
b3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGVudGVyZWRNYWluTG9vcENhbGxi
YWNrKSwgdGhpcywgMCk7CisKKyAgICBnX21haW5fbG9vcF9ydW4obV9sb29wKTsKKyAgICBnX21h
aW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQobV9jb250ZXh0KTsKKyAgICBnX21haW5fY29u
dGV4dF91bnJlZihtX2NvbnRleHQpOworICAgIG1fbG9vcCA9IDA7CisKKyAgICBHc3RCdXMqIGJ1
cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisKKyAg
ICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25uZWN0ZWQoYnVzLCBtX2J1c1NpZ25hbEhhbmRs
ZXJJZCkpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChidXMsIG1fYnVzU2ln
bmFsSGFuZGxlcklkKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsKKworICAgIHVuc2ln
bmVkIHNpemUgPSBHU1RfQlVGRkVSX1NJWkUobV9idWZmZXJGcm9udExlZnQpOworICAgIHVuc2ln
bmVkIGNoYW5uZWxzID0gbWl4VG9Nb25vID8gMSA6IDI7CisgICAgT3duUHRyPEF1ZGlvQnVzPiBh
dWRpb0J1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhjaGFubmVscywgc2l6ZSAvIHNpemVvZihm
bG9hdCkpKTsKKyAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShtX3NhbXBsZVJhdGUpOworCisg
ICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVyRnJvbnRMZWZ0LCBh
dWRpb0J1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpKTsKKyAgICBpZiAoIW1peFRvTW9ubykKKyAgICAg
ICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVyRnJvbnRSaWdodCwg
YXVkaW9CdXMtPmNoYW5uZWwoMSktPmRhdGEoKSk7CisKKyAgICBnc3RfYnVmZmVyX3VucmVmKG1f
YnVmZmVyRnJvbnRMZWZ0KTsKKyAgICBnc3RfYnVmZmVyX3VucmVmKG1fYnVmZmVyRnJvbnRSaWdo
dCk7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX05V
TEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChtX3BpcGVsaW5lKSk7CisKKyAg
ICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBj
cmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBib29sIG1peFRvTW9u
bywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gQXVkaW9GaWxlUmVhZGVyKGZpbGVQ
YXRoKS5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4VG9Nb25vKTsKK30KKworUGFzc093blB0cjxB
dWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpCit7Cisg
ICAgcmV0dXJuIEF1ZGlvRmlsZVJlYWRlcihkYXRhLCBkYXRhU2l6ZSkuY3JlYXRlQnVzKHNhbXBs
ZVJhdGUsIG1peFRvTW9ubyk7Cit9CisKK30gLy8gV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzE2MGU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJl
YW1lci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBBdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXJfaAorI2RlZmluZSBBdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXJf
aAorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0IF9HTWFpbkNvbnRl
eHQgR01haW5Db250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgX0dNYWluTG9vcCBHTWFpbkxvb3A7Cit0
eXBlZGVmIHN0cnVjdCBfR3N0QXBwU2luayBHc3RBcHBTaW5rOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNG
cm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBib29sIG1peFRvTW9ubywgZmxvYXQg
c2FtcGxlUmF0ZSk7CitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlB
dWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9u
bywgZmxvYXQgc2FtcGxlUmF0ZSk7CisKK2NsYXNzIEF1ZGlvRmlsZVJlYWRlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXVkaW9GaWxlUmVhZGVyKTsKK3B1YmxpYzoKKyAgICBBdWRpb0Zp
bGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpOworICAgIEF1ZGlvRmlsZVJlYWRlcihjb25z
dCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworICAgIH5BdWRpb0ZpbGVSZWFkZXIoKTsK
KworICAgIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBi
b29sIG1peFRvTW9ubyk7CisKKyAgICB2b2lkIGhhbmRsZUVuZE9mU3RyZWFtKCk7CisgICAgR3N0
Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOworICAgIGdib29sZWFuIGhhbmRs
ZU1lc3NhZ2UoR3N0TWVzc2FnZSopOworICAgIHZvaWQgaGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFk
KEdzdFBhZCopOworICAgIHZvaWQgZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKKyAgICB2
b2lkIHBsdWdEZWludGVybGVhdmUoR3N0UGFkKik7CisgICAgdm9pZCBzdGFydCgpOworCitwcml2
YXRlOgorICAgIGNvbnN0IHZvaWQqIG1fZGF0YTsKKyAgICBzaXplX3QgbV9kYXRhU2l6ZTsKKyAg
ICBjb25zdCBjaGFyKiBtX2ZpbGVQYXRoOworCisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOworICAg
IEdNYWluQ29udGV4dCogbV9jb250ZXh0OworICAgIEdNYWluTG9vcCogbV9sb29wOworICAgIEdz
dEJ1ZmZlciogbV9idWZmZXJGcm9udExlZnQ7CisgICAgR3N0QnVmZmVyKiBtX2J1ZmZlckZyb250
UmlnaHQ7CisgICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKworICAgIGd1bG9uZyBtX2J1c1Np
Z25hbEhhbmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhh
bmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVy
SWQ7CisgICAgZ3Vsb25nIG1fZGVjb2RlYmluUGFkQWRkZWRTaWduYWxIYW5kbGVySWQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0ZpbGVSZWFkZXJHU3Ry
ZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1
ZGlvQnVzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1
c0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Njk2NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1
c0d0ay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisK
KyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJHT3duUHRy
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIEdP
d25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMud2F2IiwgbmFtZSkpOwor
ICAgIEdPd25QdHI8Z2NoYXI+IGFic29sdXRlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShEQVRB
X0RJUiwgIndlYmtpdGd0ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgInJlc291cmNl
cyIsICJhdWRpbyIsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgcmV0dXJuIGNyZWF0ZUJ1
c0Zyb21BdWRpb0ZpbGUoYWJzb2x1dGVGaWxlbmFtZS5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJhZDRlMmQuLjM0ZWVkNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxl
UmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IExpbmsgYWdhaW5zdCBsaWJmZnR3LgorCiAy
MDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29kZSB3aGljaCBjYW4gYmUgc2hhcmVkIHdp
dGggV2ViS2l0MiB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGRlMGU4
NjAuLjlkZDRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC02Niw2ICs2Niw3IEBA
IGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtf
Q0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQo
TElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdT
KSBcCkBAIC05Niw2ICs5Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBCiAJJChHVEtfTElC
UykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdfTElCUykgXAorCSQoTElCRkZUV19MSUJT
KSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJTKSBcCiAJJChMSUJYU0xUX0xJ
QlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA3YmMzYzQwLi43MDNiODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0dy4KKwogMjAxMS0xMC0xMiAg
Sm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFBhc3MgUGFy
c2VkIEFjY2VwdCBBdHRyaWJ1dGUgTUlNRSBUeXBlcyB0byBXZWJLaXQgQ2xpZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQppbmRleCAzNjA0NzJjLi4xMDkzNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpA
QCAtMTMzNyw2ICsxMzM3LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9
IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAor
CSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1zX1dlYktpdFBsdWdp
blByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy
ZS5hYwppbmRleCA1NjMwNTlmLi42MzBkZDA4IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysr
IGIvY29uZmlndXJlLmFjCkBAIC0yNzcsNiArMjc3LDcgQEAgU1FMSVRFX1JFUVVJUkVEX1ZFUlNJ
T049My4wCiBHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTj0wLjEwCiBHU1RSRUFNRVJfUExVR0lO
U19CQVNFX1JFUVVJUkVEX1ZFUlNJT049MC4xMC4zMAogRU5DSEFOVF9SRVFVSVJFRF9WRVJTSU9O
PTAuMjIKK0xJQkZGVFdfUkVRVUlSRURfVkVSU0lPTj0zLjIuMgogCiAjIEF2YWlsYWJsZSBtb2R1
bGVzCiAjCkBAIC0xMDQzLDEwICsxMDQ0LDExIEBAIGlmIHRlc3QgIiRvc193aW4zMiIgPSAibm8i
OyB0aGVuCiBmaQogCiAjIGNoZWNrIGlmIGdzdHJlYW1lciBpcyBhdmFpbGFibGUKLWlmIHRlc3Qg
IiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KK2lmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0g
InllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIFBLR19D
SEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1l
ci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAgICAgICAgICAg
ICAgZ3N0cmVhbWVyLWFwcC0wLjEwCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXVk
aW8tMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAg
ICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTA1OCw2ICsxMDYwLDE3IEBAIGlmIHRl
c3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNUKFtHU1RSRUFNRVJf
TElCU10pCiBmaQogCisjIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxlCitpZiB0ZXN0ICIk
ZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0xJ
QkZGVFddLAorICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJGRlRXX1JFUVVJUkVE
X1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElCRkZUV19SRVFVSVJF
RF9WRVJTSU9OXSwKKyAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9eWVzXSkKKworICAg
IEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCisgICAgQUNfU1VCU1QoW0xJQkZGVFdfTElCU10p
CitmaQorCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3QgIiRlbmFi
bGVfY292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1EIgpAQCAt
MTEzMSw2ICsxMTQ0LDkgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10sIFt0ZXN0ICIkd2l0
aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCiAjIEdTdHJlYW1lciBmZWF0dXJlIGNvbmRpdGlv
bmFsCiBBTV9DT05ESVRJT05BTChbVVNFX0dTVFJFQU1FUl0sIFt0ZXN0ICIkaGF2ZV9nc3RyZWFt
ZXIiID0gInllcyJdKQogCisjIFdlYiBBdWRpbyBmZWF0dXJlIGNvbmRpdGlvbmFsCitBTV9DT05E
SVRJT05BTChbVVNFX1dFQkFVRElPX0ZGVFddLCBbdGVzdCAiJGhhdmVfZmZ0dyIgPSAieWVzIl0p
CisKICMgV2ViS2l0IGZlYXR1cmUgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJT05BTChbRU5BQkxF
X0RFQlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1Z19mZWF0dXJlcyIgPSAieWVzIl0pCiBBTV9DT05E
SVRJT05BTChbRU5BQkxFXzNEX1JFTkRFUklOR10sW3Rlc3QgIiRlbmFibGVfM2RfcmVuZGVyaW5n
IiA9ICJ5ZXMiXSkKLS0gCjEuNy43LnJjMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110835</attachid>
            <date>2011-10-13 06:03:04 -0700</date>
            <delta_ts>2011-10-13 10:16:44 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>41704</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzNDE0NTMxNWIzZDI3MjgyNWRjZjY1OTAyYzRlYWZiZjFiMzM3NDVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA1NiArKysr
CiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTAgKwogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAg
fCAgMTE2ICsrKysrKystCiAuLi4vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXIuY3BwICB8ICAgNjUgKysrKwogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmggICAgfCAgIDQ5ICsrKwogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXIuY3BwICAgfCAgMzQ0ICsrKysrKysrKysrKysrKysrKysrCiAuLi4v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oICAgICB8ICAgNzUgKysr
KysKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAgIHwg
ICA0MiArKysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAg
ICAgICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDgwMCBpbnNl
cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNw
cAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVh
bWVyLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMmM5NjRhZi4uYzhmMTg4YyAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4gYW5kIFphbiBE
b2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBX
ZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBs
aWJmZnR3IGFuZCBnc3RyZWFtZXItYXVkaW8gaWYgV2ViQXVkaW8KKyAgICAgICAgYnVpbGQgaXMg
ZW5hYmxlZC4KKwogMjAxMS0xMC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBFTkFCTEUoWEhUTUxNUCkgYW5kIGFzc29jaWF0ZWQgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDYwMDBkYjAuLjhmOGI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBa
YW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhc2ljIEZpbGVSZWFkZXIgaW1wbGVt
ZW50YXRpb24sIHN1cHBvcnRpbmcgb25lIG9yIDIgYXVkaW8KKyAgICAgICAgY2hhbm5lbHMuIEFu
IGVtcHR5IEF1ZGlvRGVzdGluYXRpb24gaXMgYWxzbyBwcm92aWRlZCwgaXRzIGNvbXBsZXRlCisg
ICAgICAgIGltcGxlbWVudGF0aW9uIGlzIGhhbmRsZWQgaW4gYnVnIDY5ODM1LgorCisgICAgICAg
ICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVz
dGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpo
YXJkd2FyZVNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmlzUGxh
eWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzYW1w
bGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnNv
dXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRHU3Ry
ZWFtZXJBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmxvYXRGcm9tQnl0ZVJlYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwp
OgorICAgICAgICAoV2ViQ29yZTo6b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6bWVzc2FnZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uR1N0cmVh
bWVyRGVpbnRlcmxlYXZlUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdT
dHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6b25H
U3RyZWFtZXJEZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmVu
dGVyZWRNYWluTG9vcENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6QXVkaW9GaWxlUmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6
fkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6Omhh
bmRsZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWludGVy
bGVhdmVQYWRzQ29uZmlndXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6
OnBsdWdEZWludGVybGVhdmUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpz
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmNyZWF0ZUJ1cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisKIDIwMTEtMTAtMTIg
IEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBQYXNzIFBh
cnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8gV2ViS2l0IENsaWVudHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggYzcwNzkzYy4uYzViZmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
QEAgLTk5LDYgKzk5LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvIFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ayBcCkBAIC01
MTYsNiArNTE3LDE0IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWExpbmtOYW1lcy5jcHAgOiAk
KFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvCiBpZiBFTkFCTEVfV0VCX0FV
RElPCiBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJjb3JlX2NwcGZs
YWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCisKK2lmIFVTRV9XRUJBVURJT19GRlRXCitGRUFU
VVJFX0RFRklORVMgKz0gV1RGX1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVfY3BwZmxhZ3Mg
Kz0gLURXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAKK2VuZGlmCisK
IGVuZGlmCiAKICMgLS0tLQpAQCAtODIwLDYgKzgyOSw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQ
RkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChI
SUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1Mp
IFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCAwMjRkMTcwLi5jNzFkOGI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTE0NCw2ICsxNDQsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01VUkwuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01XaW5kb3cuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nv
ck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNFbnRpdHkuY3BwIFwKQEAgLTUwNyw2ICs1MDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMg
Kz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRlLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZl
U2hhcGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9k
ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZvLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTV2ViR0xCdWZmZXIuY3BwIFwKQEAgLTQ2MDUsOCArNDYwOSwxNyBAQCBl
bmRpZiAjIEVORCBFTkFCTEVfU1ZHCiAjIC0tLS0KICMgV2ViIEF1ZGlvIFN1cHBvcnQKICMgLS0t
LQorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29udm9sdmVyTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTQ2MzYsNDIgKzQ2NDksMTMwIEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvUGFyYW1UaW1lbGluZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFy
YW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdF
dmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2Vy
bmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9EZWxheVByb2Nlc3Nvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5v
ZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2Rl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5
c2VyTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJO
b2RlLmgKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCisJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2
ZVNoYXBlclByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0NoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9EZXN0aW5hdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RT
UEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5l
bFByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
RmlsZVJlYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nl
c3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Tb3VyY2VQcm92aWRlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25l
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZUQ29udm9sdmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
Q29udm9sdmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRWxldmF0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkVsZXZhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0
aW9uQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNj
dW11bGF0aW9uQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXJTdGFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1ZlY3Rvck1hdGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0
b3JNYXRoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCiB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5j
cHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxsYmFjay5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9DaGFubmVsTWVyZ2VyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5u
ZWxTcGxpdHRlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxT
cGxpdHRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Db250ZXh0LmNwcCBc
Ci0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvR2Fpbi5jcHAgXApAQCAtNDY4MiwxNCArNDc4MywxNCBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVy
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb05vZGUuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Q
YW5uZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFyYW0uaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1NvdXJjZU5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9Tb3VyY2VOb2RlLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJO
b2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0JpcXVhZEZpbHRlck5vZGUuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnZvbHZlck5vZGUuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQ29udm9sdmVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRGVsYXlOb2RlLmNwcCBcCkBAIC00Njk4LDEyICs0Nzk5LDE3IEBAIHdlYmNvcmVfYnVp
bHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hpZ2hQYXNzMkZpbHRl
ck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNw
cCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTG93UGFzczJGaWx0ZXJOb2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVBbmFseXNlck5vZGUuaAogZW5kaWYKIAor
CiAjIC0tLS0KICMgV2ViIFNvY2tldHMgU3VwcG9ydAogIyAtLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTQzZDg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDY1
IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VC
X0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIgorCisjaW5j
bHVkZSAiQXVkaW9DaGFubmVsLmgiCisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlci5oIgor
I2luY2x1ZGUgIkdPd25QdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZShBdWRpb1NvdXJjZVBy
b3ZpZGVyJiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIocHJvdmlkZXIsIHNhbXBsZVJhdGUpKTsK
K30KKworZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkKK3sKKyAg
ICByZXR1cm4gNDQxMDA7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIGZsb2F0IHNh
bXBsZVJhdGUpCisgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQorICAgICwgbV9yZW5kZXJCdXMo
MiwgMTI4LCB0cnVlKQorICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCisgICAgLCBtX2lz
UGxheWluZyhmYWxzZSkKK3sKK30KKworQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIoKQoreworfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OnN0YXJ0KCkKK3sKKyAgICBtX2lzUGxheWluZyA9IHRydWU7Cit9CisKK3ZvaWQgQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSBmYWxz
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9B
VURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjM3OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIFBoaWxpcHBl
IE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaWZuZGVmIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaAorI2RlZmluZSBBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVk
ZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CitwdWJs
aWM6CisgICAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb1NvdXJjZVByb3ZpZGVyJiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cigpOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KTsKKworICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KKyAgICBm
bG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1wbGVSYXRlOyB9CisgICAgQXVk
aW9Tb3VyY2VQcm92aWRlciYgc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zp
ZGVyOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgbV9wcm92aWRlcjsK
KyAgICBBdWRpb0J1cyBtX3JlbmRlckJ1czsKKworICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKKyAg
ICBib29sIG1faXNQbGF5aW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NTk3
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcApAQCAtMCwwICsxLDM0NCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICogIENvcHlyaWdodCAoQykgMjAx
MSBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FV
RElPKQorCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmgiCisKKyNpbmNsdWRl
ICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgorI2luY2x1ZGUgIkdP
d25QdHIuaCIKKyNpbmNsdWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2lu
Y2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNo
YW5uZWwuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg+CisjaW5jbHVkZSA8
Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IEdzdENhcHMqIGdldEdTdHJlYW1lckF1ZGlvQ2FwcyhpbnQgY2hhbm5lbHMsIGRvdWJsZSBzYW1w
bGVSYXRlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjYXBzVGVtcGxhdGUgPSAiYXVkaW8v
eC1yYXctZmxvYXQsIHJhdGU9KGludCklZCwgY2hhbm5lbHM9KGludCklZCwgZW5kaWFubmVzcz0o
aW50KSVkLCB3aWR0aD0oaW50KTMyIjsKKyAgICBHT3duUHRyPGdjaGFyPiBjYXBzRGVzY3JpcHRp
b24oZ19zdHJkdXBfcHJpbnRmKGNhcHNUZW1wbGF0ZSwgc3RhdGljX2Nhc3Q8aW50PihzYW1wbGVS
YXRlKSwgY2hhbm5lbHMsIEdfQllURV9PUkRFUikpOworICAgIHJldHVybiBnc3RfY2Fwc19mcm9t
X3N0cmluZyhjYXBzRGVzY3JpcHRpb24uZ2V0KCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
Z2V0RmxvYXRGcm9tQnl0ZVJlYWRlcihHc3RCeXRlUmVhZGVyICpyZWFkZXIsIGZsb2F0ICp2YWwp
Cit7CisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorICAgIHJldHVybiBnc3Rf
Ynl0ZV9yZWFkZXJfZ2V0X2Zsb2F0MzJfbGUocmVhZGVyLCB2YWwpOworI2Vsc2UKKyAgICByZXR1
cm4gZ3N0X2J5dGVfcmVhZGVyX2dldF9mbG9hdDMyX2JlKHJlYWRlciwgdmFsKTsKKyNlbmRpZgor
fQorCitzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwoR3N0QnVm
ZmVyKiBidWZmZXIsIGZsb2F0KiBhdWRpb0NoYW5uZWwpCit7CisgICAgR3N0Qnl0ZVJlYWRlciog
Ynl0ZVJlYWRlciA9IGdzdF9ieXRlX3JlYWRlcl9uZXdfZnJvbV9idWZmZXIoYnVmZmVyKTsKKyAg
ICBmbG9hdCB2YWx1ZTsKKworICAgIHdoaWxlIChnZXRGbG9hdEZyb21CeXRlUmVhZGVyKGJ5dGVS
ZWFkZXIsICZ2YWx1ZSkpCisgICAgICAgICphdWRpb0NoYW5uZWwrKyA9IHZhbHVlOworICAgIGdz
dF9ieXRlX3JlYWRlcl9mcmVlKGJ5dGVSZWFkZXIpOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVy
biBvbkFwcHNpbmtOZXdCdWZmZXJDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1
c2VyRGF0YSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNl
ckRhdGEpLT5oYW5kbGVCdWZmZXIoc2luayk7Cit9CisKK2dib29sZWFuIG1lc3NhZ2VDYWxsYmFj
ayhHc3RCdXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFk
ZXIpCit7CisgICAgcmV0dXJuIHJlYWRlci0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKK30KKwor
c3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKEdzdEVs
ZW1lbnQqIGVsZW1lbnQsIEdzdFBhZCogcGFkLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sK
KyAgICByZWFkZXItPmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChwYWQpOworfQorCitzdGF0aWMg
dm9pZCBvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2soR3N0RWxlbWVudCogZWxl
bWVudCwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5kZWludGVybGVh
dmVQYWRzQ29uZmlndXJlZCgpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJp
blBhZEFkZGVkQ2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEF1ZGlv
RmlsZVJlYWRlciogcmVhZGVyKQoreworICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQp
OworfQorCitnYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhBdWRpb0ZpbGVSZWFkZXIq
IHJlYWRlcikKK3sKKyAgICByZWFkZXItPnN0YXJ0KCk7CisgICAgcmV0dXJuIEZBTFNFOworfQor
CitBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCkK
KyAgICA6IG1fZGF0YSgwKQorICAgICwgbV9kYXRhU2l6ZSgwKQorICAgICwgbV9maWxlUGF0aChm
aWxlUGF0aCkKK3sKK30KKworQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKQorICAgIDogbV9kYXRhKGRhdGEpCisgICAgLCBt
X2RhdGFTaXplKGRhdGFTaXplKQorICAgICwgbV9maWxlUGF0aCgwKQoreworfQorCitBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQoreworfQorCitHc3RGbG93UmV0dXJuIEF1ZGlv
RmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCit7CisgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICAgIEdzdENhcHMqIGNh
cHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7CisgICAgR3N0U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworCisgICAgZ2ludCBjaGFu
bmVscyA9IDA7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hh
bm5lbHMiLCAmY2hhbm5lbHMpKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAg
ICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgY29uc3QgR1ZhbHVlKiBj
aGFubmVsUG9zaXRpb25zVmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShzdHJ1Y3R1cmUs
ICJjaGFubmVsLXBvc2l0aW9ucyIpOworCisgICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlvIGNo
YW5uZWwuIFRoZSBidWZmZXIgaXMgc3VwcG9zZWQgdG8gc3RvcmUKKyAgICAvLyBkYXRhIG9mIGEg
c2luZ2xlIGNoYW5uZWwgYW55d2F5LgorICAgIGlmIChjaGFubmVscyAmJiBjaGFubmVsUG9zaXRp
b25zVmFsdWUgJiYgZ3N0X3ZhbHVlX2lzX2ZpeGVkKGNoYW5uZWxQb3NpdGlvbnNWYWx1ZSkpIHsK
KyAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24qIHBvc2l0aW9ucyA9IGdzdF9hdWRpb19n
ZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlKTsKKworICAgICAgICBzd2l0Y2ggKHBvc2l0
aW9uc1swXSkgeworICAgICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05U
X0xFRlQ6CisgICAgICAgICAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9idWZmZXJfcmVmKGdz
dF9idWZmZXJfam9pbihtX2J1ZmZlckZyb250TGVmdCwgYnVmZmVyKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdI
VDoKKyAgICAgICAgICAgIG1fYnVmZmVyRnJvbnRSaWdodCA9IGdzdF9idWZmZXJfcmVmKGdzdF9i
dWZmZXJfam9pbihtX2J1ZmZlckZyb250UmlnaHQsIGJ1ZmZlcikpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBnX2ZyZWUocG9zaXRpb25zKTsKKyAgICB9IGVsc2UgeworICAgICAgICBnc3RfY2Fwc191
bnJlZihjYXBzKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAg
IGdzdF9jYXBzX3VucmVmKGNhcHMpOworICAgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworZ2Jv
b2xlYW4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
Cit7CisgICAgaWYgKCFtX2xvb3ApCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgc3dpdGNo
IChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpKSB7CisgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6
CisgICAgICAgIGlmIChHc3RFbGVtZW50KiBkZWludGVybGVhdmUgPSBnc3RfYmluX2dldF9ieV9u
YW1lKEdTVF9CSU4obV9waXBlbGluZSksICJkZWludGVybGVhdmUiKSkgeworICAgICAgICAgICAg
aWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKGRlaW50ZXJsZWF2ZSwgbV9kZWludGVy
bGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgICAgICAgICAgZ19zaWduYWxf
aGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVQYWRBZGRlZFNp
Z25hbEhhbmRsZXJJZCk7CisgICAgICAgICAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25u
ZWN0ZWQoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJ
ZCkpCisgICAgICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJs
ZWF2ZSwgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpOworICAgICAgICAg
ICAgZ3N0X29iamVjdF91bnJlZihkZWludGVybGVhdmUpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKEdzdEVsZW1lbnQqIGRlY29kZWJpbiA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTiht
X3BpcGVsaW5lKSwgImRlY29kZWJpbiIpKSB7CisgICAgICAgICAgICBpZiAoZ19zaWduYWxfaGFu
ZGxlcl9pc19jb25uZWN0ZWQoZGVjb2RlYmluLCBtX2RlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFu
ZGxlcklkKSkKKyAgICAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVj
b2RlYmluLCBtX2RlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxlcklkKTsKKyAgICAgICAgICAg
IGdzdF9vYmplY3RfdW5yZWYoZGVjb2RlYmluKTsKKyAgICAgICAgfQorICAgICAgICBnX21haW5f
bG9vcF9xdWl0KG1fbG9vcCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gVFJVRTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFk
ZXI6OmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQqIHBhZCkKK3sKKyAgICBHc3RFbGVt
ZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBH
c3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgMCk7
CisKKyAgICBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBjYWxsYmFja3MuZW9z
ID0gMDsKKyAgICBjYWxsYmFja3MubmV3X3ByZXJvbGwgPSAwOworICAgIGNhbGxiYWNrcy5uZXdf
YnVmZmVyX2xpc3QgPSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rTmV3
QnVmZmVyQ2FsbGJhY2s7CisKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQ
X1NJTksoc2luayksICZjYWxsYmFja3MsIHRoaXMsIDApOworCisgICAgR3N0Q2FwcyogY2FwcyA9
IGdldEdTdHJlYW1lckF1ZGlvQ2FwcygxLCBtX3NhbXBsZVJhdGUpOworICAgIGdzdF9hcHBfc2lu
a19zZXRfY2FwcyhHU1RfQVBQX1NJTksoc2luayksIGNhcHMpOworICAgIGdzdF9jYXBzX3VucmVm
KGNhcHMpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBxdWV1
ZSwgc2luaywgTlVMTCk7CisKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsocGFkLCBzaW5rUGFk
KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgZ3N0
X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMiLCBzaW5rLCAic2luayIsIEdTVF9Q
QURfTElOS19DSEVDS19OT1RISU5HKTsKKworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1
ZSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoc2luaywgR1NU
X1NUQVRFX1JFQURZKTsKK30KKwordm9pZCBBdWRpb0ZpbGVSZWFkZXI6OmRlaW50ZXJsZWF2ZVBh
ZHNDb25maWd1cmVkKCkKK3sKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwg
R1NUX1NUQVRFX1BMQVlJTkcpOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50
ZXJsZWF2ZShHc3RQYWQqIHBhZCkKK3sKKyAgICBHc3RFbGVtZW50KiBhdWRpb0NvbnZlcnQgID0g
Z3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb2NvbnZlcnQiLCAwKTsKKyAgICBHc3RFbGVt
ZW50KiBhdWRpb1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2Ft
cGxlIiwgMCk7CisgICAgR3N0RWxlbWVudCogY2Fwc0ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfbWFrZSgiY2Fwc2ZpbHRlciIsIDApOworICAgIEdzdEVsZW1lbnQqIGRlSW50ZXJsZWF2ZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVpbnRlcmxlYXZlIiwgImRlaW50ZXJsZWF2ZSIp
OworCisgICAgZ19vYmplY3Rfc2V0KGRlSW50ZXJsZWF2ZSwgImtlZXAtcG9zaXRpb25zIiwgVFJV
RSwgTlVMTCk7CisgICAgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdf
c2lnbmFsX2Nvbm5lY3QoZGVJbnRlcmxlYXZlLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdT
dHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX2RlaW50
ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVJbnRl
cmxlYXZlLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2
ZVJlYWR5Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFt
ZXJBdWRpb0NhcHMoMiwgbV9zYW1wbGVSYXRlKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRl
ciwgImNhcHMiLCBjYXBzLCBOVUxMKTsKKyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAg
IGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgYXVkaW9Db252ZXJ0LCBhdWRp
b1Jlc2FtcGxlLCBjYXBzRmlsdGVyLCBkZUludGVybGVhdmUsIE5VTEwpOworCisgICAgR3N0UGFk
KiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAic2lu
ayIpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3RfdW5y
ZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVs
bChhdWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2luayIsIEdTVF9QQURfTElO
S19DSEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1Jl
c2FtcGxlLCAic3JjIiwgY2Fwc0ZpbHRlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoY2Fwc0ZpbHRlciwgInNyYyIs
IGRlSW50ZXJsZWF2ZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAg
ICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGF1ZGlvQ29udmVydCk7CisgICAg
Z3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChhdWRpb1Jlc2FtcGxlKTsKKyAgICBn
c3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGNhcHNGaWx0ZXIpOworICAgIGdzdF9l
bGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoZGVJbnRlcmxlYXZlKTsKK30KKwordm9pZCBB
dWRpb0ZpbGVSZWFkZXI6OnN0YXJ0KCkKK3sKKyAgICBtX3BpcGVsaW5lID0gZ3N0X3BpcGVsaW5l
X25ldygwKTsKKworICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMoR1NUX1BJ
UEVMSU5FKG1fcGlwZWxpbmUpKTsKKyAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2goYnVzKTsK
KyAgICBtX2J1c1NpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2Fn
ZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CisgICAgZ3N0X29iamVjdF91
bnJlZihidXMpOworCisgICAgR3N0RWxlbWVudCogc291cmNlOworICAgIGlmIChtX2RhdGEpIHsK
KyAgICAgICAgQVNTRVJUKG1fZGF0YVNpemUpOworICAgICAgICBzb3VyY2UgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImdpb3N0cmVhbXNyYyIsIDApOworICAgICAgICBHUmVmUHRyPEdJbnB1
dFN0cmVhbT4gbWVtb3J5U3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2Rh
dGEobV9kYXRhLCBtX2RhdGFTaXplLCAwKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwg
InN0cmVhbSIsIG1lbW9yeVN0cmVhbS5nZXQoKSwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgc291cmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmaWxlc3JjIiwgMCk7CisgICAg
ICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgsIE5VTEwpOwor
ICAgIH0KKworICAgIEdzdEVsZW1lbnQqIGRlY29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgiZGVjb2RlYmluMiIsICJkZWNvZGViaW4iKTsKKyAgICBtX2RlY29kZWJpblBhZEFkZGVk
U2lnbmFsSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChkZWNvZGViaW4sICJwYWQtYWRkZWQi
LCBHX0NBTExCQUNLKG9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayksIHRoaXMp
OworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBzb3VyY2UsIGRl
Y29kZWJpbiwgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoc291cmNlLCAi
c3JjIiwgZGVjb2RlYmluLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BBVVNFRCk7Cit9
CisKK3N0YXRpYyBib29sIGdzdEluaXRpYWxpemVkID0gZmFsc2U7CisKK1Bhc3NPd25QdHI8QXVk
aW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wg
bWl4VG9Nb25vKQoreworICAgIG1fc2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisKKyAgICBHT3du
UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygw
LCAwLCAmZXJyb3Iub3V0UHRyKCkpOworICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgLy8gVGhlIGxvb3AgbmVlZHMgaXRzIGNvbnRleHQgdG8g
YmUgdGhlIHRocmVhZC1kZWZhdWx0IHNvIGdzdCBidXMKKyAgICAvLyBwcm9wZXJseSBkaXNwYXRj
aGVzIGl0cyBtZXNzYWdlcyB0byBvdXIgZW5kLgorICAgIG1fY29udGV4dCA9IGdfbWFpbl9jb250
ZXh0X25ldygpOworICAgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQobV9jb250
ZXh0KTsKKyAgICBtX2xvb3AgPSBnX21haW5fbG9vcF9uZXcobV9jb250ZXh0LCBGQUxTRSk7CisK
KyAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9idWZmZXJfbmV3KCk7CisgICAgbV9idWZmZXJG
cm9udFJpZ2h0ID0gZ3N0X2J1ZmZlcl9uZXcoKTsKKworICAgIC8vIFN0YXJ0IHRoZSBwaXBlbGlu
ZSBwcm9jZXNzaW5nIGp1c3QgYWZ0ZXIgdGhlIGxvb3AgaXMgc3RhcnRlZC4KKyAgICBHU291cmNl
KiB0aW1lb3V0U291cmNlID0gZ190aW1lb3V0X3NvdXJjZV9uZXcoMCk7CisgICAgZ19zb3VyY2Vf
YXR0YWNoKHRpbWVvdXRTb3VyY2UsIG1fY29udGV4dCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKHRpbWVvdXRTb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGVudGVyZWRN
YWluTG9vcENhbGxiYWNrKSwgdGhpcywgMCk7CisKKyAgICBnX21haW5fbG9vcF9ydW4obV9sb29w
KTsKKyAgICBnX21haW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQobV9jb250ZXh0KTsKKyAg
ICBnX21haW5fY29udGV4dF91bnJlZihtX2NvbnRleHQpOworICAgIG1fbG9vcCA9IDA7CisKKyAg
ICBHc3RCdXMqIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVs
aW5lKSk7CisKKyAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19jb25uZWN0ZWQoYnVzLCBtX2J1
c1NpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChi
dXMsIG1fYnVzU2lnbmFsSGFuZGxlcklkKTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYoYnVzKTsK
KworICAgIHVuc2lnbmVkIHNpemUgPSBHU1RfQlVGRkVSX1NJWkUobV9idWZmZXJGcm9udExlZnQp
OworICAgIHVuc2lnbmVkIGNoYW5uZWxzID0gbWl4VG9Nb25vID8gMSA6IDI7CisgICAgT3duUHRy
PEF1ZGlvQnVzPiBhdWRpb0J1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhjaGFubmVscywgc2l6
ZSAvIHNpemVvZihmbG9hdCkpKTsKKyAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShtX3NhbXBs
ZVJhdGUpOworCisgICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVy
RnJvbnRMZWZ0LCBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpKTsKKyAgICBpZiAoIW1peFRv
TW9ubykKKyAgICAgICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVy
RnJvbnRSaWdodCwgYXVkaW9CdXMtPmNoYW5uZWwoMSktPmRhdGEoKSk7CisKKyAgICBnc3RfYnVm
ZmVyX3VucmVmKG1fYnVmZmVyRnJvbnRMZWZ0KTsKKyAgICBnc3RfYnVmZmVyX3VucmVmKG1fYnVm
ZmVyRnJvbnRSaWdodCk7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwg
R1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChtX3BpcGVs
aW5lKSk7CisKKyAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRy
PEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBi
b29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gQXVkaW9GaWxl
UmVhZGVyKGZpbGVQYXRoKS5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4VG9Nb25vKTsKK30KKwor
UGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBs
ZVJhdGUpCit7CisgICAgcmV0dXJuIEF1ZGlvRmlsZVJlYWRlcihkYXRhLCBkYXRhU2l6ZSkuY3Jl
YXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9ubyk7Cit9CisKK30gLy8gV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzE2MGU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFuIERvYmVyc2VrICA8
emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2lmbmRlZiBBdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXJfaAorI2RlZmluZSBBdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXJfaAorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3R5cGVkZWYgc3RydWN0
IF9HTWFpbkNvbnRleHQgR01haW5Db250ZXh0OwordHlwZWRlZiBzdHJ1Y3QgX0dNYWluTG9vcCBH
TWFpbkxvb3A7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QXBwU2luayBHc3RBcHBTaW5rOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvQnVzOworCitQYXNzT3duUHRyPEF1ZGlvQnVz
PiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBib29sIG1peFRv
TW9ubywgZmxvYXQgc2FtcGxlUmF0ZSk7CitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNG
cm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBi
b29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSk7CisKK2NsYXNzIEF1ZGlvRmlsZVJlYWRl
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9GaWxlUmVhZGVyKTsKK3B1YmxpYzoK
KyAgICBBdWRpb0ZpbGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpOworICAgIEF1ZGlvRmls
ZVJlYWRlcihjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworICAgIH5BdWRpb0Zp
bGVSZWFkZXIoKTsKKworICAgIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBz
YW1wbGVSYXRlLCBib29sIG1peFRvTW9ubyk7CisKKyAgICB2b2lkIGhhbmRsZUVuZE9mU3RyZWFt
KCk7CisgICAgR3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0QXBwU2luayopOworICAgIGdi
b29sZWFuIGhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSopOworICAgIHZvaWQgaGFuZGxlTmV3RGVp
bnRlcmxlYXZlUGFkKEdzdFBhZCopOworICAgIHZvaWQgZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3Vy
ZWQoKTsKKyAgICB2b2lkIHBsdWdEZWludGVybGVhdmUoR3N0UGFkKik7CisgICAgdm9pZCBzdGFy
dCgpOworCitwcml2YXRlOgorICAgIGNvbnN0IHZvaWQqIG1fZGF0YTsKKyAgICBzaXplX3QgbV9k
YXRhU2l6ZTsKKyAgICBjb25zdCBjaGFyKiBtX2ZpbGVQYXRoOworCisgICAgZmxvYXQgbV9zYW1w
bGVSYXRlOworICAgIEdNYWluQ29udGV4dCogbV9jb250ZXh0OworICAgIEdNYWluTG9vcCogbV9s
b29wOworICAgIEdzdEJ1ZmZlciogbV9idWZmZXJGcm9udExlZnQ7CisgICAgR3N0QnVmZmVyKiBt
X2J1ZmZlckZyb250UmlnaHQ7CisgICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKworICAgIGd1
bG9uZyBtX2J1c1NpZ25hbEhhbmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVQYWRB
ZGRlZFNpZ25hbEhhbmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRT
aWduYWxIYW5kbGVySWQ7CisgICAgZ3Vsb25nIG1fZGVjb2RlYmluUGFkQWRkZWRTaWduYWxIYW5k
bGVySWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBBdWRpb0Zp
bGVSZWFkZXJHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2d0ay9BdWRpb0J1c0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTk0Njk2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2d0ay9BdWRpb0J1c0d0ay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1
ZGlvQnVzLmgiCisKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCIKKyNpbmNs
dWRlICJHT3duUHRyLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z2xpYi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVz
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCBzYW1wbGVSYXRl
KQoreworICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMud2F2
IiwgbmFtZSkpOworICAgIEdPd25QdHI8Z2NoYXI+IGFic29sdXRlRmlsZW5hbWUoZ19idWlsZF9m
aWxlbmFtZShEQVRBX0RJUiwgIndlYmtpdGd0ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklO
RywgInJlc291cmNlcyIsICJhdWRpbyIsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgcmV0
dXJuIGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoYWJzb2x1dGVGaWxlbmFtZS5nZXQoKSwgZmFsc2Us
IHNhbXBsZVJhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJhZDRlMmQuLjM0ZWVkNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2ViQXVk
aW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IExpbmsgYWdhaW5zdCBs
aWJmZnR3LgorCiAyMDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29kZSB3aGljaCBjYW4g
YmUgc2hhcmVkIHdpdGggV2ViS2l0MiB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGRlMGU4NjAuLjlkZDRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC02
Niw2ICs2Niw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9A
V0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJJChHU1RSRUFNRVJfQ0ZMQUdT
KSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NG
TEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJ
QlhTTFRfQ0ZMQUdTKSBcCkBAIC05Niw2ICs5Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJB
CiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdfTElCUykgXAorCSQo
TElCRkZUV19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJTKSBcCiAJ
JChMSUJYU0xUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YmMzYzQwLi43MDNiODRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmls
ZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0dy4KKwog
MjAxMS0xMC0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFBhc3MgUGFyc2VkIEFjY2VwdCBBdHRyaWJ1dGUgTUlNRSBUeXBlcyB0byBXZWJLaXQgQ2xp
ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzNjA0NzJjLi4xMDkzNGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTMzNyw2ICsxMzM3LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJv
Y2Vzc19MREFERCA9IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lO
TU1fTElCUykgXAorCSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1z
X1dlYktpdFBsdWdpblByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5h
YyBiL2NvbmZpZ3VyZS5hYwppbmRleCA1NjMwNTlmLi42MzBkZDA4IDEwMDY0NAotLS0gYS9jb25m
aWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yNzcsNiArMjc3LDcgQEAgU1FMSVRFX1JF
UVVJUkVEX1ZFUlNJT049My4wCiBHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTj0wLjEwCiBHU1RS
RUFNRVJfUExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJT049MC4xMC4zMAogRU5DSEFOVF9SRVFV
SVJFRF9WRVJTSU9OPTAuMjIKK0xJQkZGVFdfUkVRVUlSRURfVkVSU0lPTj0zLjIuMgogCiAjIEF2
YWlsYWJsZSBtb2R1bGVzCiAjCkBAIC0xMDQzLDEwICsxMDQ0LDExIEBAIGlmIHRlc3QgIiRvc193
aW4zMiIgPSAibm8iOyB0aGVuCiBmaQogCiAjIGNoZWNrIGlmIGdzdHJlYW1lciBpcyBhdmFpbGFi
bGUKLWlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KK2lmIHRlc3QgIiRlbmFi
bGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRo
ZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAgICAgICAgICAgICAgICAg
ICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCisgICAgICAgICAgICAgICAgICAgICBn
c3RyZWFtZXItYXVkaW8tMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2Ut
MC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAg
ICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTA1OCw2ICsxMDYw
LDE3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNU
KFtHU1RSRUFNRVJfTElCU10pCiBmaQogCisjIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxl
CitpZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNL
X01PRFVMRVMoW0xJQkZGVFddLAorICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJG
RlRXX1JFUVVJUkVEX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElC
RkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKKyAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9
eWVzXSkKKworICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCisgICAgQUNfU1VCU1QoW0xJ
QkZGVFdfTElCU10pCitmaQorCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlm
IHRlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFH
Uz0iLU1EIgpAQCAtMTEzMSw2ICsxMTQ0LDkgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10s
IFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCiAjIEdTdHJlYW1lciBmZWF0
dXJlIGNvbmRpdGlvbmFsCiBBTV9DT05ESVRJT05BTChbVVNFX0dTVFJFQU1FUl0sIFt0ZXN0ICIk
aGF2ZV9nc3RyZWFtZXIiID0gInllcyJdKQogCisjIFdlYiBBdWRpbyBmZWF0dXJlIGNvbmRpdGlv
bmFsCitBTV9DT05ESVRJT05BTChbVVNFX1dFQkFVRElPX0ZGVFddLCBbdGVzdCAiJGhhdmVfZmZ0
dyIgPSAieWVzIl0pCisKICMgV2ViS2l0IGZlYXR1cmUgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJ
T05BTChbRU5BQkxFX0RFQlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1Z19mZWF0dXJlcyIgPSAieWVz
Il0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFXzNEX1JFTkRFUklOR10sW3Rlc3QgIiRlbmFibGVf
M2RfcmVuZGVyaW5nIiA9ICJ5ZXMiXSkKLS0gCjEuNy43LnJjMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110867</attachid>
            <date>2011-10-13 10:16:44 -0700</date>
            <delta_ts>2011-10-14 01:23:53 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>41368</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyOGE4NTM3OTI2YzEyOGE1OWQwNTg2ODhjNWU2NTIyNWUzNTJhMGZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0OCArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTYgKysrKysrKy0KIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAgIHwgICA2NSArKysrCiAuLi4vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuaCAgICB8ICAgNDkgKysrCiAuLi4vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5jcHAgICB8ICAzNDcgKysrKysrKysrKysrKysrKysrKysKIC4uLi9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmggICAgIHwgICA2OCArKysr
CiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwICB8ICAg
NDIgKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAg
ICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIDEgKwogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE4ICstCiAxNCBmaWxlcyBjaGFuZ2VkLCA3ODggaW5zZXJ0
aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1l
ci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCgpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDJjOTY0YWYuLmM4ZjE4OGMgMTAwNjQ0
Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0x
MC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+IGFuZCBaYW4gRG9i
ZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2Vi
QXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgbGli
ZmZ0dyBhbmQgZ3N0cmVhbWVyLWF1ZGlvIGlmIFdlYkF1ZGlvCisgICAgICAgIGJ1aWxkIGlzIGVu
YWJsZWQuCisKIDIwMTEtMTAtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZW1vdmUgRU5BQkxFKFhIVE1MTVApIGFuZCBhc3NvY2lhdGVkIGNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA2MDAwZGIwLi5kODc3ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIw
MTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPiBhbmQgWmFu
IERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJd
IFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNpYyBGaWxlUmVhZGVyIGltcGxlbWVu
dGF0aW9uLCBzdXBwb3J0aW5nIG9uZSBvciAyIGF1ZGlvCisgICAgICAgIGNoYW5uZWxzLiBBbiBl
bXB0eSBBdWRpb0Rlc3RpbmF0aW9uIGlzIGFsc28gcHJvdmlkZWQsIGl0cyBjb21wbGV0ZQorICAg
ICAgICBpbXBsZW1lbnRhdGlvbiBpcyBoYW5kbGVkIGluIGJ1ZyA2OTgzNS4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uOjpoYXJkd2FyZVNhbXBsZVJhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OmlzUGxheWluZyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzYW1wbGVSYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnNvdXJjZVByb3ZpZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRHU3RyZWFtZXJBdWRpb0NhcHMpOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RmxvYXRGcm9tQnl0ZVJlYWRlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6
b25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6bWVzc2FnZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUGFkQWRk
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJl
YWR5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6b25HU3RyZWFtZXJEZWNvZGViaW5QYWRB
ZGRlZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmVudGVyZWRNYWluTG9vcENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6fkF1ZGlvRmlsZVJlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0ZpbGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQnVzRnJvbUF1ZGlvRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UpOgorCiAyMDExLTEwLTEyICBKb3NlcGgg
UGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFzcyBQYXJzZWQgQWNj
ZXB0IEF0dHJpYnV0ZSBNSU1FIFR5cGVzIHRvIFdlYktpdCBDbGllbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IGM3MDc5M2MuLmM1YmZhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC05OSw2
ICs5OSw3IEBAIHdlYmNvcmVndGtfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3Rr
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWlybyBcCisJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlybyBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsgXApAQCAtNTE2LDYgKzUx
NywxNCBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hMaW5rTmFtZXMuY3BwIDogJChXZWJDb3Jl
KS9kb20vbWFrZV9uYW1lcy5wbCAkKFdlYkNvcmUpLwogaWYgRU5BQkxFX1dFQl9BVURJTwogRkVB
VFVSRV9ERUZJTkVTICs9IEVOQUJMRV9XRUJfQVVESU89MQogd2ViY29yZV9jcHBmbGFncyArPSAt
REVOQUJMRV9XRUJfQVVESU89MQorCitpZiBVU0VfV0VCQVVESU9fRkZUVworRkVBVFVSRV9ERUZJ
TkVTICs9IFdURl9VU0VfV0VCQVVESU9fRkZUVz0xCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EV1RG
X1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZmZ0dy9GRlRGcmFtZUZGVFcuY3BwCitlbmRpZgorCiBlbmRpZgog
CiAjIC0tLS0KQEAgLTgyMCw2ICs4MjksNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0g
XAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoSElMRE9OX0NG
TEFHUykgXAorCSQoTElCRkZUV19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChM
SUJYTUxfQ0ZMQUdTKSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggMDI0ZDE3MC4uYzcxZDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC0xNDQsNiArMTQ0LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NVVJMLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNET01XaW5kb3cuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93
LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmgg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VsZW1lbnQuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRWxlbWVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRW50aXR5
LmNwcCBcCkBAIC01MDcsNiArNTA5LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVmFsaWRpdHlTdGF0ZS5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1ZvaWRDYWxsYmFjay5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5v
ZGUuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2F2ZVNoYXBlck5vZGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJHTEFjdGl2ZUluZm8uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1dlYkdMQnVmZmVyLmNwcCBcCkBAIC00NjA1LDggKzQ2MDksMTcgQEAgZW5kaWYgIyBF
TkQgRU5BQkxFX1NWRwogIyAtLS0tCiAjIFdlYiBBdWRpbyBTdXBwb3J0CiAjIC0tLS0KKwogaWYg
RU5BQkxFX1dFQl9BVURJTwogd2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvQnVmZmVyU291cmNlTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb05vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NvbnZvbHZlck5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRBdWRpb05vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcCBcCkBAIC00NjM2LDQyICs0NjQ5LDEzMCBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFubmVyTm9kZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9QYXJhbS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFt
VGltZWxpbmUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxp
bmUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1NvdXJjZU5vZGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQmlxdWFkRFNQS2VybmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQmlxdWFkRFNQS2VybmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZp
bHRlck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2Rl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BL
ZXJuZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oIFwK
IAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheU5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9M
b3dQYXNzMkZpbHRlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Mb3dQYXNz
MkZpbHRlck5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5l
QXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVh
bHRpbWVBbmFseXNlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUu
Y3BwIFwKLQlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oCisJ
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaCBcCisJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1dhdmVTaGFwZXJEU1BLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZl
U2hhcGVyRFNQS2VybmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQ
cm9jZXNzb3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0FycmF5LmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9DaGFubmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVk
aW9DaGFubmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRGVzdGlu
YXRpb24uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWwu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFBy
b2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0ZpbGVSZWFk
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Qcm9jZXNzb3IuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU291cmNlUHJvdmlkZXIuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9CaXF1YWQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9CaXF1YWQuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRGlzdGFuY2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXN0YW5jZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yS2VybmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0VxdWFsUG93ZXJQYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9F
cXVhbFBvd2VyUGFubmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENv
bnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZl
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVs
ZXZhdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRp
b24uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGFubmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGFubmVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlvbkJ1ZmZl
ci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxhdGlv
bkJ1ZmZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2Uu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFn
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiSW5wdXRCdWZmZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9TaW5jUmVzYW1wbGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vU2luY1Jlc2FtcGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0
b3JNYXRoLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcAogd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9CdWZmZXJDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9D
aGFubmVsTWVyZ2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5l
bE1lcmdlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0
ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0ZXIu
aCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5jcHAgXAotCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb0dhaW4uY3BwIFwKQEAgLTQ2ODIsMTQgKzQ3ODMsMTQgQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvTm9kZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Q
YW5uZXJOb2RlLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFubmVyTm9k
ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNl
Tm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmlxdWFkRmlsdGVyTm9kZS5jcHAg
XAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmggXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb252b2x2ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0NvbnZvbHZlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Rl
bGF5Tm9kZS5jcHAgXApAQCAtNDY5OCwxMiArNDc5OSwxNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJj
ZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIaWdoUGFzczJGaWx0ZXJOb2RlLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuaCBcCisJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb3dQYXNzMkZpbHRlck5vZGUuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAorCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKIGVuZGlmCiAKKwogIyAtLS0t
CiAjIFdlYiBTb2NrZXRzIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0M2Q4
NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIkF1
ZGlvQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRl
ICJHT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBdWRpb0Rl
c3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9Tb3VyY2VQcm92aWRlciYg
cHJvdmlkZXIsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBB
dWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7Cit9CisKK2Zs
b2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCit7CisgICAgcmV0dXJu
IDQ0MTAwOworfQorCitBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1wbGVSYXRl
KQorICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fcmVuZGVyQnVzKDIsIDEyOCwg
dHJ1ZSkKKyAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9pc1BsYXlpbmco
ZmFsc2UpCit7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpz
dGFydCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworfQorCit2b2lkIEF1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXI6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43Y2YzNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBQaGlsaXBwZSBOb3JtYW5k
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKyNkZWZpbmUgQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcl9oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlv
RGVzdGluYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworcHVibGljOgorICAg
IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKKyAg
ICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIEF1ZGlvU291cmNl
UHJvdmlkZXImIHNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsgfQor
Citwcml2YXRlOgorICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CisgICAgQXVk
aW9CdXMgbV9yZW5kZXJCdXM7CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgYm9vbCBt
X2lzUGxheWluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVh
bWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQ3NmU3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFuIERv
YmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKwor
I2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oIgorCisjaW5jbHVkZSAiQXVkaW9C
dXMuaCIKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJHT3duUHRyLmgi
CisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxn
c3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+
CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5oPgorI2luY2x1ZGUgPGdzdC9wYnV0
aWxzL3BidXRpbHMuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBHc3RDYXBz
KiBnZXRHU3RyZWFtZXJBdWRpb0NhcHMoaW50IGNoYW5uZWxzLCBkb3VibGUgc2FtcGxlUmF0ZSkK
K3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogY2Fwc1RlbXBsYXRlID0gImF1ZGlvL3gtcmF3LWZs
b2F0LCByYXRlPShpbnQpJWQsIGNoYW5uZWxzPShpbnQpJWQsIGVuZGlhbm5lc3M9KGludCklZCwg
d2lkdGg9KGludCkzMiI7CisgICAgR093blB0cjxnY2hhcj4gY2Fwc0Rlc2NyaXB0aW9uKGdfc3Ry
ZHVwX3ByaW50ZihjYXBzVGVtcGxhdGUsIHN0YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSksIGNo
YW5uZWxzLCBHX0JZVEVfT1JERVIpKTsKKyAgICByZXR1cm4gZ3N0X2NhcHNfZnJvbV9zdHJpbmco
Y2Fwc0Rlc2NyaXB0aW9uLmdldCgpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGdldEZsb2F0
RnJvbUJ5dGVSZWFkZXIoR3N0Qnl0ZVJlYWRlciAqcmVhZGVyLCBmbG9hdCAqdmFsKQoreworI2lm
IEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gZ3N0X2J5dGVfcmVh
ZGVyX2dldF9mbG9hdDMyX2xlKHJlYWRlciwgdmFsKTsKKyNlbHNlCisgICAgcmV0dXJuIGdzdF9i
eXRlX3JlYWRlcl9nZXRfZmxvYXQzMl9iZShyZWFkZXIsIHZhbCk7CisjZW5kaWYKK30KKworc3Rh
dGljIHZvaWQgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlciogYnVm
ZmVyLCBmbG9hdCogYXVkaW9DaGFubmVsKQoreworICAgIEdzdEJ5dGVSZWFkZXIqIGJ5dGVSZWFk
ZXIgPSBnc3RfYnl0ZV9yZWFkZXJfbmV3X2Zyb21fYnVmZmVyKGJ1ZmZlcik7CisgICAgZmxvYXQg
dmFsdWU7CisKKyAgICB3aGlsZSAoZ2V0RmxvYXRGcm9tQnl0ZVJlYWRlcihieXRlUmVhZGVyLCAm
dmFsdWUpKQorICAgICAgICAqYXVkaW9DaGFubmVsKysgPSB2YWx1ZTsKKworICAgIGdzdF9ieXRl
X3JlYWRlcl9mcmVlKGJ5dGVSZWFkZXIpOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybiBvbkFw
cHNpbmtOZXdCdWZmZXJDYWxsYmFjayhHc3RBcHBTaW5rKiBzaW5rLCBncG9pbnRlciB1c2VyRGF0
YSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXVkaW9GaWxlUmVhZGVyKj4odXNlckRhdGEp
LT5oYW5kbGVCdWZmZXIoc2luayk7Cit9CisKK2dib29sZWFuIG1lc3NhZ2VDYWxsYmFjayhHc3RC
dXMqIGJ1cywgR3N0TWVzc2FnZSogbWVzc2FnZSwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7
CisgICAgcmV0dXJuIHJlYWRlci0+aGFuZGxlTWVzc2FnZShtZXNzYWdlKTsKK30KKworc3RhdGlj
IHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKEdzdEVsZW1lbnQq
IGVsZW1lbnQsIEdzdFBhZCogcGFkLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICBy
ZWFkZXItPmhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChwYWQpOworfQorCitzdGF0aWMgdm9pZCBv
bkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwg
QXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5kZWludGVybGVhdmVQYWRz
Q29uZmlndXJlZCgpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlY29kZWJpblBhZEFk
ZGVkQ2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEF1ZGlvRmlsZVJl
YWRlciogcmVhZGVyKQoreworICAgIHJlYWRlci0+cGx1Z0RlaW50ZXJsZWF2ZShwYWQpOworfQor
CitnYm9vbGVhbiBlbnRlcmVkTWFpbkxvb3BDYWxsYmFjayhBdWRpb0ZpbGVSZWFkZXIqIHJlYWRl
cikKK3sKKyAgICByZWFkZXItPnN0YXJ0KCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitBdWRp
b0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCkKKyAgICA6
IG1fZGF0YSgwKQorICAgICwgbV9kYXRhU2l6ZSgwKQorICAgICwgbV9maWxlUGF0aChmaWxlUGF0
aCkKKyAgICAsIG1fZW9zKGZhbHNlKQoreworfQorCitBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmls
ZVJlYWRlcihjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpCisgICAgOiBtX2RhdGEo
ZGF0YSkKKyAgICAsIG1fZGF0YVNpemUoZGF0YVNpemUpCisgICAgLCBtX2ZpbGVQYXRoKDApCisg
ICAgLCBtX2VvcyhmYWxzZSkKK3sKK30KKworQXVkaW9GaWxlUmVhZGVyOjp+QXVkaW9GaWxlUmVh
ZGVyKCkKK3sKK30KKworR3N0Rmxvd1JldHVybiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZUJ1ZmZl
cihHc3RBcHBTaW5rKiBzaW5rKQoreworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0X2FwcF9z
aW5rX3B1bGxfYnVmZmVyKHNpbmspOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4g
R1NUX0ZMT1dfRVJST1I7CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ3N0X2J1ZmZlcl9nZXRfY2Fw
cyhidWZmZXIpOworICAgIEdzdFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0
cnVjdHVyZShjYXBzLCAwKTsKKworICAgIGdpbnQgY2hhbm5lbHMgPSAwOworICAgIGlmICghZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImNoYW5uZWxzIiwgJmNoYW5uZWxzKSkgewor
ICAgICAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihi
dWZmZXIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgY29u
c3QgR1ZhbHVlKiBjaGFubmVsUG9zaXRpb25zVmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1
ZShzdHJ1Y3R1cmUsICJjaGFubmVsLXBvc2l0aW9ucyIpOworCisgICAgLy8gQ2hlY2sgdGhlIGZp
cnN0IGF1ZGlvIGNoYW5uZWwuIFRoZSBidWZmZXIgaXMgc3VwcG9zZWQgdG8gc3RvcmUKKyAgICAv
LyBkYXRhIG9mIGEgc2luZ2xlIGNoYW5uZWwgYW55d2F5LgorICAgIGlmIChjaGFubmVscyAmJiBj
aGFubmVsUG9zaXRpb25zVmFsdWUgJiYgZ3N0X3ZhbHVlX2lzX2ZpeGVkKGNoYW5uZWxQb3NpdGlv
bnNWYWx1ZSkpIHsKKyAgICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24qIHBvc2l0aW9ucyA9
IGdzdF9hdWRpb19nZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlKTsKKworICAgICAgICBz
d2l0Y2ggKHBvc2l0aW9uc1swXSkgeworICAgICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BP
U0lUSU9OX0ZST05UX0xFRlQ6CisgICAgICAgICAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9i
dWZmZXJfam9pbihtX2J1ZmZlckZyb250TGVmdCwgYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgor
ICAgICAgICAgICAgbV9idWZmZXJGcm9udFJpZ2h0ID0gZ3N0X2J1ZmZlcl9qb2luKG1fYnVmZmVy
RnJvbnRSaWdodCwgYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgZ19mcmVlKHBvc2l0aW9ucyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYo
YnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgIH0KKworICAgIGdz
dF9jYXBzX3VucmVmKGNhcHMpOworICAgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworZ2Jvb2xl
YW4gQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCit7
CisgICAgR093blB0cjxHRXJyb3I+IGVycjsKKyAgICBHT3duUHRyPGdjaGFyPiBkZWJ1ZzsKKwor
ICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01F
U1NBR0VfRU9TOgorICAgICAgICBtX2VvcyA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgR1NUX01FU1NBR0VfV0FSTklORzoKKyAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2Fybmlu
ZyhtZXNzYWdlLCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOworICAgICAgICBnX3dh
cm5pbmcoIldhcm5pbmc6ICVkLCAlcyIsIGVyci0+Y29kZSwgIGVyci0+bWVzc2FnZSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CisgICAgICAgIGdzdF9tZXNz
YWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIkZhdGFsIGVycm9yOiAlZCwgJXMiLCBlcnIt
PmNvZGUsICBlcnItPm1lc3NhZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgQXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCit7CisgICAgLy8g
QSBuZXcgcGFkIGZvciBhIHBsYW5hciBjaGFubmVsIHdhcyBhZGRlZCBpbiBkZWludGVybGVhdmUu
IFBsdWcKKyAgICAvLyBpbiBhbiBhcHBzaW5rIHNvIHdlIGNhbiBwdWxsIHRoZSBkYXRhIGZyb20g
ZWFjaAorICAgIC8vIGNoYW5uZWwuIFBpcGVsaW5lIGxvb2tzIGxpa2U6CisgICAgLy8gLi4uIGRl
aW50ZXJsZWF2ZSAhIHF1ZXVlICEgYXBwc2luay4KKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBzaW5r
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgMCk7CisKKyAgICBHc3RBcHBT
aW5rQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBjYWxsYmFja3MuZW9zID0gMDsKKyAgICBjYWxs
YmFja3MubmV3X3ByZXJvbGwgPSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAw
OworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7
CisKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoc2luayksICZj
YWxsYmFja3MsIHRoaXMsIDApOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdldEdTdHJlYW1lckF1
ZGlvQ2FwcygxLCBtX3NhbXBsZVJhdGUpOworICAgIGdzdF9hcHBfc2lua19zZXRfY2FwcyhHU1Rf
QVBQX1NJTksoc2luayksIGNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworCisgICAg
Z3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBxdWV1ZSwgc2luaywgTlVMTCk7
CisKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1
ZSwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsocGFkLCBzaW5rUGFkKTsKKyAgICBnc3Rfb2Jq
ZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOworCisgICAgZ3N0X2VsZW1lbnRfbGlua19w
YWRzX2Z1bGwocXVldWUsICJzcmMiLCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19O
T1RISU5HKTsKKworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShxdWV1ZSwgR1NUX1NUQVRFX1JF
QURZKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUoc2luaywgR1NUX1NUQVRFX1JFQURZKTsK
K30KKwordm9pZCBBdWRpb0ZpbGVSZWFkZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCkK
K3sKKyAgICAvLyBBbGwgZGVpbnRlcmxlYXZlIHNyYyBwYWRzIGFyZSBub3cgYXZhaWxhYmxlLCBs
ZXQncyByb2xsIHRvCisgICAgLy8gUExBWUlORyBzbyBkYXRhIGZsb3dzIHRvd2FyZHMgdGhlIHNp
bmtzIGFuZCBpdCBjYW4gYmUgcmV0cmlldmVkLgorICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSht
X3BpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7Cit9CisKK3ZvaWQgQXVkaW9GaWxlUmVhZGVy
OjpwbHVnRGVpbnRlcmxlYXZlKEdzdFBhZCogcGFkKQoreworICAgIC8vIEEgZGVjb2RlYmluIHBh
ZCB3YXMgYWRkZWQsIHBsdWcgaW4gYSBkZWludGVybGVhdmUgZWxlbWVudCB0bworICAgIC8vIHNl
cGFyYXRlIGVhY2ggcGxhbmFyIGNoYW5uZWwuIFN1YiBwaXBlbGluZSBsb29rcyBsaWtlCisgICAg
Ly8gLi4uIGRlY29kZWJpbjIgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgY2Fwc2Zp
bHRlciAhIGRlaW50ZXJsZWF2ZS4KKyAgICBHc3RFbGVtZW50KiBhdWRpb0NvbnZlcnQgID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb2NvbnZlcnQiLCAwKTsKKyAgICBHc3RFbGVtZW50
KiBhdWRpb1Jlc2FtcGxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxl
IiwgMCk7CisgICAgR3N0RWxlbWVudCogY2Fwc0ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgiY2Fwc2ZpbHRlciIsIDApOworICAgIEdzdEVsZW1lbnQqIGRlSW50ZXJsZWF2ZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZGVpbnRlcmxlYXZlIiwgImRlaW50ZXJsZWF2ZSIpOwor
CisgICAgZ19vYmplY3Rfc2V0KGRlSW50ZXJsZWF2ZSwgImtlZXAtcG9zaXRpb25zIiwgVFJVRSwg
TlVMTCk7CisgICAgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2ln
bmFsX2Nvbm5lY3QoZGVJbnRlcmxlYXZlLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJl
YW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX2RlaW50ZXJs
ZWF2ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVJbnRlcmxl
YXZlLCAibm8tbW9yZS1wYWRzIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJl
YWR5Q2FsbGJhY2spLCB0aGlzKTsKKworICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFtZXJB
dWRpb0NhcHMoMiwgbV9zYW1wbGVSYXRlKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRlciwg
ImNhcHMiLCBjYXBzLCBOVUxMKTsKKyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgIGdz
dF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jl
c2FtcGxlLCBjYXBzRmlsdGVyLCBkZUludGVybGVhdmUsIE5VTEwpOworCisgICAgR3N0UGFkKiBz
aW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAic2luayIp
OworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYo
R1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChh
dWRpb0NvbnZlcnQsICJzcmMiLCBhdWRpb1Jlc2FtcGxlLCAic2luayIsIEdTVF9QQURfTElOS19D
SEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1Jlc2Ft
cGxlLCAic3JjIiwgY2Fwc0ZpbHRlciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElO
Ryk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoY2Fwc0ZpbHRlciwgInNyYyIsIGRl
SW50ZXJsZWF2ZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBn
c3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGF1ZGlvQ29udmVydCk7CisgICAgZ3N0
X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChhdWRpb1Jlc2FtcGxlKTsKKyAgICBnc3Rf
ZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGNhcHNGaWx0ZXIpOworICAgIGdzdF9lbGVt
ZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoZGVJbnRlcmxlYXZlKTsKK30KKworc3RhdGljIGJv
b2wgZ3N0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9G
aWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCit7
CisgICAgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKworICAgIEdPd25QdHI8R0Vycm9yPiBl
cnJvcjsKKyAgICBnc3RJbml0aWFsaXplZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgaWYgKCFnc3RJbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBtX2J1ZmZlckZyb250TGVmdCA9IGdzdF9idWZmZXJfbmV3KCk7CisgICAgbV9i
dWZmZXJGcm9udFJpZ2h0ID0gZ3N0X2J1ZmZlcl9uZXcoKTsKKworICAgIC8vIEJ1aWxkIHRoZSBw
aXBlbGluZSAoZ2lvc3RyZWFtc3JjIHwgZmlsZXNyYykgISBkZWNvZGViaW4yCisgICAgLy8gQSBk
ZWludGVybGVhdmUgZWxlbWVudCBpcyBhZGRlZCBvbmNlIGEgc3JjIHBhZCBiZWNvbWVzIGF2YWls
YWJsZSBpbiBkZWNvZGViaW4uCisgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoMCk7
CisKKyAgICBHc3RCdXMqIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORSht
X3BpcGVsaW5lKSk7CisgICAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cyk7CisgICAgZ3Vs
b25nIGJ1c1NpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIs
IEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBHc3RFbGVtZW50KiBz
b3VyY2U7CisgICAgaWYgKG1fZGF0YSkgeworICAgICAgICBBU1NFUlQobV9kYXRhU2l6ZSk7Cisg
ICAgICAgIHNvdXJjZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZ2lvc3RyZWFtc3JjIiwg
MCk7CisgICAgICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBnX21lbW9y
eV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YShtX2RhdGEsIG1fZGF0YVNpemUsIDApOworICAg
ICAgICBnX29iamVjdF9zZXQoc291cmNlLCAic3RyZWFtIiwgbWVtb3J5U3RyZWFtLmdldCgpLCBO
VUxMKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X21ha2UoImZpbGVzcmMiLCAwKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgImxvY2F0
aW9uIiwgbV9maWxlUGF0aCwgTlVMTCk7CisgICAgfQorCisgICAgR3N0RWxlbWVudCogZGVjb2Rl
YmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWNvZGViaW4yIiwgImRlY29kZWJpbiIp
OworICAgIGd1bG9uZyBkZWNvZGViaW5QYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFs
X2Nvbm5lY3QoZGVjb2RlYmluLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRl
Y29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0aGlzKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnko
R1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNlLCBkZWNvZGViaW4sIE5VTEwpOworICAgIGdzdF9l
bGVtZW50X2xpbmtfcGFkc19mdWxsKHNvdXJjZSwgInNyYyIsIGRlY29kZWJpbiwgInNpbmsiLCBH
U1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBtX2VvcyA9IGZhbHNlOworICAgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICB3
aGlsZSAoIW1fZW9zKSB7CisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbigwLCBGQUxT
RSk7CisgICAgfQorCisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGJ1cywgYnVzU2ln
bmFsSGFuZGxlcklkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGJ1cyk7CisKKyAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVjb2RlYmluLCBkZWNvZGViaW5QYWRBZGRlZFNpZ25hbEhh
bmRsZXJJZCk7CisKKyAgICBpZiAoR3N0RWxlbWVudCogZGVpbnRlcmxlYXZlID0gZ3N0X2Jpbl9n
ZXRfYnlfbmFtZShHU1RfQklOKG1fcGlwZWxpbmUpLCAiZGVpbnRlcmxlYXZlIikpIHsKKyAgICAg
ICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKGRlaW50ZXJsZWF2ZSwgbV9kZWlu
dGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkU2ln
bmFsSGFuZGxlcklkKTsKKyAgICAgICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVk
KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpKQor
ICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9k
ZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpOworICAgICAgICBnc3Rfb2JqZWN0
X3VucmVmKGRlaW50ZXJsZWF2ZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZSA9IEdTVF9C
VUZGRVJfU0laRShtX2J1ZmZlckZyb250TGVmdCk7CisgICAgdW5zaWduZWQgY2hhbm5lbHMgPSBt
aXhUb01vbm8gPyAxIDogMjsKKyAgICBPd25QdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gYWRvcHRQ
dHIobmV3IEF1ZGlvQnVzKGNoYW5uZWxzLCBzaXplIC8gc2l6ZW9mKGZsb2F0KSkpOworICAgIGF1
ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7CisKKyAgICBjb3B5R3N0cmVhbWVy
QnVmZmVyVG9BdWRpb0NoYW5uZWwobV9idWZmZXJGcm9udExlZnQsIGF1ZGlvQnVzLT5jaGFubmVs
KDApLT5kYXRhKCkpOworICAgIGlmICghbWl4VG9Nb25vKQorICAgICAgICBjb3B5R3N0cmVhbWVy
QnVmZmVyVG9BdWRpb0NoYW5uZWwobV9idWZmZXJGcm9udFJpZ2h0LCBhdWRpb0J1cy0+Y2hhbm5l
bCgxKS0+ZGF0YSgpKTsKKworICAgIGdzdF9idWZmZXJfdW5yZWYobV9idWZmZXJGcm9udExlZnQp
OworICAgIGdzdF9idWZmZXJfdW5yZWYobV9idWZmZXJGcm9udFJpZ2h0KTsKKworICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgZ3N0X29i
amVjdF91bnJlZihHU1RfT0JKRUNUKG1fcGlwZWxpbmUpKTsKKworICAgIHJldHVybiBhdWRpb0J1
cy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1c0Zyb21BdWRp
b0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVS
YXRlKQoreworICAgIHJldHVybiBBdWRpb0ZpbGVSZWFkZXIoZmlsZVBhdGgpLmNyZWF0ZUJ1cyhz
YW1wbGVSYXRlLCBtaXhUb01vbm8pOworfQorCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVC
dXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
LCBib29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gQXVkaW9G
aWxlUmVhZGVyKGRhdGEsIGRhdGFTaXplKS5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4VG9Nb25v
KTsKK30KKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjhkMGU4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmgKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICogIENvcHly
aWdodCAoQykgMjAxMSBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIEF1ZGlvRmlsZVJlYWRlckdTdHJl
YW1lcl9oCisjZGVmaW5lIEF1ZGlvRmlsZVJlYWRlckdTdHJlYW1lcl9oCisKKyNpbmNsdWRlIDxn
c3QvZ3N0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFwcFNpbmsgR3N0QXBwU2luazsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0J1czsKKworUGFzc093blB0cjxBdWRp
b0J1cz4gY3JlYXRlQnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBt
aXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpOworUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6
ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpOworCitjbGFzcyBBdWRpb0ZpbGVS
ZWFkZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvRmlsZVJlYWRlcik7CitwdWJs
aWM6CisgICAgQXVkaW9GaWxlUmVhZGVyKGNvbnN0IGNoYXIqIGZpbGVQYXRoKTsKKyAgICBBdWRp
b0ZpbGVSZWFkZXIoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsKKyAgICB+QXVk
aW9GaWxlUmVhZGVyKCk7CisKKyAgICBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXMoZmxv
YXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pOworCisgICAgR3N0Rmxvd1JldHVybiBoYW5k
bGVCdWZmZXIoR3N0QXBwU2luayopOworICAgIGdib29sZWFuIGhhbmRsZU1lc3NhZ2UoR3N0TWVz
c2FnZSopOworICAgIHZvaWQgaGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCopOworICAg
IHZvaWQgZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKKyAgICB2b2lkIHBsdWdEZWludGVy
bGVhdmUoR3N0UGFkKik7CisKK3ByaXZhdGU6CisgICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAg
IHNpemVfdCBtX2RhdGFTaXplOworICAgIGNvbnN0IGNoYXIqIG1fZmlsZVBhdGg7CisKKyAgICBm
bG9hdCBtX3NhbXBsZVJhdGU7CisgICAgR3N0QnVmZmVyKiBtX2J1ZmZlckZyb250TGVmdDsKKyAg
ICBHc3RCdWZmZXIqIG1fYnVmZmVyRnJvbnRSaWdodDsKKyAgICBHc3RFbGVtZW50KiBtX3BpcGVs
aW5lOworICAgIGJvb2wgbV9lb3M7CisKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVQYWRBZGRl
ZFNpZ25hbEhhbmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWdu
YWxIYW5kbGVySWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBB
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOTk0Njk2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCisKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuaCIK
KyNpbmNsdWRlICJHT3duUHRyLmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8
Z2xpYi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1
ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCBzYW1w
bGVSYXRlKQoreworICAgIEdPd25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50Zigi
JXMud2F2IiwgbmFtZSkpOworICAgIEdPd25QdHI8Z2NoYXI+IGFic29sdXRlRmlsZW5hbWUoZ19i
dWlsZF9maWxlbmFtZShEQVRBX0RJUiwgIndlYmtpdGd0ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9O
X1NUUklORywgInJlc291cmNlcyIsICJhdWRpbyIsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoYWJzb2x1dGVGaWxlbmFtZS5nZXQoKSwg
ZmFsc2UsIHNhbXBsZVJhdGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJhZDRlMmQuLjM0ZWVk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMC0xMSAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0g
V2ViQXVkaW8gQXVkaW9GaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IExpbmsgYWdh
aW5zdCBsaWJmZnR3LgorCiAyMDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29kZSB3aGlj
aCBjYW4gYmUgc2hhcmVkIHdpdGggV2ViS2l0MiB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGRlMGU4NjAuLjlkZDRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CkBAIC02Niw2ICs2Niw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJJChHU1RSRUFNRVJf
Q0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJG
RlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwK
IAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC05Niw2ICs5Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9s
YV9MSUJBCiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdfTElCUykg
XAorCSQoTElCRkZUV19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJT
KSBcCiAJJChMSUJYU0xUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YmMzYzQwLi43MDNiODRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1
ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0
dy4KKwogMjAxMS0xMC0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFBhc3MgUGFyc2VkIEFjY2VwdCBBdHRyaWJ1dGUgTUlNRSBUeXBlcyB0byBXZWJL
aXQgQ2xpZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzNjA0NzJjLi4xMDkzNGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTMzNyw2ICsxMzM3LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1
Z2luUHJvY2Vzc19MREFERCA9IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAog
CSQoV0lOTU1fTElCUykgXAorCSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFBy
b2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZp
Z3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA1NjMwNTlmLi42MzBkZDA4IDEwMDY0NAotLS0g
YS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0yNzcsNiArMjc3LDcgQEAgU1FM
SVRFX1JFUVVJUkVEX1ZFUlNJT049My4wCiBHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTj0wLjEw
CiBHU1RSRUFNRVJfUExVR0lOU19CQVNFX1JFUVVJUkVEX1ZFUlNJT049MC4xMC4zMAogRU5DSEFO
VF9SRVFVSVJFRF9WRVJTSU9OPTAuMjIKK0xJQkZGVFdfUkVRVUlSRURfVkVSU0lPTj0zLjIuMgog
CiAjIEF2YWlsYWJsZSBtb2R1bGVzCiAjCkBAIC0xMDQzLDEwICsxMDQ0LDExIEBAIGlmIHRlc3Qg
IiRvc193aW4zMiIgPSAibm8iOyB0aGVuCiBmaQogCiAjIGNoZWNrIGlmIGdzdHJlYW1lciBpcyBh
dmFpbGFibGUKLWlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KK2lmIHRlc3Qg
IiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInll
cyI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAgICAgICAgICAg
ICAgICAgICAgW2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgog
ICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCisgICAgICAgICAgICAgICAg
ICAgICBnc3RyZWFtZXItYXVkaW8tMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVy
LWJhc2UtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4x
MAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTA1OCw2
ICsxMDYwLDE3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgIEFD
X1NVQlNUKFtHU1RSRUFNRVJfTElCU10pCiBmaQogCisjIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZh
aWxhYmxlCitpZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgorICAgUEtH
X0NIRUNLX01PRFVMRVMoW0xJQkZGVFddLAorICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49
ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+
PSAkTElCRkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKKyAgICAgICAgICAgICAgICAgICAgIFtoYXZl
X2ZmdHc9eWVzXSkKKworICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCisgICAgQUNfU1VC
U1QoW0xJQkZGVFdfTElCU10pCitmaQorCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBv
cnQKIGlmIHRlc3QgIiRlbmFibGVfY292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdF
X0NGTEFHUz0iLU1EIgpAQCAtMTEzMSw2ICsxMTQ0LDkgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9Q
QU5HT10sIFt0ZXN0ICIkd2l0aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCiAjIEdTdHJlYW1l
ciBmZWF0dXJlIGNvbmRpdGlvbmFsCiBBTV9DT05ESVRJT05BTChbVVNFX0dTVFJFQU1FUl0sIFt0
ZXN0ICIkaGF2ZV9nc3RyZWFtZXIiID0gInllcyJdKQogCisjIFdlYiBBdWRpbyBmZWF0dXJlIGNv
bmRpdGlvbmFsCitBTV9DT05ESVRJT05BTChbVVNFX1dFQkFVRElPX0ZGVFddLCBbdGVzdCAiJGhh
dmVfZmZ0dyIgPSAieWVzIl0pCisKICMgV2ViS2l0IGZlYXR1cmUgY29uZGl0aW9uYWxzCiBBTV9D
T05ESVRJT05BTChbRU5BQkxFX0RFQlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1Z19mZWF0dXJlcyIg
PSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFXzNEX1JFTkRFUklOR10sW3Rlc3QgIiRl
bmFibGVfM2RfcmVuZGVyaW5nIiA9ICJ5ZXMiXSkKLS0gCjEuNy43LnJjMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110974</attachid>
            <date>2011-10-14 01:23:53 -0700</date>
            <delta_ts>2011-10-14 01:38:42 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>39191</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2M2M0NTkzYWZlOWM1NjM4MjQzZjIyODAzYmY3MTZmZDM5YWIxN2EyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTUgKysrKysrLQogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCAgfCAgIDY1ICsrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oICAgIHwgICA0OSArKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgIDM3MCArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCAgfCAgIDQyICsrKwog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5
ICsKIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKwogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOCArLQogMTMgZmlsZXMgY2hhbmdlZCwgNzQwIGluc2VydGlvbnMoKyks
IDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlv
QnVzR3RrLmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyYzk2
NGFmLi5jOGYxODhjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3Vy
ZS5hYzogQ2hlY2sgZm9yIGxpYmZmdHcgYW5kIGdzdHJlYW1lci1hdWRpbyBpZiBXZWJBdWRpbwor
ICAgICAgICBidWlsZCBpcyBlbmFibGVkLgorCiAyMDExLTEwLTEyICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShYSFRNTE1QKSBhbmQgYXNz
b2NpYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAwMGRiMC4uNTBlYWI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ5IEBACisyMDExLTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzaWMg
RmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGluZyBvbmUgb3IgMiBhdWRpbworICAg
ICAgICBjaGFubmVscy4gQW4gZW1wdHkgQXVkaW9EZXN0aW5hdGlvbiBpcyBhbHNvIHByb3ZpZGVk
LCBpdHMgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaXMgaGFuZGxlZCBpbiBidWcg
Njk4MzUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFy
ZHdhcmVTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjppc1BsYXlp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c2FtcGxl
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0R1N0cmVh
bWVyQXVkaW9DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZsb2F0RnJvbUJ5dGVSZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Om1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdTdHJlYW1l
ckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6b25HU3Ry
ZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uR1N0
cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpwbHVnRGVpbnRlcmxlYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmls
ZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJ1c0Zyb21BdWRp
b0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisKIDIw
MTEtMTAtMTIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBQYXNzIFBhcnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8gV2ViS2l0IENsaWVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYzcwNzkzYy4uYzViZmFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KQEAgLTk5LDYgKzk5LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGFnZS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NhaXJvIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ayBcCkBAIC01MTYsNiArNTE3LDE0IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWExpbmtOYW1l
cy5jcHAgOiAkKFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvCiBpZiBFTkFC
TEVfV0VCX0FVRElPCiBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCisKK2lmIFVTRV9XRUJBVURJT19G
RlRXCitGRUFUVVJFX0RFRklORVMgKz0gV1RGX1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVf
Y3BwZmxhZ3MgKz0gLURXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9zb3VyY2VzICs9
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAK
K2VuZGlmCisKIGVuZGlmCiAKICMgLS0tLQpAQCAtODIwLDYgKzgyOSw3IEBAIGxpYldlYkNvcmVH
dGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdT
KSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09V
UF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwMjRkMTcwLi4xZTg5ZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0NCw2ICsxNDQsOCBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01VUkwuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNET01XaW5kb3cuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNFbnRpdHkuY3BwIFwKQEAgLTUwNyw2ICs1MDksOCBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXYXZlU2hhcGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZl
U2hhcGVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZv
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xCdWZmZXIuY3BwIFwKQEAgLTQ2MDUsOCArNDYw
OSwxNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfU1ZHCiAjIC0tLS0KICMgV2ViIEF1ZGlvIFN1cHBv
cnQKICMgLS0tLQorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvTm9kZUN1c3RvbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29udm9sdmVyTm9kZUN1c3RvbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3Rv
bS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0
b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTQ2MzYsNDIgKzQ2NDksMTI5IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5u
ZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvUGFyYW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1By
b2Nlc3NpbmdFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vz
c2luZ0V2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Rl
bGF5RFNQS2VybmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlbGF5UHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5v
ZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXJOb2RlLmgKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
Tm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCisJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
QXJyYXkuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0RTUEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRmlsZVJlYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Byb2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2Vy
bmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJL
ZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Tb3VyY2VQcm92
aWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Db25lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZUQ29udm9sdmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZG
VEZyYW1lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5l
bC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXJTdGFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlclN0YWdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9WZWN0b3JNYXRoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Q
b2xlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcAogd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9DaGFubmVsTWVyZ2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hh
bm5lbE1lcmdlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3Bs
aXR0ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0
ZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0dhaW4uY3BwIFwKQEAgLTQ2ODIsMTQgKzQ3ODIsMTQgQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvTm9kZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9QYW5uZXJOb2RlLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFubmVy
Tm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291
cmNlTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmlxdWFkRmlsdGVyTm9kZS5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb252b2x2ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NvbnZvbHZlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RlbGF5Tm9kZS5jcHAgXApAQCAtNDY5OCwxMiArNDc5OCwxNyBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIaWdoUGFzczJGaWx0ZXJOb2Rl
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuaCBcCisJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb3dQYXNzMkZpbHRlck5vZGUuaCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKIGVuZGlmCiAKKwogIyAt
LS0tCiAjIFdlYiBTb2NrZXRzIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0
M2Q4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCIKKworI2luY2x1ZGUg
IkF1ZGlvQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJHT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9Tb3VyY2VQcm92aWRl
ciYgcHJvdmlkZXIsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7Cit9CisK
K2Zsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCit7CisgICAgcmV0
dXJuIDQ0MTAwOworfQorCitBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1wbGVS
YXRlKQorICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fcmVuZGVyQnVzKDIsIDEy
OCwgdHJ1ZSkKKyAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9pc1BsYXlp
bmcoZmFsc2UpCit7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
OjpzdGFydCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworfQorCit2b2lkIEF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXI6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43Y2YzNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApA
QCAtMCwwICsxLDQ5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBQaGlsaXBwZSBOb3Jt
YW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKyNkZWZpbmUgQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcl9oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworcHVibGljOgor
ICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0
IHNhbXBsZVJhdGUpOworICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisK
KyAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIEF1ZGlvU291
cmNlUHJvdmlkZXImIHNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsg
fQorCitwcml2YXRlOgorICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CisgICAg
QXVkaW9CdXMgbV9yZW5kZXJCdXM7CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgYm9v
bCBtX2lzUGxheWluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0
cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWQ0NmVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNzAgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFu
IERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KworI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyLmgiCisj
aW5jbHVkZSAiR093blB0ci5oIgorI2luY2x1ZGUgIkdSZWZQdHIuaCIKKyNpbmNsdWRlIDxnaW8v
Z2lvLmg+CisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2lu
ay5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KKyNpbmNsdWRlIDxnc3Qv
YmFzZS9nc3RieXRlcmVhZGVyLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgor
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9GaWxlUmVhZGVyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShBdWRpb0ZpbGVSZWFkZXIpOworcHVibGljOgorICAgIEF1ZGlv
RmlsZVJlYWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCk7CisgICAgQXVkaW9GaWxlUmVhZGVyKGNv
bnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7CisgICAgfkF1ZGlvRmlsZVJlYWRlcigp
OworCisgICAgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUs
IGJvb2wgbWl4VG9Nb25vKTsKKworICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlQnVmZmVyKEdzdEFw
cFNpbmsqKTsKKyAgICBnYm9vbGVhbiBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKKyAgICB2
b2lkIGhhbmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQqKTsKKyAgICB2b2lkIGRlaW50ZXJs
ZWF2ZVBhZHNDb25maWd1cmVkKCk7CisgICAgdm9pZCBwbHVnRGVpbnRlcmxlYXZlKEdzdFBhZCop
OworCitwcml2YXRlOgorICAgIGNvbnN0IHZvaWQqIG1fZGF0YTsKKyAgICBzaXplX3QgbV9kYXRh
U2l6ZTsKKyAgICBjb25zdCBjaGFyKiBtX2ZpbGVQYXRoOworCisgICAgZmxvYXQgbV9zYW1wbGVS
YXRlOworICAgIEdzdEJ1ZmZlciogbV9idWZmZXJGcm9udExlZnQ7CisgICAgR3N0QnVmZmVyKiBt
X2J1ZmZlckZyb250UmlnaHQ7CisgICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKyAgICBib29s
IG1fZW9zOworCisgICAgZ3Vsb25nIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRTaWduYWxIYW5kbGVy
SWQ7CisgICAgZ3Vsb25nIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkU2lnbmFsSGFuZGxlcklkOwor
fTsKKworc3RhdGljIEdzdENhcHMqIGdldEdTdHJlYW1lckF1ZGlvQ2FwcyhpbnQgY2hhbm5lbHMs
IGRvdWJsZSBzYW1wbGVSYXRlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjYXBzVGVtcGxh
dGUgPSAiYXVkaW8veC1yYXctZmxvYXQsIHJhdGU9KGludCklZCwgY2hhbm5lbHM9KGludCklZCwg
ZW5kaWFubmVzcz0oaW50KSVkLCB3aWR0aD0oaW50KTMyIjsKKyAgICBHT3duUHRyPGdjaGFyPiBj
YXBzRGVzY3JpcHRpb24oZ19zdHJkdXBfcHJpbnRmKGNhcHNUZW1wbGF0ZSwgc3RhdGljX2Nhc3Q8
aW50PihzYW1wbGVSYXRlKSwgY2hhbm5lbHMsIEdfQllURV9PUkRFUikpOworICAgIHJldHVybiBn
c3RfY2Fwc19mcm9tX3N0cmluZyhjYXBzRGVzY3JpcHRpb24uZ2V0KCkpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgZ2V0RmxvYXRGcm9tQnl0ZVJlYWRlcihHc3RCeXRlUmVhZGVyICpyZWFkZXIs
IGZsb2F0ICp2YWwpCit7CisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorICAg
IHJldHVybiBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2Zsb2F0MzJfbGUocmVhZGVyLCB2YWwpOworI2Vs
c2UKKyAgICByZXR1cm4gZ3N0X2J5dGVfcmVhZGVyX2dldF9mbG9hdDMyX2JlKHJlYWRlciwgdmFs
KTsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0No
YW5uZWwoR3N0QnVmZmVyKiBidWZmZXIsIGZsb2F0KiBhdWRpb0NoYW5uZWwpCit7CisgICAgR3N0
Qnl0ZVJlYWRlciogYnl0ZVJlYWRlciA9IGdzdF9ieXRlX3JlYWRlcl9uZXdfZnJvbV9idWZmZXIo
YnVmZmVyKTsKKyAgICBmbG9hdCB2YWx1ZTsKKworICAgIHdoaWxlIChnZXRGbG9hdEZyb21CeXRl
UmVhZGVyKGJ5dGVSZWFkZXIsICZ2YWx1ZSkpCisgICAgICAgICphdWRpb0NoYW5uZWwrKyA9IHZh
bHVlOworCisgICAgZ3N0X2J5dGVfcmVhZGVyX2ZyZWUoYnl0ZVJlYWRlcik7Cit9CisKK3N0YXRp
YyBHc3RGbG93UmV0dXJuIG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNp
bmssIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0Zp
bGVSZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZUJ1ZmZlcihzaW5rKTsKK30KKworZ2Jvb2xlYW4g
bWVzc2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0Zp
bGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZXR1cm4gcmVhZGVyLT5oYW5kbGVNZXNzYWdlKG1l
c3NhZ2UpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVk
Q2FsbGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEF1ZGlvRmlsZVJlYWRl
ciogcmVhZGVyKQoreworICAgIHJlYWRlci0+aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKHBhZCk7
Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUmVhZHlDYWxsYmFjayhH
c3RFbGVtZW50KiBlbGVtZW50LCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZWFk
ZXItPmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0
cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQ
YWQqIHBhZCwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5wbHVnRGVp
bnRlcmxlYXZlKHBhZCk7Cit9CisKK0F1ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKGNv
bnN0IGNoYXIqIGZpbGVQYXRoKQorICAgIDogbV9kYXRhKDApCisgICAgLCBtX2RhdGFTaXplKDAp
CisgICAgLCBtX2ZpbGVQYXRoKGZpbGVQYXRoKQorICAgICwgbV9lb3MoZmFsc2UpCit7Cit9CisK
K0F1ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVf
dCBkYXRhU2l6ZSkKKyAgICA6IG1fZGF0YShkYXRhKQorICAgICwgbV9kYXRhU2l6ZShkYXRhU2l6
ZSkKKyAgICAsIG1fZmlsZVBhdGgoMCkKKyAgICAsIG1fZW9zKGZhbHNlKQoreworfQorCitBdWRp
b0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQoreworfQorCitHc3RGbG93UmV0dXJuIEF1
ZGlvRmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCit7CisgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CisgICAgaWYg
KCFidWZmZXIpCisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICAgIEdzdENhcHMq
IGNhcHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7CisgICAgR3N0U3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworCisgICAgZ2ludCBj
aGFubmVscyA9IDA7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAi
Y2hhbm5lbHMiLCAmY2hhbm5lbHMpKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOwor
ICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBHU1RfRkxP
V19FUlJPUjsKKyAgICB9CisKKyAgICBjb25zdCBHVmFsdWUqIGNoYW5uZWxQb3NpdGlvbnNWYWx1
ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKHN0cnVjdHVyZSwgImNoYW5uZWwtcG9zaXRpb25z
Iik7CisKKyAgICAvLyBDaGVjayB0aGUgZmlyc3QgYXVkaW8gY2hhbm5lbC4gVGhlIGJ1ZmZlciBp
cyBzdXBwb3NlZCB0byBzdG9yZQorICAgIC8vIGRhdGEgb2YgYSBzaW5nbGUgY2hhbm5lbCBhbnl3
YXkuCisgICAgaWYgKCFjaGFubmVscyB8fCAhY2hhbm5lbFBvc2l0aW9uc1ZhbHVlIHx8ICFnc3Rf
dmFsdWVfaXNfZml4ZWQoY2hhbm5lbFBvc2l0aW9uc1ZhbHVlKSkgeworICAgICAgICBnc3RfY2Fw
c191bnJlZihjYXBzKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAg
ICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgR3N0QXVkaW9DaGFubmVsUG9z
aXRpb24qIHBvc2l0aW9ucyA9IGdzdF9hdWRpb19nZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0
dXJlKTsKKyAgICBzd2l0Y2ggKHBvc2l0aW9uc1swXSkgeworICAgIGNhc2UgR1NUX0FVRElPX0NI
QU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVDoKKyAgICAgICAgbV9idWZmZXJGcm9udExlZnQgPSBn
c3RfYnVmZmVyX2pvaW4obV9idWZmZXJGcm9udExlZnQsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQ6CisgICAg
ICAgIG1fYnVmZmVyRnJvbnRSaWdodCA9IGdzdF9idWZmZXJfam9pbihtX2J1ZmZlckZyb250Umln
aHQsIGJ1ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdzdF9i
dWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ19mcmVl
KHBvc2l0aW9ucyk7CisgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgcmV0dXJuIEdTVF9G
TE9XX09LOworfQorCitnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0
TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR093
blB0cjxnY2hhcj4gZGVidWc7CisKKyAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2Fn
ZSkpIHsKKyAgICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKKyAgICAgICAgbV9lb3MgPSB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNTQUdFX1dBUk5JTkc6CisgICAgICAgIGdz
dF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcu
b3V0UHRyKCkpOworICAgICAgICBnX3dhcm5pbmcoIldhcm5pbmc6ICVkLCAlcyIsIGVycm9yLT5j
b2RlLCAgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNT
QUdFX0VSUk9SOgorICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJy
b3Iub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIkZhdGFsIGVycm9yOiAlZCwgJXMiLCBlcnJvci0+Y29kZSwgIGVycm9yLT5tZXNzYWdlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBUUlVFOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRl
cmxlYXZlUGFkKEdzdFBhZCogcGFkKQoreworICAgIC8vIEEgbmV3IHBhZCBmb3IgYSBwbGFuYXIg
Y2hhbm5lbCB3YXMgYWRkZWQgaW4gZGVpbnRlcmxlYXZlLiBQbHVnCisgICAgLy8gaW4gYW4gYXBw
c2luayBzbyB3ZSBjYW4gcHVsbCB0aGUgZGF0YSBmcm9tIGVhY2gKKyAgICAvLyBjaGFubmVsLiBQ
aXBlbGluZSBsb29rcyBsaWtlOgorICAgIC8vIC4uLiBkZWludGVybGVhdmUgISBxdWV1ZSAhIGFw
cHNpbmsuCisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
InF1ZXVlIiwgMCk7CisgICAgR3N0RWxlbWVudCogc2luayA9IGdzdF9lbGVtZW50X2ZhY3Rvcnlf
bWFrZSgiYXBwc2luayIsIDApOworCisgICAgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3M7
CisgICAgY2FsbGJhY2tzLmVvcyA9IDA7CisgICAgY2FsbGJhY2tzLm5ld19wcmVyb2xsID0gMDsK
KyAgICBjYWxsYmFja3MubmV3X2J1ZmZlcl9saXN0ID0gMDsKKyAgICBjYWxsYmFja3MubmV3X2J1
ZmZlciA9IG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrOworCisgICAgZ3N0X2FwcF9zaW5rX3Nl
dF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAmY2FsbGJhY2tzLCB0aGlzLCAwKTsKKwor
ICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFtZXJBdWRpb0NhcHMoMSwgbV9zYW1wbGVSYXRl
KTsKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhcHMoR1NUX0FQUF9TSU5LKHNpbmspLCBjYXBzKTsK
KyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgcXVldWUsIHNpbmssIE5VTEwpOworCisgICAgR3N0UGFkKiBzaW5rUGFk
ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5rIik7CisgICAgZ3N0X3Bh
ZF9saW5rKHBhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNp
bmtQYWQpKTsKKworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHF1ZXVlLCAic3JjIiwg
c2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9SRUFEWSk7CisgICAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlKHNpbmssIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK3ZvaWQgQXVkaW9GaWxlUmVh
ZGVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCit7CisgICAgLy8gQWxsIGRlaW50ZXJs
ZWF2ZSBzcmMgcGFkcyBhcmUgbm93IGF2YWlsYWJsZSwgbGV0J3Mgcm9sbCB0bworICAgIC8vIFBM
QVlJTkcgc28gZGF0YSBmbG93cyB0b3dhcmRzIHRoZSBzaW5rcyBhbmQgaXQgY2FuIGJlIHJldHJp
ZXZlZC4KKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRFX1BM
QVlJTkcpOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0RlaW50ZXJsZWF2ZShHc3RQ
YWQqIHBhZCkKK3sKKyAgICAvLyBBIGRlY29kZWJpbiBwYWQgd2FzIGFkZGVkLCBwbHVnIGluIGEg
ZGVpbnRlcmxlYXZlIGVsZW1lbnQgdG8KKyAgICAvLyBzZXBhcmF0ZSBlYWNoIHBsYW5hciBjaGFu
bmVsLiBTdWIgcGlwZWxpbmUgbG9va3MgbGlrZQorICAgIC8vIC4uLiBkZWNvZGViaW4yICEgYXVk
aW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGNhcHNmaWx0ZXIgISBkZWludGVybGVhdmUuCisg
ICAgR3N0RWxlbWVudCogYXVkaW9Db252ZXJ0ICA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXVkaW9jb252ZXJ0IiwgMCk7CisgICAgR3N0RWxlbWVudCogYXVkaW9SZXNhbXBsZSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIDApOworICAgIEdzdEVsZW1lbnQq
IGNhcHNGaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImNhcHNmaWx0ZXIiLCAwKTsK
KyAgICBHc3RFbGVtZW50KiBkZUludGVybGVhdmUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2Uo
ImRlaW50ZXJsZWF2ZSIsICJkZWludGVybGVhdmUiKTsKKworICAgIGdfb2JqZWN0X3NldChkZUlu
dGVybGVhdmUsICJrZWVwLXBvc2l0aW9ucyIsIFRSVUUsIE5VTEwpOworICAgIG1fZGVpbnRlcmxl
YXZlUGFkQWRkZWRTaWduYWxIYW5kbGVySWQgPSBnX3NpZ25hbF9jb25uZWN0KGRlSW50ZXJsZWF2
ZSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVQYWRBZGRl
ZENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5k
bGVySWQgPSBnX3NpZ25hbF9jb25uZWN0KGRlSW50ZXJsZWF2ZSwgIm5vLW1vcmUtcGFkcyIsIEdf
Q0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKSwgdGhpcyk7CisK
KyAgICBHc3RDYXBzKiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKDIsIG1fc2FtcGxlUmF0
ZSk7CisgICAgZ19vYmplY3Rfc2V0KGNhcHNGaWx0ZXIsICJjYXBzIiwgY2FwcywgTlVMTCk7Cisg
ICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4o
bV9waXBlbGluZSksIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwgY2Fwc0ZpbHRlciwgZGVJ
bnRlcmxlYXZlLCBOVUxMKTsKKworICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKGF1ZGlvQ29udmVydCwgInNpbmsiKTsKKyAgICBnc3RfcGFkX2xpbmsocGFk
LCBzaW5rUGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qoc2lua1BhZCkpOwor
CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9Db252ZXJ0LCAic3JjIiwgYXVk
aW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAgZ3N0
X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwgInNyYyIsIGNhcHNGaWx0ZXIs
ICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworICAgIGdzdF9lbGVtZW50X2xp
bmtfcGFkc19mdWxsKGNhcHNGaWx0ZXIsICJzcmMiLCBkZUludGVybGVhdmUsICJzaW5rIiwgR1NU
X1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworCisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93
aXRoX3BhcmVudChhdWRpb0NvbnZlcnQpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0
aF9wYXJlbnQoYXVkaW9SZXNhbXBsZSk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRo
X3BhcmVudChjYXBzRmlsdGVyKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFy
ZW50KGRlSW50ZXJsZWF2ZSk7Cit9CisKKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9GaWxl
UmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBtaXhUb01vbm8pCit7Cisg
ICAgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKworICAgIHN0YXRpYyBib29sIGdzdEluaXRp
YWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFnc3RJbml0aWFsaXplZCkKKyAgICAgICAgZ3N0SW5p
dGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAwKTsKKworICAgIGlmICghZ3N0SW5pdGlh
bGl6ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9idWZmZXJGcm9udExlZnQg
PSBnc3RfYnVmZmVyX25ldygpOworICAgIG1fYnVmZmVyRnJvbnRSaWdodCA9IGdzdF9idWZmZXJf
bmV3KCk7CisKKyAgICAvLyBCdWlsZCB0aGUgcGlwZWxpbmUgKGdpb3N0cmVhbXNyYyB8IGZpbGVz
cmMpICEgZGVjb2RlYmluMgorICAgIC8vIEEgZGVpbnRlcmxlYXZlIGVsZW1lbnQgaXMgYWRkZWQg
b25jZSBhIHNyYyBwYWQgYmVjb21lcyBhdmFpbGFibGUgaW4gZGVjb2RlYmluLgorICAgIG1fcGlw
ZWxpbmUgPSBnc3RfcGlwZWxpbmVfbmV3KDApOworCisgICAgR3N0QnVzKiBidXMgPSBnc3RfcGlw
ZWxpbmVfZ2V0X2J1cyhHU1RfUElQRUxJTkUobV9waXBlbGluZSkpOworICAgIGdzdF9idXNfYWRk
X3NpZ25hbF93YXRjaChidXMpOworICAgIGd1bG9uZyBidXNTaWduYWxIYW5kbGVySWQgPSBnX3Np
Z25hbF9jb25uZWN0KGJ1cywgIm1lc3NhZ2UiLCBHX0NBTExCQUNLKG1lc3NhZ2VDYWxsYmFjayks
IHRoaXMpOworCisgICAgR3N0RWxlbWVudCogc291cmNlOworICAgIGlmIChtX2RhdGEpIHsKKyAg
ICAgICAgQVNTRVJUKG1fZGF0YVNpemUpOworICAgICAgICBzb3VyY2UgPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UoImdpb3N0cmVhbXNyYyIsIDApOworICAgICAgICBHUmVmUHRyPEdJbnB1dFN0
cmVhbT4gbWVtb3J5U3RyZWFtID0gZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEo
bV9kYXRhLCBtX2RhdGFTaXplLCAwKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgInN0
cmVhbSIsIG1lbW9yeVN0cmVhbS5nZXQoKSwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
c291cmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJmaWxlc3JjIiwgMCk7CisgICAgICAg
IGdfb2JqZWN0X3NldChzb3VyY2UsICJsb2NhdGlvbiIsIG1fZmlsZVBhdGgsIE5VTEwpOworICAg
IH0KKworICAgIEdzdEVsZW1lbnQqIGRlY29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiZGVjb2RlYmluMiIsICJkZWNvZGViaW4iKTsKKyAgICBndWxvbmcgZGVjb2RlYmluUGFkQWRk
ZWRTaWduYWxIYW5kbGVySWQgPSBnX3NpZ25hbF9jb25uZWN0KGRlY29kZWJpbiwgInBhZC1hZGRl
ZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKSwgdGhp
cyk7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHNvdXJjZSwg
ZGVjb2RlYmluLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChzb3VyY2Us
ICJzcmMiLCBkZWNvZGViaW4sICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwor
CisgICAgbV9lb3MgPSBmYWxzZTsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGlu
ZSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgd2hpbGUgKCFtX2VvcykKKyAgICAgICAgZ19tYWlu
X2NvbnRleHRfaXRlcmF0aW9uKDAsIEZBTFNFKTsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlz
Y29ubmVjdChidXMsIGJ1c1NpZ25hbEhhbmRsZXJJZCk7CisgICAgZ3N0X29iamVjdF91bnJlZihi
dXMpOworCisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlY29kZWJpbiwgZGVjb2Rl
YmluUGFkQWRkZWRTaWduYWxIYW5kbGVySWQpOworCisgICAgaWYgKEdzdEVsZW1lbnQqIGRlaW50
ZXJsZWF2ZSA9IGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTihtX3BpcGVsaW5lKSwgImRlaW50
ZXJsZWF2ZSIpKSB7CisgICAgICAgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2lzX2Nvbm5lY3RlZChk
ZWludGVybGVhdmUsIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRTaWduYWxIYW5kbGVySWQpKQorICAg
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWlu
dGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCk7CisgICAgICAgIGlmIChnX3NpZ25hbF9o
YW5kbGVyX2lzX2Nvbm5lY3RlZChkZWludGVybGVhdmUsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFk
U2lnbmFsSGFuZGxlcklkKSkKKyAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChkZWludGVybGVhdmUsIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkU2lnbmFsSGFuZGxlcklkKTsK
KyAgICAgICAgZ3N0X29iamVjdF91bnJlZihkZWludGVybGVhdmUpOworICAgIH0KKworICAgIHVu
c2lnbmVkIHNpemUgPSBHU1RfQlVGRkVSX1NJWkUobV9idWZmZXJGcm9udExlZnQpOworICAgIHVu
c2lnbmVkIGNoYW5uZWxzID0gbWl4VG9Nb25vID8gMSA6IDI7CisgICAgT3duUHRyPEF1ZGlvQnVz
PiBhdWRpb0J1cyA9IGFkb3B0UHRyKG5ldyBBdWRpb0J1cyhjaGFubmVscywgc2l6ZSAvIHNpemVv
ZihmbG9hdCkpKTsKKyAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShtX3NhbXBsZVJhdGUpOwor
CisgICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVyRnJvbnRMZWZ0
LCBhdWRpb0J1cy0+Y2hhbm5lbCgwKS0+ZGF0YSgpKTsKKyAgICBpZiAoIW1peFRvTW9ubykKKyAg
ICAgICAgY29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKG1fYnVmZmVyRnJvbnRSaWdo
dCwgYXVkaW9CdXMtPmNoYW5uZWwoMSktPmRhdGEoKSk7CisKKyAgICBnc3RfYnVmZmVyX3VucmVm
KG1fYnVmZmVyRnJvbnRMZWZ0KTsKKyAgICBnc3RfYnVmZmVyX3VucmVmKG1fYnVmZmVyRnJvbnRS
aWdodCk7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGluZSwgR1NUX1NUQVRF
X05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChtX3BpcGVsaW5lKSk7CisK
KyAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOworfQorCitQYXNzT3duUHRyPEF1ZGlvQnVz
PiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNoYXIqIGZpbGVQYXRoLCBib29sIG1peFRv
TW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICByZXR1cm4gQXVkaW9GaWxlUmVhZGVyKGZp
bGVQYXRoKS5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4VG9Nb25vKTsKK30KKworUGFzc093blB0
cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01vbm8sIGZsb2F0IHNhbXBsZVJhdGUpCit7
CisgICAgcmV0dXJuIEF1ZGlvRmlsZVJlYWRlcihkYXRhLCBkYXRhU2l6ZSkuY3JlYXRlQnVzKHNh
bXBsZVJhdGUsIG1peFRvTW9ubyk7Cit9CisKK30gLy8gV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2d0ay9BdWRpb0J1c0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsv
QXVkaW9CdXNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NDY5
NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsv
QXVkaW9CdXNHdGsuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDExIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJBdWRpb0J1
cy5oIgorCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmgiCisjaW5jbHVkZSAi
R093blB0ci5oIgorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQgc2FtcGxlUmF0ZSkKK3sK
KyAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzLndhdiIsIG5h
bWUpKTsKKyAgICBHT3duUHRyPGdjaGFyPiBhYnNvbHV0ZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5h
bWUoREFUQV9ESVIsICJ3ZWJraXRndGstIldFQktJVEdUS19BUElfVkVSU0lPTl9TVFJJTkcsICJy
ZXNvdXJjZXMiLCAiYXVkaW8iLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIHJldHVybiBj
cmVhdGVCdXNGcm9tQXVkaW9GaWxlKGFic29sdXRlRmlsZW5hbWUuZ2V0KCksIGZhbHNlLCBzYW1w
bGVSYXRlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyYWQ0ZTJkLi4zNGVlZDRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1
ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0
dy4KKwogMjAxMS0wOS0yOCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gTW92ZSBkcmFnLWFuZC1kcm9wIGNvZGUgd2hpY2ggY2FuIGJlIHNo
YXJlZCB3aXRoIFdlYktpdDIgdG8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRl
eCBkZTBlODYwLi45ZGQ0YTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtNjYsNiAr
NjYsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQRgogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAog
CSQoR1RLX0NGTEFHUykgXAogCSQoSElMRE9OX0NGTEFHUykgXAorCSQoTElCRkZUV19DRkxBR1Mp
IFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChMSUJYU0xU
X0NGTEFHUykgXApAQCAtOTYsNiArOTcsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQo
R1RLX0xJQlMpIFwKIAkkKEhJTERPTl9MSUJTKSBcCiAJJChKUEVHX0xJQlMpIFwKKwkkKExJQkZG
VFdfTElCUykgXAogCSQoTElCU09VUF9MSUJTKSBcCiAJJChMSUJYTUxfTElCUykgXAogCSQoTElC
WFNMVF9MSUJTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2JjM2M0MC4uNzAzYjg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEyIEBACisyMDExLTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFk
ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogTGluayBhZ2FpbnN0IGxpYmZmdHcuCisKIDIwMTEt
MTAtMTIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBQ
YXNzIFBhcnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8gV2ViS2l0IENsaWVudHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktp
dDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMzYwNDcyYy4uMTA5MzRmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0KQEAgLTEzMzcsNiArMTMzNyw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3Nf
TERBREQgPSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKIAkkKFdJTk1NX0xJ
QlMpIFwKKwkkKExJQkZGVFdfTElCUykgXAogCSQoWkxJQl9MSUJTKQogCiBQcm9ncmFtc19XZWJL
aXRQbHVnaW5Qcm9jZXNzX0xERkxBR1MgPSBcCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9j
b25maWd1cmUuYWMKaW5kZXggNTYzMDU5Zi4uNjMwZGQwOCAxMDA2NDQKLS0tIGEvY29uZmlndXJl
LmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjc3LDYgKzI3Nyw3IEBAIFNRTElURV9SRVFVSVJF
RF9WRVJTSU9OPTMuMAogR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT049MC4xMAogR1NUUkVBTUVS
X1BMVUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OPTAuMTAuMzAKIEVOQ0hBTlRfUkVRVUlSRURf
VkVSU0lPTj0wLjIyCitMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT049My4yLjIKIAogIyBBdmFpbGFi
bGUgbW9kdWxlcwogIwpAQCAtMTA0MywxMCArMTA0NCwxMSBAQCBpZiB0ZXN0ICIkb3Nfd2luMzIi
ID0gIm5vIjsgdGhlbgogZmkKIAogIyBjaGVjayBpZiBnc3RyZWFtZXIgaXMgYXZhaWxhYmxlCi1p
ZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCitpZiB0ZXN0ICIkZW5hYmxlX3Zp
ZGVvIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCiAg
ICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR1NUUkVBTUVSXSwKICAgICAgICAgICAgICAgICAgICAgIFtn
c3RyZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1hcHAtMC4xMAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVh
bWVyLWF1ZGlvLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAK
ICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAg
ICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKQEAgLTEwNTgsNiArMTA2MCwxNyBA
QCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbR1NU
UkVBTUVSX0xJQlNdKQogZmkKIAorIyBjaGVjayBpZiBsaWJmZnR3IGlzIGF2YWlsYWJsZQoraWYg
dGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KKyAgIFBLR19DSEVDS19NT0RV
TEVTKFtMSUJGRlRXXSwKKyAgICAgICAgICAgICAgICAgICAgIFtmZnR3MyA+PSAkTElCRkZUV19S
RVFVSVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICBmZnR3M2YgPj0gJExJQkZGVFdf
UkVRVUlSRURfVkVSU0lPTl0sCisgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9mZnR3PXllc10p
CisKKyAgICBBQ19TVUJTVChbTElCRkZUV19DRkxBR1NdKQorICAgIEFDX1NVQlNUKFtMSUJGRlRX
X0xJQlNdKQorZmkKKwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0
ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1N
RCIKQEAgLTExMzEsNiArMTE0NCw5IEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfUEFOR09dLCBbdGVz
dCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJdKQogIyBHU3RyZWFtZXIgZmVhdHVyZSBj
b25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVf
Z3N0cmVhbWVyIiA9ICJ5ZXMiXSkKIAorIyBXZWIgQXVkaW8gZmVhdHVyZSBjb25kaXRpb25hbAor
QU1fQ09ORElUSU9OQUwoW1VTRV9XRUJBVURJT19GRlRXXSwgW3Rlc3QgIiRoYXZlX2ZmdHciID0g
InllcyJdKQorCiAjIFdlYktpdCBmZWF0dXJlIGNvbmRpdGlvbmFscwogQU1fQ09ORElUSU9OQUwo
W0VOQUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWdfZmVhdHVyZXMiID0gInllcyJdKQog
QU1fQ09ORElUSU9OQUwoW0VOQUJMRV8zRF9SRU5ERVJJTkddLFt0ZXN0ICIkZW5hYmxlXzNkX3Jl
bmRlcmluZyIgPSAieWVzIl0pCi0tIAoxLjcuNy5yYzE=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110979</attachid>
            <date>2011-10-14 01:38:42 -0700</date>
            <delta_ts>2011-10-20 06:32:52 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>39184</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzOWYyM2I0NTNjNzcyOTZiY2JmMzU0MjM3OTllODlkOWYxODQ2Zjc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTUgKysrKysrLQogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCAgfCAgIDY1ICsrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oICAgIHwgICA0OSArKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgIDM3MSArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCAgfCAgIDQyICsrKwog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5
ICsKIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKwogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOCArLQogMTMgZmlsZXMgY2hhbmdlZCwgNzQxIGluc2VydGlvbnMoKyks
IDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlv
QnVzR3RrLmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyYzk2
NGFmLi5jOGYxODhjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3Vy
ZS5hYzogQ2hlY2sgZm9yIGxpYmZmdHcgYW5kIGdzdHJlYW1lci1hdWRpbyBpZiBXZWJBdWRpbwor
ICAgICAgICBidWlsZCBpcyBlbmFibGVkLgorCiAyMDExLTEwLTEyICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShYSFRNTE1QKSBhbmQgYXNz
b2NpYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjAwMGRiMC4uNTBlYWI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ5IEBACisyMDExLTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4gYW5kIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFzaWMg
RmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGluZyBvbmUgb3IgMiBhdWRpbworICAg
ICAgICBjaGFubmVscy4gQW4gZW1wdHkgQXVkaW9EZXN0aW5hdGlvbiBpcyBhbHNvIHByb3ZpZGVk
LCBpdHMgY29tcGxldGUKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaXMgaGFuZGxlZCBpbiBidWcg
Njk4MzUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3Rp
bmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbjo6aGFy
ZHdhcmVTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjppc1BsYXlp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c2FtcGxl
UmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzb3Vy
Y2VQcm92aWRlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmls
ZVJlYWRlckdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0R1N0cmVh
bWVyQXVkaW9DYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEZsb2F0RnJvbUJ5dGVSZWFkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29weUdzdHJlYW1lckJ1ZmZlclRvQXVkaW9DaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Om1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdTdHJlYW1l
ckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6b25HU3Ry
ZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Om9uR1N0
cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxlUmVhZGVy
OjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRlcjo6aGFu
ZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9G
aWxlUmVhZGVyOjpwbHVnRGVpbnRlcmxlYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmls
ZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJ1c0Zyb21BdWRp
b0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVkaW9GaWxl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6CisKIDIw
MTEtMTAtMTIgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBQYXNzIFBhcnNlZCBBY2NlcHQgQXR0cmlidXRlIE1JTUUgVHlwZXMgdG8gV2ViS2l0IENsaWVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYzcwNzkzYy4uYzViZmFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KQEAgLTk5LDYgKzk5LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlL1dlYkNvcmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGFnZS9ndGsgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NhaXJvIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ayBcCkBAIC01MTYsNiArNTE3LDE0IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWExpbmtOYW1l
cy5jcHAgOiAkKFdlYkNvcmUpL2RvbS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvCiBpZiBFTkFC
TEVfV0VCX0FVRElPCiBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJj
b3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCisKK2lmIFVTRV9XRUJBVURJT19G
RlRXCitGRUFUVVJFX0RFRklORVMgKz0gV1RGX1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVf
Y3BwZmxhZ3MgKz0gLURXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9zb3VyY2VzICs9
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAK
K2VuZGlmCisKIGVuZGlmCiAKICMgLS0tLQpAQCAtODIwLDYgKzgyOSw3IEBAIGxpYldlYkNvcmVH
dGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdT
KSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09V
UF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwMjRkMTcwLi4xZTg5ZGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE0NCw2ICsxNDQsOCBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01VUkwuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNET01XaW5kb3cuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNz
Q29tcHJlc3Nvck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNFbnRpdHkuY3BwIFwKQEAgLTUwNyw2ICs1MDksOCBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRlLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTVm9pZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNXYXZlU2hhcGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZl
U2hhcGVyTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZv
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xCdWZmZXIuY3BwIFwKQEAgLTQ2MDUsOCArNDYw
OSwxNyBAQCBlbmRpZiAjIEVORCBFTkFCTEVfU1ZHCiAjIC0tLS0KICMgV2ViIEF1ZGlvIFN1cHBv
cnQKICMgLS0tLQorCiBpZiBFTkFCTEVfV0VCX0FVRElPCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9t
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvTm9kZUN1c3RvbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29udm9sdmVyTm9kZUN1c3RvbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3Rv
bS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0
b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIFwKQEAgLTQ2MzYsNDIgKzQ2NDksMTI5IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5u
ZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1BhcmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvUGFyYW1UaW1lbGluZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1By
b2Nlc3NpbmdFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vz
c2luZ0V2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0JpcXVhZEZpbHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Rl
bGF5RFNQS2VybmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlbGF5UHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvck5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5v
ZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0xvd1Bhc3MyRmlsdGVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vUmVhbHRpbWVBbmFseXNlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFs
dGltZUFuYWx5c2VyTm9kZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1l
QW5hbHlzZXJOb2RlLmgKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2Vy
Tm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCisJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJEU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L1dhdmVTaGFwZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
QXJyYXkuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9EZXN0aW5hdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb0RTUEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0RTUEtlcm5lbFByb2Nlc3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvRmlsZVJlYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb1Byb2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jl
c2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1w
bGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2Vy
bmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJL
ZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Tb3VyY2VQcm92
aWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0JpcXVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9Db25lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Rpc3RhbmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZUQ29udm9sdmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZG
VEZyYW1lLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5l
bC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9QYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJDb252b2x2ZXJTdGFnZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlclN0YWdlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9TaW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9WZWN0b3JNYXRoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Q
b2xlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcAogd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyQ2FsbGJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9DaGFubmVsTWVyZ2VyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hh
bm5lbE1lcmdlci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3Bs
aXR0ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0
ZXIuaCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0F1ZGlvRGVzdGluYXRpb25Ob2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0dhaW4uY3BwIFwKQEAgLTQ2ODIsMTQgKzQ3ODIsMTQgQEAgd2ViY29yZV9idWlsdF9z
b3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvTm9kZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVk
aW9QYW5uZXJOb2RlLmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFubmVy
Tm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1BhcmFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNBdWRpb1Byb2Nlc3NpbmdFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291
cmNlTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQmlxdWFkRmlsdGVyTm9kZS5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNDb252b2x2ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NvbnZvbHZlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RlbGF5Tm9kZS5jcHAgXApAQCAtNDY5OCwxMiArNDc5OCwxNyBAQCB3ZWJjb3JlX2J1aWx0X3Nv
dXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIaWdoUGFzczJGaWx0ZXJOb2Rl
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuaCBcCisJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNMb3dQYXNzMkZpbHRlck5vZGUuaCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAorCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKIGVuZGlmCiAKKwogIyAt
LS0tCiAjIFdlYiBTb2NrZXRzIFN1cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0
M2Q4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJ
TykKKworI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCIKKworI2luY2x1ZGUg
IkF1ZGlvQ2hhbm5lbC5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJHT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBdWRp
b0Rlc3RpbmF0aW9uPiBBdWRpb0Rlc3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9Tb3VyY2VQcm92aWRl
ciYgcHJvdmlkZXIsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7Cit9CisK
K2Zsb2F0IEF1ZGlvRGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCit7CisgICAgcmV0
dXJuIDQ0MTAwOworfQorCitBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyKEF1ZGlvU291cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1wbGVS
YXRlKQorICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKKyAgICAsIG1fcmVuZGVyQnVzKDIsIDEy
OCwgdHJ1ZSkKKyAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9pc1BsYXlp
bmcoZmFsc2UpCit7Cit9CisKK0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyKCkKK3sKK30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
OjpzdGFydCgpCit7CisgICAgbV9pc1BsYXlpbmcgPSB0cnVlOworfQorCit2b2lkIEF1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXI6OnN0b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43Y2YzNzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApA
QCAtMCwwICsxLDQ5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBQaGlsaXBwZSBOb3Jt
YW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKyNkZWZpbmUgQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcl9oCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1
ZGlvRGVzdGluYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24geworcHVibGljOgor
ICAgIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0
IHNhbXBsZVJhdGUpOworICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisK
KyAgICBib29sIGlzUGxheWluZygpIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIEF1ZGlvU291
cmNlUHJvdmlkZXImIHNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsg
fQorCitwcml2YXRlOgorICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CisgICAg
QXVkaW9CdXMgbV9yZW5kZXJCdXM7CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgYm9v
bCBtX2lzUGxheWluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0
cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBlMTJlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiAg
Q29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFu
IERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykK
KworI2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIK
KyNpbmNsdWRlICJHT3duUHRyLmgiCisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgPGdp
by9naW8uaD4KKyNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3Qv
YXVkaW8vbXVsdGljaGFubmVsLmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXJlYWRlci5o
PgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0ZpbGVSZWFkZXIgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEF1ZGlvRmlsZVJlYWRlcik7CitwdWJsaWM6CisgICAgQXVk
aW9GaWxlUmVhZGVyKGNvbnN0IGNoYXIqIGZpbGVQYXRoKTsKKyAgICBBdWRpb0ZpbGVSZWFkZXIo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplKTsKKyAgICB+QXVkaW9GaWxlUmVhZGVy
KCk7CisKKyAgICBQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0
ZSwgYm9vbCBtaXhUb01vbm8pOworCisgICAgR3N0Rmxvd1JldHVybiBoYW5kbGVCdWZmZXIoR3N0
QXBwU2luayopOworICAgIGdib29sZWFuIGhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSopOworICAg
IHZvaWQgaGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKEdzdFBhZCopOworICAgIHZvaWQgZGVpbnRl
cmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKKyAgICB2b2lkIHBsdWdEZWludGVybGVhdmUoR3N0UGFk
Kik7CisKK3ByaXZhdGU6CisgICAgY29uc3Qgdm9pZCogbV9kYXRhOworICAgIHNpemVfdCBtX2Rh
dGFTaXplOworICAgIGNvbnN0IGNoYXIqIG1fZmlsZVBhdGg7CisKKyAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7CisgICAgR3N0QnVmZmVyKiBtX2J1ZmZlckZyb250TGVmdDsKKyAgICBHc3RCdWZmZXIq
IG1fYnVmZmVyRnJvbnRSaWdodDsKKyAgICBHc3RFbGVtZW50KiBtX3BpcGVsaW5lOworICAgIGJv
b2wgbV9lb3M7CisKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRs
ZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQ7
Cit9OworCitzdGF0aWMgR3N0Q2FwcyogZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKGludCBjaGFubmVs
cywgZG91YmxlIHNhbXBsZVJhdGUpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNhcHNUZW1w
bGF0ZSA9ICJhdWRpby94LXJhdy1mbG9hdCwgcmF0ZT0oaW50KSVkLCBjaGFubmVscz0oaW50KSVk
LCBlbmRpYW5uZXNzPShpbnQpJWQsIHdpZHRoPShpbnQpMzIiOworICAgIEdPd25QdHI8Z2NoYXI+
IGNhcHNEZXNjcmlwdGlvbihnX3N0cmR1cF9wcmludGYoY2Fwc1RlbXBsYXRlLCBzdGF0aWNfY2Fz
dDxpbnQ+KHNhbXBsZVJhdGUpLCBjaGFubmVscywgR19CWVRFX09SREVSKSk7CisgICAgcmV0dXJu
IGdzdF9jYXBzX2Zyb21fc3RyaW5nKGNhcHNEZXNjcmlwdGlvbi5nZXQoKSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBnZXRGbG9hdEZyb21CeXRlUmVhZGVyKEdzdEJ5dGVSZWFkZXIgKnJlYWRl
ciwgZmxvYXQgKnZhbCkKK3sKKyNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCisg
ICAgcmV0dXJuIGdzdF9ieXRlX3JlYWRlcl9nZXRfZmxvYXQzMl9sZShyZWFkZXIsIHZhbCk7Cisj
ZWxzZQorICAgIHJldHVybiBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2Zsb2F0MzJfYmUocmVhZGVyLCB2
YWwpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGNvcHlHc3RyZWFtZXJCdWZmZXJUb0F1ZGlv
Q2hhbm5lbChHc3RCdWZmZXIqIGJ1ZmZlciwgZmxvYXQqIGF1ZGlvQ2hhbm5lbCkKK3sKKyAgICBH
c3RCeXRlUmVhZGVyKiBieXRlUmVhZGVyID0gZ3N0X2J5dGVfcmVhZGVyX25ld19mcm9tX2J1ZmZl
cihidWZmZXIpOworICAgIGZsb2F0IHZhbHVlOworCisgICAgd2hpbGUgKGdldEZsb2F0RnJvbUJ5
dGVSZWFkZXIoYnl0ZVJlYWRlciwgJnZhbHVlKSkKKyAgICAgICAgKmF1ZGlvQ2hhbm5lbCsrID0g
dmFsdWU7CisKKyAgICBnc3RfYnl0ZV9yZWFkZXJfZnJlZShieXRlUmVhZGVyKTsKK30KKworc3Rh
dGljIEdzdEZsb3dSZXR1cm4gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2soR3N0QXBwU2luayog
c2luaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlv
RmlsZVJlYWRlcio+KHVzZXJEYXRhKS0+aGFuZGxlQnVmZmVyKHNpbmspOworfQorCitnYm9vbGVh
biBtZXNzYWdlQ2FsbGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlv
RmlsZVJlYWRlciogcmVhZGVyKQoreworICAgIHJldHVybiByZWFkZXItPmhhbmRsZU1lc3NhZ2Uo
bWVzc2FnZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUGFkQWRk
ZWRDYWxsYmFjayhHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQqIHBhZCwgQXVkaW9GaWxlUmVh
ZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5oYW5kbGVOZXdEZWludGVybGVhdmVQYWQocGFk
KTsKK30KKworc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNr
KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEF1ZGlvRmlsZVJlYWRlciogcmVhZGVyKQoreworICAgIHJl
YWRlci0+ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKK30KKworc3RhdGljIHZvaWQgb25H
U3RyZWFtZXJEZWNvZGViaW5QYWRBZGRlZENhbGxiYWNrKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdz
dFBhZCogcGFkLCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZWFkZXItPnBsdWdE
ZWludGVybGVhdmUocGFkKTsKK30KKworQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIo
Y29uc3QgY2hhciogZmlsZVBhdGgpCisgICAgOiBtX2RhdGEoMCkKKyAgICAsIG1fZGF0YVNpemUo
MCkKKyAgICAsIG1fZmlsZVBhdGgoZmlsZVBhdGgpCisgICAgLCBtX2VvcyhmYWxzZSkKK3sKK30K
KworQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IGRhdGFTaXplKQorICAgIDogbV9kYXRhKGRhdGEpCisgICAgLCBtX2RhdGFTaXplKGRhdGFT
aXplKQorICAgICwgbV9maWxlUGF0aCgwKQorICAgICwgbV9lb3MoZmFsc2UpCit7Cit9CisKK0F1
ZGlvRmlsZVJlYWRlcjo6fkF1ZGlvRmlsZVJlYWRlcigpCit7Cit9CisKK0dzdEZsb3dSZXR1cm4g
QXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVCdWZmZXIoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBH
c3RCdWZmZXIqIGJ1ZmZlciA9IGdzdF9hcHBfc2lua19wdWxsX2J1ZmZlcihzaW5rKTsKKyAgICBp
ZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0Q2Fw
cyogY2FwcyA9IGdzdF9idWZmZXJfZ2V0X2NhcHMoYnVmZmVyKTsKKyAgICBHc3RTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisKKyAgICBnaW50
IGNoYW5uZWxzID0gMDsKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUs
ICJjaGFubmVscyIsICZjaGFubmVscykpIHsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7
CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX0VSUk9SOworICAgIH0KKworICAgIGNvbnN0IEdWYWx1ZSogY2hhbm5lbFBvc2l0aW9uc1Zh
bHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoc3RydWN0dXJlLCAiY2hhbm5lbC1wb3NpdGlv
bnMiKTsKKworICAgIC8vIENoZWNrIHRoZSBmaXJzdCBhdWRpbyBjaGFubmVsLiBUaGUgYnVmZmVy
IGlzIHN1cHBvc2VkIHRvIHN0b3JlCisgICAgLy8gZGF0YSBvZiBhIHNpbmdsZSBjaGFubmVsIGFu
eXdheS4KKyAgICBpZiAoIWNoYW5uZWxzIHx8ICFjaGFubmVsUG9zaXRpb25zVmFsdWUgfHwgIWdz
dF92YWx1ZV9pc19maXhlZChjaGFubmVsUG9zaXRpb25zVmFsdWUpKSB7CisgICAgICAgIGdzdF9j
YXBzX3VucmVmKGNhcHMpOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAg
ICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CisKKyAgICBHc3RBdWRpb0NoYW5uZWxQ
b3NpdGlvbiogcG9zaXRpb25zID0gZ3N0X2F1ZGlvX2dldF9jaGFubmVsX3Bvc2l0aW9ucyhzdHJ1
Y3R1cmUpOworICAgIHN3aXRjaCAocG9zaXRpb25zWzBdKSB7CisgICAgY2FzZSBHU1RfQVVESU9f
Q0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUOgorICAgICAgICBtX2J1ZmZlckZyb250TGVmdCA9
IGdzdF9idWZmZXJfam9pbihtX2J1ZmZlckZyb250TGVmdCwgYnVmZmVyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVDoKKyAg
ICAgICAgbV9idWZmZXJGcm9udFJpZ2h0ID0gZ3N0X2J1ZmZlcl9qb2luKG1fYnVmZmVyRnJvbnRS
aWdodCwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgZ3N0
X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnX2Zy
ZWUocG9zaXRpb25zKTsKKyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKyAgICByZXR1cm4gR1NU
X0ZMT1dfT0s7Cit9CisKK2dib29sZWFuIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTWVzc2FnZShH
c3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdPd25QdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBH
T3duUHRyPGdjaGFyPiBkZWJ1ZzsKKworICAgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRShtZXNz
YWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgorICAgICAgICBtX2VvcyA9IHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0VfV0FSTklORzoKKyAgICAgICAg
Z3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyhtZXNzYWdlLCAmZXJyb3Iub3V0UHRyKCksICZkZWJ1
Zy5vdXRQdHIoKSk7CisgICAgICAgIGdfd2FybmluZygiV2FybmluZzogJWQsICVzIiwgZXJyb3It
PmNvZGUsICBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01F
U1NBR0VfRVJST1I6CisgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2UsICZl
cnJvci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSgiRmF0YWwgZXJyb3I6ICVkLCAlcyIsIGVycm9yLT5jb2RlLCAgZXJyb3ItPm1lc3NhZ2Up
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgQXVkaW9GaWxlUmVhZGVyOjpoYW5kbGVOZXdEZWlu
dGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCit7CisgICAgLy8gQSBuZXcgcGFkIGZvciBhIHBsYW5h
ciBjaGFubmVsIHdhcyBhZGRlZCBpbiBkZWludGVybGVhdmUuIFBsdWcKKyAgICAvLyBpbiBhbiBh
cHBzaW5rIHNvIHdlIGNhbiBwdWxsIHRoZSBkYXRhIGZyb20gZWFjaAorICAgIC8vIGNoYW5uZWwu
IFBpcGVsaW5lIGxvb2tzIGxpa2U6CisgICAgLy8gLi4uIGRlaW50ZXJsZWF2ZSAhIHF1ZXVlICEg
YXBwc2luay4KKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgicXVldWUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9y
eV9tYWtlKCJhcHBzaW5rIiwgMCk7CisKKyAgICBHc3RBcHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNr
czsKKyAgICBjYWxsYmFja3MuZW9zID0gMDsKKyAgICBjYWxsYmFja3MubmV3X3ByZXJvbGwgPSAw
OworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3QgPSAwOworICAgIGNhbGxiYWNrcy5uZXdf
YnVmZmVyID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2s7CisKKyAgICBnc3RfYXBwX3Npbmtf
c2V0X2NhbGxiYWNrcyhHU1RfQVBQX1NJTksoc2luayksICZjYWxsYmFja3MsIHRoaXMsIDApOwor
CisgICAgR3N0Q2FwcyogY2FwcyA9IGdldEdTdHJlYW1lckF1ZGlvQ2FwcygxLCBtX3NhbXBsZVJh
dGUpOworICAgIGdzdF9hcHBfc2lua19zZXRfY2FwcyhHU1RfQVBQX1NJTksoc2luayksIGNhcHMp
OworICAgIGdzdF9jYXBzX3VucmVmKGNhcHMpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1Rf
QklOKG1fcGlwZWxpbmUpLCBxdWV1ZSwgc2luaywgTlVMTCk7CisKKyAgICBHc3RQYWQqIHNpbmtQ
YWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChxdWV1ZSwgInNpbmsiKTsKKyAgICBnc3Rf
cGFkX2xpbmsocGFkLCBzaW5rUGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1Qo
c2lua1BhZCkpOworCisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwocXVldWUsICJzcmMi
LCBzaW5rLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKworICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShxdWV1ZSwgR1NUX1NUQVRFX1JFQURZKTsKKyAgICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUoc2luaywgR1NUX1NUQVRFX1JFQURZKTsKK30KKwordm9pZCBBdWRpb0ZpbGVS
ZWFkZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCkKK3sKKyAgICAvLyBBbGwgZGVpbnRl
cmxlYXZlIHNyYyBwYWRzIGFyZSBub3cgYXZhaWxhYmxlLCBsZXQncyByb2xsIHRvCisgICAgLy8g
UExBWUlORyBzbyBkYXRhIGZsb3dzIHRvd2FyZHMgdGhlIHNpbmtzIGFuZCBpdCBjYW4gYmUgcmV0
cmlldmVkLgorICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVf
UExBWUlORyk7Cit9CisKK3ZvaWQgQXVkaW9GaWxlUmVhZGVyOjpwbHVnRGVpbnRlcmxlYXZlKEdz
dFBhZCogcGFkKQoreworICAgIC8vIEEgZGVjb2RlYmluIHBhZCB3YXMgYWRkZWQsIHBsdWcgaW4g
YSBkZWludGVybGVhdmUgZWxlbWVudCB0bworICAgIC8vIHNlcGFyYXRlIGVhY2ggcGxhbmFyIGNo
YW5uZWwuIFN1YiBwaXBlbGluZSBsb29rcyBsaWtlCisgICAgLy8gLi4uIGRlY29kZWJpbjIgISBh
dWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgY2Fwc2ZpbHRlciAhIGRlaW50ZXJsZWF2ZS4K
KyAgICBHc3RFbGVtZW50KiBhdWRpb0NvbnZlcnQgID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJhdWRpb2NvbnZlcnQiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBhdWRpb1Jlc2FtcGxlID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhdWRpb3Jlc2FtcGxlIiwgMCk7CisgICAgR3N0RWxlbWVu
dCogY2Fwc0ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiY2Fwc2ZpbHRlciIsIDAp
OworICAgIEdzdEVsZW1lbnQqIGRlSW50ZXJsZWF2ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFr
ZSgiZGVpbnRlcmxlYXZlIiwgImRlaW50ZXJsZWF2ZSIpOworCisgICAgZ19vYmplY3Rfc2V0KGRl
SW50ZXJsZWF2ZSwgImtlZXAtcG9zaXRpb25zIiwgVFJVRSwgTlVMTCk7CisgICAgbV9kZWludGVy
bGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVJbnRlcmxl
YXZlLCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFk
ZGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhh
bmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVJbnRlcmxlYXZlLCAibm8tbW9yZS1wYWRzIiwg
R19DQUxMQkFDSyhvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVJlYWR5Q2FsbGJhY2spLCB0aGlzKTsK
KworICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFtZXJBdWRpb0NhcHMoMiwgbV9zYW1wbGVS
YXRlKTsKKyAgICBnX29iamVjdF9zZXQoY2Fwc0ZpbHRlciwgImNhcHMiLCBjYXBzLCBOVUxMKTsK
KyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJ
TihtX3BpcGVsaW5lKSwgYXVkaW9Db252ZXJ0LCBhdWRpb1Jlc2FtcGxlLCBjYXBzRmlsdGVyLCBk
ZUludGVybGVhdmUsIE5VTEwpOworCisgICAgR3N0UGFkKiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQoYXVkaW9Db252ZXJ0LCAic2luayIpOworICAgIGdzdF9wYWRfbGluayhw
YWQsIHNpbmtQYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7
CisKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb0NvbnZlcnQsICJzcmMiLCBh
dWRpb1Jlc2FtcGxlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBn
c3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChhdWRpb1Jlc2FtcGxlLCAic3JjIiwgY2Fwc0ZpbHRl
ciwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAgZ3N0X2VsZW1lbnRf
bGlua19wYWRzX2Z1bGwoY2Fwc0ZpbHRlciwgInNyYyIsIGRlSW50ZXJsZWF2ZSwgInNpbmsiLCBH
U1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRl
X3dpdGhfcGFyZW50KGF1ZGlvQ29udmVydCk7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93
aXRoX3BhcmVudChhdWRpb1Jlc2FtcGxlKTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dp
dGhfcGFyZW50KGNhcHNGaWx0ZXIpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9w
YXJlbnQoZGVJbnRlcmxlYXZlKTsKK30KKworCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBBdWRpb0Zp
bGVSZWFkZXI6OmNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRlLCBib29sIG1peFRvTW9ubykKK3sK
KyAgICBtX3NhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOworCisgICAgc3RhdGljIGJvb2wgZ3N0SW5p
dGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWdzdEluaXRpYWxpemVkKQorICAgICAgICBnc3RJ
bml0aWFsaXplZCA9IGdzdF9pbml0X2NoZWNrKDAsIDAsIDApOworCisgICAgaWYgKCFnc3RJbml0
aWFsaXplZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBtX2J1ZmZlckZyb250TGVm
dCA9IGdzdF9idWZmZXJfbmV3KCk7CisgICAgbV9idWZmZXJGcm9udFJpZ2h0ID0gZ3N0X2J1ZmZl
cl9uZXcoKTsKKworICAgIC8vIEJ1aWxkIHRoZSBwaXBlbGluZSAoZ2lvc3RyZWFtc3JjIHwgZmls
ZXNyYykgISBkZWNvZGViaW4yCisgICAgLy8gQSBkZWludGVybGVhdmUgZWxlbWVudCBpcyBhZGRl
ZCBvbmNlIGEgc3JjIHBhZCBiZWNvbWVzIGF2YWlsYWJsZSBpbiBkZWNvZGViaW4uCisgICAgbV9w
aXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoMCk7CisKKyAgICBHc3RCdXMqIGJ1cyA9IGdzdF9w
aXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisgICAgZ3N0X2J1c19h
ZGRfc2lnbmFsX3dhdGNoKGJ1cyk7CisgICAgZ3Vsb25nIGJ1c1NpZ25hbEhhbmRsZXJJZCA9IGdf
c2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2FnZUNhbGxiYWNr
KSwgdGhpcyk7CisKKyAgICBHc3RFbGVtZW50KiBzb3VyY2U7CisgICAgaWYgKG1fZGF0YSkgewor
ICAgICAgICBBU1NFUlQobV9kYXRhU2l6ZSk7CisgICAgICAgIHNvdXJjZSA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgiZ2lvc3RyZWFtc3JjIiwgMCk7CisgICAgICAgIEdSZWZQdHI8R0lucHV0
U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0
YShtX2RhdGEsIG1fZGF0YVNpemUsIDApOworICAgICAgICBnX29iamVjdF9zZXQoc291cmNlLCAi
c3RyZWFtIiwgbWVtb3J5U3RyZWFtLmdldCgpLCBOVUxMKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZpbGVzcmMiLCAwKTsKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgImxvY2F0aW9uIiwgbV9maWxlUGF0aCwgTlVMTCk7Cisg
ICAgfQorCisgICAgR3N0RWxlbWVudCogZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9t
YWtlKCJkZWNvZGViaW4yIiwgImRlY29kZWJpbiIpOworICAgIGd1bG9uZyBkZWNvZGViaW5QYWRB
ZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVjb2RlYmluLCAicGFkLWFk
ZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2FsbGJhY2spLCB0
aGlzKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgc291cmNl
LCBkZWNvZGViaW4sIE5VTEwpOworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKHNvdXJj
ZSwgInNyYyIsIGRlY29kZWJpbiwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7
CisKKyAgICBtX2VvcyA9IGZhbHNlOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVs
aW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICB3aGlsZSAoIW1fZW9zKQorICAgICAgICBnX21h
aW5fY29udGV4dF9pdGVyYXRpb24oMCwgRkFMU0UpOworCisgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KGJ1cywgYnVzU2lnbmFsSGFuZGxlcklkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVm
KGJ1cyk7CisKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVjb2RlYmluLCBkZWNv
ZGViaW5QYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCk7CisKKyAgICBpZiAoR3N0RWxlbWVudCogZGVp
bnRlcmxlYXZlID0gZ3N0X2Jpbl9nZXRfYnlfbmFtZShHU1RfQklOKG1fcGlwZWxpbmUpLCAiZGVp
bnRlcmxlYXZlIikpIHsKKyAgICAgICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVk
KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCkpCisg
ICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCBtX2Rl
aW50ZXJsZWF2ZVBhZEFkZGVkU2lnbmFsSGFuZGxlcklkKTsKKyAgICAgICAgaWYgKGdfc2lnbmFs
X2hhbmRsZXJfaXNfY29ubmVjdGVkKGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVOb01vcmVQ
YWRTaWduYWxIYW5kbGVySWQpKQorICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQp
OworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKGRlaW50ZXJsZWF2ZSk7CisgICAgfQorCisgICAg
dW5zaWduZWQgc2l6ZSA9IEdTVF9CVUZGRVJfU0laRShtX2J1ZmZlckZyb250TGVmdCk7CisgICAg
dW5zaWduZWQgY2hhbm5lbHMgPSBtaXhUb01vbm8gPyAxIDogMjsKKyAgICBPd25QdHI8QXVkaW9C
dXM+IGF1ZGlvQnVzID0gYWRvcHRQdHIobmV3IEF1ZGlvQnVzKGNoYW5uZWxzLCBzaXplIC8gc2l6
ZW9mKGZsb2F0KSkpOworICAgIGF1ZGlvQnVzLT5zZXRTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7
CisKKyAgICBjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwobV9idWZmZXJGcm9udExl
ZnQsIGF1ZGlvQnVzLT5jaGFubmVsKDApLT5kYXRhKCkpOworICAgIGlmICghbWl4VG9Nb25vKQor
ICAgICAgICBjb3B5R3N0cmVhbWVyQnVmZmVyVG9BdWRpb0NoYW5uZWwobV9idWZmZXJGcm9udFJp
Z2h0LCBhdWRpb0J1cy0+Y2hhbm5lbCgxKS0+ZGF0YSgpKTsKKworICAgIGdzdF9idWZmZXJfdW5y
ZWYobV9idWZmZXJGcm9udExlZnQpOworICAgIGdzdF9idWZmZXJfdW5yZWYobV9idWZmZXJGcm9u
dFJpZ2h0KTsKKworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RB
VEVfTlVMTCk7CisgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKG1fcGlwZWxpbmUpKTsK
KworICAgIHJldHVybiBhdWRpb0J1cy5yZWxlYXNlKCk7Cit9CisKK1Bhc3NPd25QdHI8QXVkaW9C
dXM+IGNyZWF0ZUJ1c0Zyb21BdWRpb0ZpbGUoY29uc3QgY2hhciogZmlsZVBhdGgsIGJvb2wgbWl4
VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIHJldHVybiBBdWRpb0ZpbGVSZWFkZXIo
ZmlsZVBhdGgpLmNyZWF0ZUJ1cyhzYW1wbGVSYXRlLCBtaXhUb01vbm8pOworfQorCitQYXNzT3du
UHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tSW5NZW1vcnlBdWRpb0ZpbGUoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBib29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkK
K3sKKyAgICByZXR1cm4gQXVkaW9GaWxlUmVhZGVyKGRhdGEsIGRhdGFTaXplKS5jcmVhdGVCdXMo
c2FtcGxlUmF0ZSwgbWl4VG9Nb25vKTsKK30KKworfSAvLyBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0
ay9BdWRpb0J1c0d0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIw
OWU5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0
ay9BdWRpb0J1c0d0ay5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlv
QnVzLmgiCisKKyNpbmNsdWRlICJBdWRpb0ZpbGVSZWFkZXIuaCIKKyNpbmNsdWRlICJHT3duUHRy
LmgiCisKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvQnVzOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZShjb25zdCBjaGFyKiBuYW1lLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIEdP
d25QdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMud2F2IiwgbmFtZSkpOwor
ICAgIEdPd25QdHI8Z2NoYXI+IGFic29sdXRlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShEQVRB
X0RJUiwgIndlYmtpdGd0ay0iV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORywgInJlc291cmNl
cyIsICJhdWRpbyIsIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgcmV0dXJuIGNyZWF0ZUJ1
c0Zyb21BdWRpb0ZpbGUoYWJzb2x1dGVGaWxlbmFtZS5nZXQoKSwgZmFsc2UsIHNhbXBsZVJhdGUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDJhZDRlMmQuLjM0ZWVkNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMS0xMC0xMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gV2ViQXVkaW8gQXVkaW9GaWxl
UmVhZGVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IExpbmsgYWdhaW5zdCBsaWJmZnR3LgorCiAy
MDExLTA5LTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBNb3ZlIGRyYWctYW5kLWRyb3AgY29kZSB3aGljaCBjYW4gYmUgc2hhcmVkIHdp
dGggV2ViS2l0MiB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGRlMGU4
NjAuLjlkZDRhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC02Niw2ICs2Niw3IEBA
IGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtf
Q0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQo
TElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdT
KSBcCkBAIC05Niw2ICs5Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUJBCiAJJChHVEtfTElC
UykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdfTElCUykgXAorCSQoTElCRkZUV19MSUJT
KSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJTKSBcCiAJJChMSUJYU0xUX0xJ
QlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA3YmMzYzQwLi43MDNiODRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBs
ZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0dy4KKwogMjAxMS0xMC0xMiAg
Sm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFBhc3MgUGFy
c2VkIEFjY2VwdCBBdHRyaWJ1dGUgTUlNRSBUeXBlcyB0byBXZWJLaXQgQ2xpZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQppbmRleCAzNjA0NzJjLi4xMDkzNGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpA
QCAtMTMzNyw2ICsxMzM3LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9
IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAor
CSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1zX1dlYktpdFBsdWdp
blByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3Vy
ZS5hYwppbmRleCA1NjMwNTlmLi42MzBkZDA4IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysr
IGIvY29uZmlndXJlLmFjCkBAIC0yNzcsNiArMjc3LDcgQEAgU1FMSVRFX1JFUVVJUkVEX1ZFUlNJ
T049My4wCiBHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTj0wLjEwCiBHU1RSRUFNRVJfUExVR0lO
U19CQVNFX1JFUVVJUkVEX1ZFUlNJT049MC4xMC4zMAogRU5DSEFOVF9SRVFVSVJFRF9WRVJTSU9O
PTAuMjIKK0xJQkZGVFdfUkVRVUlSRURfVkVSU0lPTj0zLjIuMgogCiAjIEF2YWlsYWJsZSBtb2R1
bGVzCiAjCkBAIC0xMDQzLDEwICsxMDQ0LDExIEBAIGlmIHRlc3QgIiRvc193aW4zMiIgPSAibm8i
OyB0aGVuCiBmaQogCiAjIGNoZWNrIGlmIGdzdHJlYW1lciBpcyBhdmFpbGFibGUKLWlmIHRlc3Qg
IiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KK2lmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0g
InllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIFBLR19D
SEVDS19NT0RVTEVTKFtHU1RSRUFNRVJdLAogICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1l
ci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAgICAgICAgICAg
ICAgZ3N0cmVhbWVyLWFwcC0wLjEwCisgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXVk
aW8tMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAogICAgICAg
ICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAg
ICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTA1OCw2ICsxMDYwLDE3IEBAIGlmIHRl
c3QgIiRlbmFibGVfdmlkZW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNUKFtHU1RSRUFNRVJf
TElCU10pCiBmaQogCisjIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxlCitpZiB0ZXN0ICIk
ZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgorICAgUEtHX0NIRUNLX01PRFVMRVMoW0xJ
QkZGVFddLAorICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJGRlRXX1JFUVVJUkVE
X1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElCRkZUV19SRVFVSVJF
RF9WRVJTSU9OXSwKKyAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9eWVzXSkKKworICAg
IEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCisgICAgQUNfU1VCU1QoW0xJQkZGVFdfTElCU10p
CitmaQorCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3QgIiRlbmFi
bGVfY292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1EIgpAQCAt
MTEzMSw2ICsxMTQ0LDkgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10sIFt0ZXN0ICIkd2l0
aF9mb250X2JhY2tlbmQiID0gInBhbmdvIl0pCiAjIEdTdHJlYW1lciBmZWF0dXJlIGNvbmRpdGlv
bmFsCiBBTV9DT05ESVRJT05BTChbVVNFX0dTVFJFQU1FUl0sIFt0ZXN0ICIkaGF2ZV9nc3RyZWFt
ZXIiID0gInllcyJdKQogCisjIFdlYiBBdWRpbyBmZWF0dXJlIGNvbmRpdGlvbmFsCitBTV9DT05E
SVRJT05BTChbVVNFX1dFQkFVRElPX0ZGVFddLCBbdGVzdCAiJGhhdmVfZmZ0dyIgPSAieWVzIl0p
CisKICMgV2ViS2l0IGZlYXR1cmUgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJT05BTChbRU5BQkxF
X0RFQlVHXSxbdGVzdCAiJGVuYWJsZV9kZWJ1Z19mZWF0dXJlcyIgPSAieWVzIl0pCiBBTV9DT05E
SVRJT05BTChbRU5BQkxFXzNEX1JFTkRFUklOR10sW3Rlc3QgIiRlbmFibGVfM2RfcmVuZGVyaW5n
IiA9ICJ5ZXMiXSkKLS0gCjEuNy43LnJjMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111762</attachid>
            <date>2011-10-20 06:32:52 -0700</date>
            <delta_ts>2011-10-20 08:53:39 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>39449</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjZTZlNjc1NTExNWRiNTFiZmExYWNjOWVmZTZjZjE5NWY0MTBjNDFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTUgKysrKysrLQogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCAgfCAgIDY1ICsrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oICAgIHwgICA0OSArKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgIDM2NSArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCAgfCAgIDQyICsrKwog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5
ICsKIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKwogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOCArLQogMTMgZmlsZXMgY2hhbmdlZCwgNzM1IGluc2VydGlvbnMoKyks
IDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlv
QnVzR3RrLmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5ZTIy
YTk1Li43NTZlNDZlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3Vy
ZS5hYzogQ2hlY2sgZm9yIGxpYmZmdHcgYW5kIGdzdHJlYW1lci1hdWRpbyBpZiBXZWJBdWRpbwor
ICAgICAgICBidWlsZCBpcyBlbmFibGVkLgorCiAyMDExLTEwLTE5ICBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIFN0cmVhbWxpbmUgd2sxIGRv
Y3VtZW50YXRpb24gYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNGYwYTkxLi4yYmIxMGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
YXNpYyBGaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uLCBzdXBwb3J0aW5nIG9uZSBvciAyIGF1ZGlv
CisgICAgICAgIGNoYW5uZWxzLiBBbiBlbXB0eSBBdWRpb0Rlc3RpbmF0aW9uIGlzIGFsc28gcHJv
dmlkZWQsIGl0cyBjb21wbGV0ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpcyBoYW5kbGVkIGlu
IGJ1ZyA2OTgzNS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6Omlz
UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpz
YW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OnNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRH
U3RyZWFtZXJBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmxvYXRGcm9tQnl0ZVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFu
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdT
dHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
b25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
Om9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpoYW5kbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmls
ZVJlYWRlcjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9GaWxlUmVhZGVyOjpwbHVnRGVpbnRlcmxlYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJ1c0Zy
b21BdWRpb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVk
aW9GaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6
CisKIDIwMTEtMTAtMTggIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZW5jb2RlIHNvdXJjZSBtYXAgdXJsIGFzIHNvdXJj
ZSBtYXAgcGFnZSB1cmwgcXVlcnkgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAw
Nzk2YWI1Li4yMzMyMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtOTksNiArOTksNyBAQCB3
ZWJjb3JlZ3RrX2NwcGZsYWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ayBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Fpcm8gXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lciBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lciBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrIFwKQEAgLTUwMCw2ICs1MDEsMTQgQEAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9YTGlua05hbWVzLmNwcCA6ICQoV2ViQ29yZSkvZG9tL21ha2Vf
bmFtZXMucGwgJChXZWJDb3JlKS8KIGlmIEVOQUJMRV9XRUJfQVVESU8KIEZFQVRVUkVfREVGSU5F
UyArPSBFTkFCTEVfV0VCX0FVRElPPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfV0VC
X0FVRElPPTEKKworaWYgVVNFX1dFQkFVRElPX0ZGVFcKK0ZFQVRVUkVfREVGSU5FUyArPSBXVEZf
VVNFX1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9jcHBmbGFncyArPSAtRFdURl9VU0VfV0VCQVVE
SU9fRkZUVz0xCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2ZmdHcvRkZURnJhbWVGRlRXLmNwcAorZW5kaWYKKwogZW5kaWYKIAogIyAtLS0tCkBA
IC04MTUsNiArODI0LDcgQEAgbGliV2ViQ29yZUd0a19sYV9DUFBGTEFHUyA9IFwKIAkkKEdTVFJF
QU1FUl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1MpIFwKIAkkKEhJTERPTl9DRkxBR1MpIFwKKwkk
KExJQkZGVFdfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFH
UykgXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IGQ5NThmNWEuLmM0NGVjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MTQ1LDYgKzE0NSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0RPTVVSTC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2lu
ZG93LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5oIFwKKwlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRHluYW1pY3NDb21wcmVzc29yTm9kZS5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNFbGVtZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0VsZW1lbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0VudGl0eS5jcHAgXApAQCAt
NTE5LDYgKzUyMSw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1ZhbGlkaXR5U3RhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1ZvaWRDYWxsYmFjay5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNWb2lkQ2FsbGJh
Y2suaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dhdmVTaGFwZXJOb2RlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJHTEFjdGl2ZUluZm8uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTV2ViR0xBY3RpdmVJbmZvLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJH
TEJ1ZmZlci5jcHAgXApAQCAtNDYwMCw4ICs0NjA0LDE3IEBAIGVuZGlmICMgRU5EIEVOQUJMRV9T
VkcKICMgLS0tLQogIyBXZWIgQXVkaW8gU3VwcG9ydAogIyAtLS0tCisKIGlmIEVOQUJMRV9XRUJf
QVVESU8KIHdlYmNvcmVfc291cmNlcyArPSBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Ob2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDb252b2x2ZXJOb2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9CYXNp
Y1Byb2Nlc3Nvck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Jhc2lj
UHJvY2Vzc29yTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0J1ZmZlci5j
cHAgXApAQCAtNDYzMSw0MiArNDY0NCwxMjkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Bhbm5lck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
UGFyYW0uaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmggXAogCVNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Tb3VyY2VOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0JpcXVhZERTUEtlcm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZERT
UEtlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0NvbnZvbHZlck5v
ZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuaCBcCiAJU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RGVsYXlOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBcCisJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
SmF2YVNjcmlwdEF1ZGlvTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFT
Y3JpcHRBdWRpb05vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0
ZXJOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vTG93UGFzczJGaWx0ZXJOb2Rl
LmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBs
ZXRpb25FdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlz
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCi0JU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaAorCVNvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2
ZVNoYXBlclByb2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVy
RFNQS2VybmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtl
cm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9BcnJheS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvQnVzLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hh
bm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0Rlc3RpbmF0aW9uLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9GaWxlUmVhZGVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUHJvY2Vzc29yLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlcktlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1NvdXJjZVByb3ZpZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vQXVkaW9VdGlsaXRpZXMuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQmlxdWFkLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQmlxdWFkLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0NvbmUuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0Rpc3RhbmNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlzdGFu
Y2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktl
cm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvcktlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2Vy
UGFubmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1YWxQb3dlclBh
bm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZVN0dWIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9I
UlRGRGF0YWJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZFbGV2YXRpb24uY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZQYW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bhbm5lci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUmV2ZXJiLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYklucHV0QnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiSW5wdXRCdWZmZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vU2lu
Y1Jlc2FtcGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1NpbmNSZXNh
bXBsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguaCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFk
ZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVk
aW9CdXNHdGsuY3BwCiB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0J1ZmZlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb0J1ZmZlci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJDYWxs
YmFjay5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlckNhbGxiYWNr
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggXAog
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxNZXJnZXIuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsTWVyZ2VyLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0NoYW5uZWxTcGxpdHRlci5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Db250ZXh0LmNwcCBcCi0JRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
Q29udGV4dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9EZXN0aW5hdGlvbk5vZGUu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvR2Fpbi5jcHAgXApAQCAtNDY3Nywx
NCArNDc3NywxNCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNBdWRpb0xpc3RlbmVyLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNB
dWRpb05vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Ob2RlLmggXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Bhbm5lck5vZGUuY3BwIFwKLQlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYW5uZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNBdWRpb1BhcmFtLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlv
UGFyYW0uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUHJvY2Vzc2luZ0V2ZW50Lmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1NvdXJjZU5vZGUuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmggXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0JpcXVhZEZpbHRlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnZv
bHZlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ29udm9sdmVyTm9kZS5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVsYXlOb2RlLmNwcCBcCkBAIC00NjkzLDEy
ICs0NzkzLDE3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hpZ2hQYXNzMkZpbHRlck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
SmF2YVNjcmlwdEF1ZGlvTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU09m
ZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
TG93UGFzczJGaWx0ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0xvd1Bh
c3MyRmlsdGVyTm9kZS5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRp
bWVBbmFseXNlck5vZGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmVhbHRpbWVB
bmFseXNlck5vZGUuaAogZW5kaWYKIAorCiAjIC0tLS0KICMgV2ViIFNvY2tldHMgU3VwcG9ydAog
IyAtLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQzZDg0YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5oIgorCisjaW5jbHVkZSAiQXVkaW9DaGFubmVsLmgiCisjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitQYXNzT3duUHRyPEF1ZGlvRGVzdGluYXRpb24+IEF1ZGlvRGVzdGluYXRp
b246OmNyZWF0ZShBdWRpb1NvdXJjZVByb3ZpZGVyJiBwcm92aWRlciwgZmxvYXQgc2FtcGxlUmF0
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
cHJvdmlkZXIsIHNhbXBsZVJhdGUpKTsKK30KKworZmxvYXQgQXVkaW9EZXN0aW5hdGlvbjo6aGFy
ZHdhcmVTYW1wbGVSYXRlKCkKK3sKKyAgICByZXR1cm4gNDQxMDA7Cit9CisKK0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92
aWRlciYgcHJvdmlkZXIsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgOiBtX3Byb3ZpZGVyKHByb3Zp
ZGVyKQorICAgICwgbV9yZW5kZXJCdXMoMiwgMTI4LCB0cnVlKQorICAgICwgbV9zYW1wbGVSYXRl
KHNhbXBsZVJhdGUpCisgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKK3sKK30KKworQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcjo6fkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKQoreworfQorCit2
b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0YXJ0KCkKK3sKKyAgICBtX2lzUGxheWlu
ZyA9IHRydWU7Cit9CisKK3ZvaWQgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6c3RvcCgpCit7
CisgICAgbV9pc1BsYXlpbmcgPSBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdT
dHJlYW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjM3OTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDExIFBoaWxpcHBlIE5vcm1hbmQgPHBub3JtYW5kQGlnYWxpYS5jb20+Cisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXJfaAorI2RlZmluZSBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyX2gKKworI2luY2x1
ZGUgIkF1ZGlvQnVzLmgiCisjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiB7CitwdWJsaWM6CisgICAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cihBdWRpb1NvdXJjZVByb3ZpZGVyJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgdmlydHVhbCB+
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcigpOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7
CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKworICAgIGJvb2wgaXNQbGF5aW5nKCkgeyByZXR1
cm4gbV9pc1BsYXlpbmc7IH0KKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zYW1wbGVSYXRlOyB9CisgICAgQXVkaW9Tb3VyY2VQcm92aWRlciYgc291cmNlUHJvdmlkZXIo
KSBjb25zdCB7IHJldHVybiBtX3Byb3ZpZGVyOyB9CisKK3ByaXZhdGU6CisgICAgQXVkaW9Tb3Vy
Y2VQcm92aWRlciYgbV9wcm92aWRlcjsKKyAgICBBdWRpb0J1cyBtX3JlbmRlckJ1czsKKworICAg
IGZsb2F0IG1fc2FtcGxlUmF0ZTsKKyAgICBib29sIG1faXNQbGF5aW5nOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjgxNDk5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNw
cApAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMu
TAorICogIENvcHlyaWdodCAoQykgMjAxMSBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFp
bC5jb20+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVy
LmgiCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKyNpbmNs
dWRlICJHUmVmUHRyLmgiCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPGdzdC9hcHAv
Z3N0YXBwc2luay5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9tdWx0aWNoYW5uZWwuaD4KKyNpbmNs
dWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9GaWxlUmVhZGVyIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShBdWRpb0ZpbGVSZWFkZXIpOworcHVibGljOgorICAgIEF1ZGlvRmlsZVJl
YWRlcihjb25zdCBjaGFyKiBmaWxlUGF0aCk7CisgICAgQXVkaW9GaWxlUmVhZGVyKGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSk7CisgICAgfkF1ZGlvRmlsZVJlYWRlcigpOworCisg
ICAgUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzKGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wg
bWl4VG9Nb25vKTsKKworICAgIEdzdEZsb3dSZXR1cm4gaGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsq
KTsKKyAgICBnYm9vbGVhbiBoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqKTsKKyAgICB2b2lkIGhh
bmRsZU5ld0RlaW50ZXJsZWF2ZVBhZChHc3RQYWQqKTsKKyAgICB2b2lkIGRlaW50ZXJsZWF2ZVBh
ZHNDb25maWd1cmVkKCk7CisgICAgdm9pZCBwbHVnRGVpbnRlcmxlYXZlKEdzdFBhZCopOworCitw
cml2YXRlOgorICAgIGNvbnN0IHZvaWQqIG1fZGF0YTsKKyAgICBzaXplX3QgbV9kYXRhU2l6ZTsK
KyAgICBjb25zdCBjaGFyKiBtX2ZpbGVQYXRoOworCisgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwor
ICAgIEdzdEJ1ZmZlckxpc3QqIG1fZnJvbnRMZWZ0QnVmZmVyczsKKyAgICBHc3RCdWZmZXJMaXN0
SXRlcmF0b3IqIG1fZnJvbnRMZWZ0QnVmZmVyc0l0ZXJhdG9yOworICAgIEdzdEJ1ZmZlckxpc3Qq
IG1fZnJvbnRSaWdodEJ1ZmZlcnM7CisgICAgR3N0QnVmZmVyTGlzdEl0ZXJhdG9yKiBtX2Zyb250
UmlnaHRCdWZmZXJzSXRlcmF0b3I7CisgICAgR3N0RWxlbWVudCogbV9waXBlbGluZTsKKyAgICBi
b29sIG1fZW9zOworICAgIHVuc2lnbmVkIG1fY2hhbm5lbFNpemU7CisKKyAgICBndWxvbmcgbV9k
ZWludGVybGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZDsKKyAgICBndWxvbmcgbV9kZWludGVy
bGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQ7Cit9OworCitzdGF0aWMgR3N0Q2FwcyogZ2V0
R1N0cmVhbWVyQXVkaW9DYXBzKGludCBjaGFubmVscywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAg
ICByZXR1cm4gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXVkaW8veC1yYXctZmxvYXQiLCAicmF0ZSIs
IEdfVFlQRV9JTlQsIHN0YXRpY19jYXN0PGludD4oc2FtcGxlUmF0ZSksICJjaGFubmVscyIsIEdf
VFlQRV9JTlQsIGNoYW5uZWxzLCAiZW5kaWFubmVzcyIsIEdfVFlQRV9JTlQsIEdfQllURV9PUkRF
UiwgIndpZHRoIiwgR19UWVBFX0lOVCwgMzIsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBjb3B5
R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFubmVsKEdzdEJ1ZmZlckxpc3QqIGJ1ZmZlcnMsIEF1
ZGlvQ2hhbm5lbCogYXVkaW9DaGFubmVsKQoreworICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciog
aXRlciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKGJ1ZmZlcnMpOworICAgIGdzdF9idWZmZXJf
bGlzdF9pdGVyYXRvcl9uZXh0X2dyb3VwKGl0ZXIpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0g
Z3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX21lcmdlX2dyb3VwKGl0ZXIpOworICAgIGlmIChidWZm
ZXIpIHsKKyAgICAgICAgbWVtY3B5KGF1ZGlvQ2hhbm5lbC0+ZGF0YSgpLCByZWludGVycHJldF9j
YXN0PGZsb2F0Kj4oR1NUX0JVRkZFUl9EQVRBKGJ1ZmZlcikpLCBHU1RfQlVGRkVSX1NJWkUoYnVm
ZmVyKSk7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYoYnVmZmVyKTsKKyAgICB9CisKKyAgICBn
c3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfZnJlZShpdGVyKTsKK30KKworc3RhdGljIEdzdEZsb3dS
ZXR1cm4gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJhY2soR3N0QXBwU2luayogc2luaywgZ3BvaW50
ZXIgdXNlckRhdGEpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEF1ZGlvRmlsZVJlYWRlcio+
KHVzZXJEYXRhKS0+aGFuZGxlQnVmZmVyKHNpbmspOworfQorCitnYm9vbGVhbiBtZXNzYWdlQ2Fs
bGJhY2soR3N0QnVzKiBidXMsIEdzdE1lc3NhZ2UqIG1lc3NhZ2UsIEF1ZGlvRmlsZVJlYWRlciog
cmVhZGVyKQoreworICAgIHJldHVybiByZWFkZXItPmhhbmRsZU1lc3NhZ2UobWVzc2FnZSk7Cit9
CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUGFkQWRkZWRDYWxsYmFjayhH
c3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQqIHBhZCwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIp
Cit7CisgICAgcmVhZGVyLT5oYW5kbGVOZXdEZWludGVybGVhdmVQYWQocGFkKTsKK30KKworc3Rh
dGljIHZvaWQgb25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKEdzdEVsZW1lbnQq
IGVsZW1lbnQsIEF1ZGlvRmlsZVJlYWRlciogcmVhZGVyKQoreworICAgIHJlYWRlci0+ZGVpbnRl
cmxlYXZlUGFkc0NvbmZpZ3VyZWQoKTsKK30KKworc3RhdGljIHZvaWQgb25HU3RyZWFtZXJEZWNv
ZGViaW5QYWRBZGRlZENhbGxiYWNrKEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdFBhZCogcGFkLCBB
dWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZWFkZXItPnBsdWdEZWludGVybGVhdmUo
cGFkKTsKK30KKworQXVkaW9GaWxlUmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3QgY2hhciog
ZmlsZVBhdGgpCisgICAgOiBtX2RhdGEoMCkKKyAgICAsIG1fZGF0YVNpemUoMCkKKyAgICAsIG1f
ZmlsZVBhdGgoZmlsZVBhdGgpCisgICAgLCBtX2VvcyhmYWxzZSkKK3sKK30KKworQXVkaW9GaWxl
UmVhZGVyOjpBdWRpb0ZpbGVSZWFkZXIoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXpl
KQorICAgIDogbV9kYXRhKGRhdGEpCisgICAgLCBtX2RhdGFTaXplKGRhdGFTaXplKQorICAgICwg
bV9maWxlUGF0aCgwKQorICAgICwgbV9lb3MoZmFsc2UpCit7Cit9CisKK0F1ZGlvRmlsZVJlYWRl
cjo6fkF1ZGlvRmlsZVJlYWRlcigpCit7Cit9CisKK0dzdEZsb3dSZXR1cm4gQXVkaW9GaWxlUmVh
ZGVyOjpoYW5kbGVCdWZmZXIoR3N0QXBwU2luayogc2luaykKK3sKKyAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9hcHBfc2lua19wdWxsX2J1ZmZlcihzaW5rKTsKKyAgICBpZiAoIWJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgICAgR3N0Q2FwcyogY2FwcyA9IGdz
dF9idWZmZXJfZ2V0X2NhcHMoYnVmZmVyKTsKKyAgICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUoY2FwcywgMCk7CisKKyAgICBnaW50IGNoYW5uZWxzID0g
MDsKKyAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludChzdHJ1Y3R1cmUsICJjaGFubmVscyIs
ICZjaGFubmVscykgfHwgIWNoYW5uZWxzKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmKGNhcHMp
OworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBHU1Rf
RkxPV19FUlJPUjsKKyAgICB9CisKKyAgICAvLyBDaGVjayB0aGUgZmlyc3QgYXVkaW8gY2hhbm5l
bC4gVGhlIGJ1ZmZlciBpcyBzdXBwb3NlZCB0byBzdG9yZQorICAgIC8vIGRhdGEgb2YgYSBzaW5n
bGUgY2hhbm5lbCBhbnl3YXkuCisgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24qIHBvc2l0aW9u
cyA9IGdzdF9hdWRpb19nZXRfY2hhbm5lbF9wb3NpdGlvbnMoc3RydWN0dXJlKTsKKyAgICBzd2l0
Y2ggKHBvc2l0aW9uc1swXSkgeworICAgIGNhc2UgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05f
RlJPTlRfTEVGVDoKKyAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2FkZChtX2Zyb250
TGVmdEJ1ZmZlcnNJdGVyYXRvciwgZ3N0X2J1ZmZlcl9yZWYoYnVmZmVyKSk7CisgICAgICAgIG1f
Y2hhbm5lbFNpemUgKz0gR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgLSBHU1RfQlVGRkVS
X09GRlNFVChidWZmZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFO
TkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0
b3JfYWRkKG1fZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvciwgZ3N0X2J1ZmZlcl9yZWYoYnVmZmVy
KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGdzdF9idWZmZXJfdW5y
ZWYoYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZ19mcmVlKHBvc2l0aW9u
cyk7CisgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOwor
fQorCitnYm9vbGVhbiBBdWRpb0ZpbGVSZWFkZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSog
bWVzc2FnZSkKK3sKKyAgICBHT3duUHRyPEdFcnJvcj4gZXJyb3I7CisgICAgR093blB0cjxnY2hh
cj4gZGVidWc7CisKKyAgICBzd2l0Y2ggKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkpIHsKKyAg
ICBjYXNlIEdTVF9NRVNTQUdFX0VPUzoKKyAgICAgICAgbV9lb3MgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEdTVF9NRVNTQUdFX1dBUk5JTkc6CisgICAgICAgIGdzdF9tZXNzYWdl
X3BhcnNlX3dhcm5pbmcobWVzc2FnZSwgJmVycm9yLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkp
OworICAgICAgICBnX3dhcm5pbmcoIldhcm5pbmc6ICVkLCAlcyIsIGVycm9yLT5jb2RlLCAgZXJy
b3ItPm1lc3NhZ2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9S
OgorICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyb3Iub3V0UHRy
KCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIkZh
dGFsIGVycm9yOiAlZCwgJXMiLCBlcnJvci0+Y29kZSwgIGVycm9yLT5tZXNzYWdlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVy
biBUUlVFOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZl
UGFkKEdzdFBhZCogcGFkKQoreworICAgIC8vIEEgbmV3IHBhZCBmb3IgYSBwbGFuYXIgY2hhbm5l
bCB3YXMgYWRkZWQgaW4gZGVpbnRlcmxlYXZlLiBQbHVnCisgICAgLy8gaW4gYW4gYXBwc2luayBz
byB3ZSBjYW4gcHVsbCB0aGUgZGF0YSBmcm9tIGVhY2gKKyAgICAvLyBjaGFubmVsLiBQaXBlbGlu
ZSBsb29rcyBsaWtlOgorICAgIC8vIC4uLiBkZWludGVybGVhdmUgISBxdWV1ZSAhIGFwcHNpbmsu
CisgICAgR3N0RWxlbWVudCogcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoInF1ZXVl
IiwgMCk7CisgICAgR3N0RWxlbWVudCogc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgi
YXBwc2luayIsIDApOworCisgICAgR3N0QXBwU2lua0NhbGxiYWNrcyBjYWxsYmFja3M7CisgICAg
Y2FsbGJhY2tzLmVvcyA9IDA7CisgICAgY2FsbGJhY2tzLm5ld19wcmVyb2xsID0gMDsKKyAgICBj
YWxsYmFja3MubmV3X2J1ZmZlcl9saXN0ID0gMDsKKyAgICBjYWxsYmFja3MubmV3X2J1ZmZlciA9
IG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrOworICAgIGdzdF9hcHBfc2lua19zZXRfY2FsbGJh
Y2tzKEdTVF9BUFBfU0lOSyhzaW5rKSwgJmNhbGxiYWNrcywgdGhpcywgMCk7CisKKyAgICBnX29i
amVjdF9zZXQoc2luaywgInN5bmMiLCBGQUxTRSwgTlVMTCk7CisKKyAgICBHc3RDYXBzKiBjYXBz
ID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBzKDEsIG1fc2FtcGxlUmF0ZSk7CisgICAgZ3N0X2FwcF9z
aW5rX3NldF9jYXBzKEdTVF9BUFBfU0lOSyhzaW5rKSwgY2Fwcyk7CisgICAgZ3N0X2NhcHNfdW5y
ZWYoY2Fwcyk7CisKKyAgICBnc3RfYmluX2FkZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIHF1
ZXVlLCBzaW5rLCBOVUxMKTsKKworICAgIEdzdFBhZCogc2lua1BhZCA9IGdzdF9lbGVtZW50X2dl
dF9zdGF0aWNfcGFkKHF1ZXVlLCAic2luayIpOworICAgIGdzdF9wYWRfbGluayhwYWQsIHNpbmtQ
YWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NUX09CSkVDVChzaW5rUGFkKSk7CisKKyAgICBn
c3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChxdWV1ZSwgInNyYyIsIHNpbmssICJzaW5rIiwgR1NU
X1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworCisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHF1
ZXVlLCBHU1RfU1RBVEVfUkVBRFkpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShzaW5rLCBH
U1RfU1RBVEVfUkVBRFkpOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6ZGVpbnRlcmxlYXZl
UGFkc0NvbmZpZ3VyZWQoKQoreworICAgIC8vIEFsbCBkZWludGVybGVhdmUgc3JjIHBhZHMgYXJl
IG5vdyBhdmFpbGFibGUsIGxldCdzIHJvbGwgdG8KKyAgICAvLyBQTEFZSU5HIHNvIGRhdGEgZmxv
d3MgdG93YXJkcyB0aGUgc2lua3MgYW5kIGl0IGNhbiBiZSByZXRyaWV2ZWQuCisgICAgZ3N0X2Vs
ZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKK30KKwordm9p
ZCBBdWRpb0ZpbGVSZWFkZXI6OnBsdWdEZWludGVybGVhdmUoR3N0UGFkKiBwYWQpCit7CisgICAg
Ly8gQSBkZWNvZGViaW4gcGFkIHdhcyBhZGRlZCwgcGx1ZyBpbiBhIGRlaW50ZXJsZWF2ZSBlbGVt
ZW50IHRvCisgICAgLy8gc2VwYXJhdGUgZWFjaCBwbGFuYXIgY2hhbm5lbC4gU3ViIHBpcGVsaW5l
IGxvb2tzIGxpa2UKKyAgICAvLyAuLi4gZGVjb2RlYmluMiAhIGF1ZGlvY29udmVydCAhIGF1ZGlv
cmVzYW1wbGUgISBjYXBzZmlsdGVyICEgZGVpbnRlcmxlYXZlLgorICAgIEdzdEVsZW1lbnQqIGF1
ZGlvQ29udmVydCAgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImF1ZGlvY29udmVydCIsIDAp
OworICAgIEdzdEVsZW1lbnQqIGF1ZGlvUmVzYW1wbGUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21h
a2UoImF1ZGlvcmVzYW1wbGUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBjYXBzRmlsdGVyID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJjYXBzZmlsdGVyIiwgMCk7CisgICAgR3N0RWxlbWVudCog
ZGVJbnRlcmxlYXZlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJkZWludGVybGVhdmUiLCAi
ZGVpbnRlcmxlYXZlIik7CisKKyAgICBnX29iamVjdF9zZXQoZGVJbnRlcmxlYXZlLCAia2VlcC1w
b3NpdGlvbnMiLCBUUlVFLCBOVUxMKTsKKyAgICBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkU2lnbmFs
SGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChkZUludGVybGVhdmUsICJwYWQtYWRkZWQiLCBH
X0NBTExCQUNLKG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUGFkQWRkZWRDYWxsYmFjayksIHRoaXMp
OworICAgIG1fZGVpbnRlcmxlYXZlTm9Nb3JlUGFkU2lnbmFsSGFuZGxlcklkID0gZ19zaWduYWxf
Y29ubmVjdChkZUludGVybGVhdmUsICJuby1tb3JlLXBhZHMiLCBHX0NBTExCQUNLKG9uR1N0cmVh
bWVyRGVpbnRlcmxlYXZlUmVhZHlDYWxsYmFjayksIHRoaXMpOworCisgICAgR3N0Q2FwcyogY2Fw
cyA9IGdldEdTdHJlYW1lckF1ZGlvQ2FwcygyLCBtX3NhbXBsZVJhdGUpOworICAgIGdfb2JqZWN0
X3NldChjYXBzRmlsdGVyLCAiY2FwcyIsIGNhcHMsIE5VTEwpOworICAgIGdzdF9jYXBzX3VucmVm
KGNhcHMpOworCisgICAgZ3N0X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBhdWRp
b0NvbnZlcnQsIGF1ZGlvUmVzYW1wbGUsIGNhcHNGaWx0ZXIsIGRlSW50ZXJsZWF2ZSwgTlVMTCk7
CisKKyAgICBHc3RQYWQqIHNpbmtQYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZChhdWRp
b0NvbnZlcnQsICJzaW5rIik7CisgICAgZ3N0X3BhZF9saW5rKHBhZCwgc2lua1BhZCk7CisgICAg
Z3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKHNpbmtQYWQpKTsKKworICAgIGdzdF9lbGVtZW50
X2xpbmtfcGFkc19mdWxsKGF1ZGlvQ29udmVydCwgInNyYyIsIGF1ZGlvUmVzYW1wbGUsICJzaW5r
IiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFk
c19mdWxsKGF1ZGlvUmVzYW1wbGUsICJzcmMiLCBjYXBzRmlsdGVyLCAic2luayIsIEdTVF9QQURf
TElOS19DSEVDS19OT1RISU5HKTsKKyAgICBnc3RfZWxlbWVudF9saW5rX3BhZHNfZnVsbChjYXBz
RmlsdGVyLCAic3JjIiwgZGVJbnRlcmxlYXZlLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19O
T1RISU5HKTsKKworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoYXVkaW9D
b252ZXJ0KTsKKyAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50KGF1ZGlvUmVz
YW1wbGUpOworICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoY2Fwc0ZpbHRl
cik7CisgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChkZUludGVybGVhdmUp
OworfQorCisKK1Bhc3NPd25QdHI8QXVkaW9CdXM+IEF1ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVz
KGZsb2F0IHNhbXBsZVJhdGUsIGJvb2wgbWl4VG9Nb25vKQoreworICAgIG1fc2FtcGxlUmF0ZSA9
IHNhbXBsZVJhdGU7CisKKyAgICBzdGF0aWMgYm9vbCBnc3RJbml0aWFsaXplZCA9IGZhbHNlOwor
ICAgIGlmICghZ3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIGdzdEluaXRpYWxpemVkID0gZ3N0X2lu
aXRfY2hlY2soMCwgMCwgMCk7CisKKyAgICBpZiAoIWdzdEluaXRpYWxpemVkKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIG1fZnJvbnRMZWZ0QnVmZmVycyA9IGdzdF9idWZmZXJfbGlz
dF9uZXcoKTsKKyAgICBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJfbGlz
dF9pdGVyYXRlKG1fZnJvbnRMZWZ0QnVmZmVycyk7CisgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJh
dG9yX2FkZF9ncm91cChtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7CisKKyAgICBtX2Zyb250
UmlnaHRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOworICAgIG1fZnJvbnRSaWdodEJ1
ZmZlcnNJdGVyYXRvciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRlKG1fZnJvbnRSaWdodEJ1ZmZl
cnMpOworICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9hZGRfZ3JvdXAobV9mcm9udFJpZ2h0
QnVmZmVyc0l0ZXJhdG9yKTsKKworICAgIC8vIEJ1aWxkIHRoZSBwaXBlbGluZSAoZ2lvc3RyZWFt
c3JjIHwgZmlsZXNyYykgISBkZWNvZGViaW4yCisgICAgLy8gQSBkZWludGVybGVhdmUgZWxlbWVu
dCBpcyBhZGRlZCBvbmNlIGEgc3JjIHBhZCBiZWNvbWVzIGF2YWlsYWJsZSBpbiBkZWNvZGViaW4u
CisgICAgbV9waXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcoMCk7CisKKyAgICBHc3RCdXMqIGJ1
cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzKEdTVF9QSVBFTElORShtX3BpcGVsaW5lKSk7CisgICAg
Z3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoKGJ1cyk7CisgICAgZ3Vsb25nIGJ1c1NpZ25hbEhhbmRs
ZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoYnVzLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sobWVzc2Fn
ZUNhbGxiYWNrKSwgdGhpcyk7CisKKyAgICBHc3RFbGVtZW50KiBzb3VyY2U7CisgICAgaWYgKG1f
ZGF0YSkgeworICAgICAgICBBU1NFUlQobV9kYXRhU2l6ZSk7CisgICAgICAgIHNvdXJjZSA9IGdz
dF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiZ2lvc3RyZWFtc3JjIiwgMCk7CisgICAgICAgIEdSZWZQ
dHI8R0lucHV0U3RyZWFtPiBtZW1vcnlTdHJlYW0gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3
X2Zyb21fZGF0YShtX2RhdGEsIG1fZGF0YVNpemUsIDApOworICAgICAgICBnX29iamVjdF9zZXQo
c291cmNlLCAic3RyZWFtIiwgbWVtb3J5U3RyZWFtLmdldCgpLCBOVUxMKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImZpbGVzcmMiLCAw
KTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KHNvdXJjZSwgImxvY2F0aW9uIiwgbV9maWxlUGF0aCwg
TlVMTCk7CisgICAgfQorCisgICAgR3N0RWxlbWVudCogZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9tYWtlKCJkZWNvZGViaW4yIiwgImRlY29kZWJpbiIpOworICAgIGd1bG9uZyBkZWNv
ZGViaW5QYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCA9IGdfc2lnbmFsX2Nvbm5lY3QoZGVjb2RlYmlu
LCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyhvbkdTdHJlYW1lckRlY29kZWJpblBhZEFkZGVkQ2Fs
bGJhY2spLCB0aGlzKTsKKworICAgIGdzdF9iaW5fYWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5l
KSwgc291cmNlLCBkZWNvZGViaW4sIE5VTEwpOworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19m
dWxsKHNvdXJjZSwgInNyYyIsIGRlY29kZWJpbiwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tf
Tk9USElORyk7CisKKyAgICBtX2VvcyA9IGZhbHNlOworICAgIG1fY2hhbm5lbFNpemUgPSAwOwor
ICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICB3aGlsZSAoIW1fZW9zKQorICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24oMCwg
RkFMU0UpOworCisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGJ1cywgYnVzU2lnbmFs
SGFuZGxlcklkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKGJ1cyk7CisKKyAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QoZGVjb2RlYmluLCBkZWNvZGViaW5QYWRBZGRlZFNpZ25hbEhhbmRs
ZXJJZCk7CisKKyAgICBpZiAoR3N0RWxlbWVudCogZGVpbnRlcmxlYXZlID0gZ3N0X2Jpbl9nZXRf
YnlfbmFtZShHU1RfQklOKG1fcGlwZWxpbmUpLCAiZGVpbnRlcmxlYXZlIikpIHsKKyAgICAgICAg
aWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKGRlaW50ZXJsZWF2ZSwgbV9kZWludGVy
bGVhdmVQYWRBZGRlZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgICAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkU2lnbmFs
SGFuZGxlcklkKTsKKyAgICAgICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfaXNfY29ubmVjdGVkKGRl
aW50ZXJsZWF2ZSwgbV9kZWludGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpKQorICAg
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KGRlaW50ZXJsZWF2ZSwgbV9kZWlu
dGVybGVhdmVOb01vcmVQYWRTaWduYWxIYW5kbGVySWQpOworICAgICAgICBnc3Rfb2JqZWN0X3Vu
cmVmKGRlaW50ZXJsZWF2ZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgY2hhbm5lbHMgPSBtaXhU
b01vbm8gPyAxIDogMjsKKyAgICBPd25QdHI8QXVkaW9CdXM+IGF1ZGlvQnVzID0gYWRvcHRQdHIo
bmV3IEF1ZGlvQnVzKGNoYW5uZWxzLCBtX2NoYW5uZWxTaXplLCB0cnVlKSk7CisgICAgYXVkaW9C
dXMtPnNldFNhbXBsZVJhdGUobV9zYW1wbGVSYXRlKTsKKworICAgIGNvcHlHc3RyZWFtZXJCdWZm
ZXJzVG9BdWRpb0NoYW5uZWwobV9mcm9udExlZnRCdWZmZXJzLCBhdWRpb0J1cy0+Y2hhbm5lbCgw
KSk7CisgICAgaWYgKCFtaXhUb01vbm8pCisgICAgICAgIGNvcHlHc3RyZWFtZXJCdWZmZXJzVG9B
dWRpb0NoYW5uZWwobV9mcm9udFJpZ2h0QnVmZmVycywgYXVkaW9CdXMtPmNoYW5uZWwoMSkpOwor
CisgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2ZyZWUobV9mcm9udExlZnRCdWZmZXJzSXRl
cmF0b3IpOworICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9mcmVlKG1fZnJvbnRSaWdodEJ1
ZmZlcnNJdGVyYXRvcik7CisgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRMZWZ0QnVm
ZmVycyk7CisgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmKG1fZnJvbnRSaWdodEJ1ZmZlcnMpOwor
CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsK
KyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpFQ1QobV9waXBlbGluZSkpOworCisgICAgcmV0
dXJuIGF1ZGlvQnVzLnJlbGVhc2UoKTsKK30KKworUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRl
QnVzRnJvbUF1ZGlvRmlsZShjb25zdCBjaGFyKiBmaWxlUGF0aCwgYm9vbCBtaXhUb01vbm8sIGZs
b2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIEF1ZGlvRmlsZVJlYWRlcihmaWxlUGF0aCku
Y3JlYXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9ubyk7Cit9CisKK1Bhc3NPd25QdHI8QXVkaW9C
dXM+IGNyZWF0ZUJ1c0Zyb21Jbk1lbW9yeUF1ZGlvRmlsZShjb25zdCB2b2lkKiBkYXRhLCBzaXpl
X3QgZGF0YVNpemUsIGJvb2wgbWl4VG9Nb25vLCBmbG9hdCBzYW1wbGVSYXRlKQoreworICAgIHJl
dHVybiBBdWRpb0ZpbGVSZWFkZXIoZGF0YSwgZGF0YVNpemUpLmNyZWF0ZUJ1cyhzYW1wbGVSYXRl
LCBtaXhUb01vbm8pOworfQorCit9IC8vIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVk
aW9CdXNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVz
R3RrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjA5ZTk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVz
R3RrLmNwcApAQCAtMCwwICsxLDQyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0FVRElPKQorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKwor
I2luY2x1ZGUgIkF1ZGlvRmlsZVJlYWRlci5oIgorI2luY2x1ZGUgIkdPd25QdHIuaCIKKworI2lu
Y2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUGFzc093blB0cjxBdWRpb0J1cz4gQXVkaW9CdXM6OmxvYWRQbGF0Zm9ybVJlc291cmNl
KGNvbnN0IGNoYXIqIG5hbWUsIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgR093blB0cjxnY2hh
cj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy53YXYiLCBuYW1lKSk7CisgICAgR093blB0
cjxnY2hhcj4gYWJzb2x1dGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKERBVEFfRElSLCAid2Vi
a2l0Z3RrLSJXRUJLSVRHVEtfQVBJX1ZFUlNJT05fU1RSSU5HLCAicmVzb3VyY2VzIiwgImF1ZGlv
IiwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICByZXR1cm4gY3JlYXRlQnVzRnJvbUF1ZGlv
RmlsZShhYnNvbHV0ZUZpbGVuYW1lLmdldCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggYmY2ZWNhOC4uNjcyNmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDExLTEwLTExICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY5ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogTGluayBhZ2FpbnN0IGxpYmZmdHcuCisKIDIwMTEtMTAtMTkg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgR1RLKyBi
dWlsZCBmaXguIFJlbmFtZSB0aGUgSU5DTFVERVMgdmFyaWFibGUgc28gaXQgaXMgbm90IHBpY2tl
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA2NzBlOTE1Li43NTJjOWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtNjYsNiArNjYsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFf
Q1BQRgogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoSElMRE9O
X0NGTEFHUykgXAorCSQoTElCRkZUV19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJ
JChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXApAQCAtOTYsNiArOTcsNyBA
QCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19B
UElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQoR1RLX0xJQlMpIFwKIAkkKEhJTERPTl9MSUJT
KSBcCiAJJChKUEVHX0xJQlMpIFwKKwkkKExJQkZGVFdfTElCUykgXAogCSQoTElCU09VUF9MSUJT
KSBcCiAJJChMSUJYTUxfTElCUykgXAogCSQoTElCWFNMVF9MSUJTKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NzM1OTMwZC4uOTViNGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDExLTEwLTEx
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0
cmVhbWVyXSBXZWJBdWRpbyBBdWRpb0ZpbGVSZWFkZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5ODM0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTog
TGluayBhZ2FpbnN0IGxpYmZmdHcuCisKIDIwMTEtMTAtMTAgIE1hcnRpbiBSb2JpbnNvbiAgPG1y
b2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtXZWJLaXQyXSBBbGxvdyBzaGFy
aW5nIHBhZ2UgY2xpZW50cyBiZXR3ZWVuIFdlYlZpZXdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDgwYTExZmIuLmNkYWI3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMzU0LDYgKzEzNTQs
NyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQUREID0gXAogCSQoWFJFTkRFUl9M
SUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChXSU5NTV9MSUJTKSBcCisJJChMSUJGRlRXX0xJQlMp
IFwKIAkkKFpMSUJfTElCUykKIAogUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREZMQUdT
ID0gXApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDIzYTY2
OTEuLmQwNGQzOTYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMK
QEAgLTI3Nyw2ICsyNzcsNyBAQCBTUUxJVEVfUkVRVUlSRURfVkVSU0lPTj0zLjAKIEdTVFJFQU1F
Ul9SRVFVSVJFRF9WRVJTSU9OPTAuMTAKIEdTVFJFQU1FUl9QTFVHSU5TX0JBU0VfUkVRVUlSRURf
VkVSU0lPTj0wLjEwLjMwCiBFTkNIQU5UX1JFUVVJUkVEX1ZFUlNJT049MC4yMgorTElCRkZUV19S
RVFVSVJFRF9WRVJTSU9OPTMuMi4yCiAKICMgQXZhaWxhYmxlIG1vZHVsZXMKICMKQEAgLTEwMzUs
MTAgKzEwMzYsMTEgQEAgaWYgdGVzdCAiJG9zX3dpbjMyIiA9ICJubyI7IHRoZW4KIGZpCiAKICMg
Y2hlY2sgaWYgZ3N0cmVhbWVyIGlzIGF2YWlsYWJsZQotaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIg
PSAieWVzIjsgdGhlbgoraWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0ICIk
ZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVMRVMoW0dT
VFJFQU1FUl0sCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJF
QU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBw
LTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hdWRpby0wLjEwCiAgICAgICAg
ICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBn
c3RyZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIt
cGJ1dGlscy0wLjEwCkBAIC0xMDUwLDYgKzEwNTIsMTcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRl
byIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0dTVFJFQU1FUl9MSUJTXSkKIGZpCiAKKyMg
Y2hlY2sgaWYgbGliZmZ0dyBpcyBhdmFpbGFibGUKK2lmIHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlv
IiA9ICJ5ZXMiOyB0aGVuCisgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbTElCRkZUV10sCisgICAgICAg
ICAgICAgICAgICAgICBbZmZ0dzMgPj0gJExJQkZGVFdfUkVRVUlSRURfVkVSU0lPTgorICAgICAg
ICAgICAgICAgICAgICAgZmZ0dzNmID49ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT05dLAorICAg
ICAgICAgICAgICAgICAgICAgW2hhdmVfZmZ0dz15ZXNdKQorCisgICAgQUNfU1VCU1QoW0xJQkZG
VFdfQ0ZMQUdTXSkKKyAgICBBQ19TVUJTVChbTElCRkZUV19MSUJTXSkKK2ZpCisKICMgY2hlY2sg
Zm9yIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydAogaWYgdGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAi
eWVzIjsgdGhlbgogICAgQ09WRVJBR0VfQ0ZMQUdTPSItTUQiCkBAIC0xMTIzLDYgKzExMzYsOSBA
QCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIg
PSAicGFuZ28iXSkKICMgR1N0cmVhbWVyIGZlYXR1cmUgY29uZGl0aW9uYWwKIEFNX0NPTkRJVElP
TkFMKFtVU0VfR1NUUkVBTUVSXSwgW3Rlc3QgIiRoYXZlX2dzdHJlYW1lciIgPSAieWVzIl0pCiAK
KyMgV2ViIEF1ZGlvIGZlYXR1cmUgY29uZGl0aW9uYWwKK0FNX0NPTkRJVElPTkFMKFtVU0VfV0VC
QVVESU9fRkZUV10sIFt0ZXN0ICIkaGF2ZV9mZnR3IiA9ICJ5ZXMiXSkKKwogIyBXZWJLaXQgZmVh
dHVyZSBjb25kaXRpb25hbHMKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVfREVCVUddLFt0ZXN0ICIk
ZW5hYmxlX2RlYnVnX2ZlYXR1cmVzIiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFMKFtFTkFCTEVf
M0RfUkVOREVSSU5HXSxbdGVzdCAiJGVuYWJsZV8zZF9yZW5kZXJpbmciID0gInllcyJdKQotLSAK
MS43Ljc=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111782</attachid>
            <date>2011-10-20 08:53:39 -0700</date>
            <delta_ts>2011-10-27 05:31:57 -0700</delta_ts>
            <desc>WebAudio GStreamer implementation: step 1</desc>
            <filename>WebAudio-GStreamer-implementation-step-1.patch</filename>
            <type>text/plain</type>
            <size>39412</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiOWIxMGVjOTYxMWFmN2JmNjI1ODYwMzZhYWY2OTA5MTkyNGQxNmZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDExIE9jdCAyMDExIDE0OjM5OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
V2ViQXVkaW8gR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uOiBzdGVwIDEKCi0tLQogQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NiArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAx
MCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAxMTUgKysrKysrLQogLi4uL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCAgfCAgIDY1ICsrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5oICAgIHwgICA0OSArKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxl
UmVhZGVyR1N0cmVhbWVyLmNwcCAgIHwgIDM2NSArKysrKysrKysrKysrKysrKysrKwogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcCAgfCAgIDQyICsrKwog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5
ICsKIFNvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwg
ICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKwogU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxOCArLQogMTMgZmlsZXMgY2hhbmdlZCwgNzM1IGluc2VydGlvbnMoKyks
IDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlv
QnVzR3RrLmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5ZTIy
YTk1Li43NTZlNDZlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2Fs
aWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAg
ICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3Vy
ZS5hYzogQ2hlY2sgZm9yIGxpYmZmdHcgYW5kIGdzdHJlYW1lci1hdWRpbyBpZiBXZWJBdWRpbwor
ICAgICAgICBidWlsZCBpcyBlbmFibGVkLgorCiAyMDExLTEwLTE5ICBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdIFN0cmVhbWxpbmUgd2sxIGRv
Y3VtZW50YXRpb24gYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhODk1NjlkLi44ZWJjNTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPiBhbmQgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1l
bnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBC
YXNpYyBGaWxlUmVhZGVyIGltcGxlbWVudGF0aW9uLCBzdXBwb3J0aW5nIG9uZSBvciAyIGF1ZGlv
CisgICAgICAgIGNoYW5uZWxzLiBBbiBlbXB0eSBBdWRpb0Rlc3RpbmF0aW9uIGlzIGFsc28gcHJv
dmlkZWQsIGl0cyBjb21wbGV0ZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiBpcyBoYW5kbGVkIGlu
IGJ1ZyA2OTgzNS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
RGVzdGluYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
OjpoYXJkd2FyZVNhbXBsZVJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjp+QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdG9wKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6Omlz
UGxheWluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpz
YW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OnNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRH
U3RyZWFtZXJBdWRpb0NhcHMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmxvYXRGcm9tQnl0ZVJl
YWRlcik6CisgICAgICAgIChXZWJDb3JlOjpjb3B5R3N0cmVhbWVyQnVmZmVyc1RvQXVkaW9DaGFu
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6Om9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1lc3NhZ2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpvbkdT
dHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
b25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
Om9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0ZpbGVSZWFkZXI6OkF1ZGlvRmlsZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0ZpbGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9GaWxlUmVhZGVyOjpoYW5kbGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9GaWxl
UmVhZGVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmlsZVJlYWRl
cjo6aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRmls
ZVJlYWRlcjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9GaWxlUmVhZGVyOjpwbHVnRGVpbnRlcmxlYXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvRmlsZVJlYWRlcjo6Y3JlYXRlQnVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUJ1c0Zy
b21BdWRpb0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQnVzRnJvbUluTWVtb3J5QXVk
aW9GaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSk6
CisKIDIwMTEtMTAtMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbUXRdIFJvbGwtYmFjayByOTc5NjQsIHI5Nzk3MiBhbmQgZml4IGluIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDMyOC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
aW5kZXggMDc5NmFiNS4uMjMzMjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTk5LDYgKzk5
LDcgQEAgd2ViY29yZWd0a19jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2d0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvIFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ayBcCkBAIC01MDAsNiArNTAxLDE0
IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvWExpbmtOYW1lcy5jcHAgOiAkKFdlYkNvcmUpL2Rv
bS9tYWtlX25hbWVzLnBsICQoV2ViQ29yZSkvCiBpZiBFTkFCTEVfV0VCX0FVRElPCiBGRUFUVVJF
X0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5B
QkxFX1dFQl9BVURJTz0xCisKK2lmIFVTRV9XRUJBVURJT19GRlRXCitGRUFUVVJFX0RFRklORVMg
Kz0gV1RGX1VTRV9XRUJBVURJT19GRlRXPTEKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURXVEZfVVNF
X1dFQkFVRElPX0ZGVFc9MQord2ViY29yZV9zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAKK2VuZGlmCisKIGVuZGlmCiAKICMg
LS0tLQpAQCAtODE1LDYgKzgyNCw3IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAJ
JChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdT
KSBcCisJJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhN
TF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCBkOTU4ZjVhLi5jNDRlYzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTE0NSw2ICsxNDUsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01VUkwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RPTVdpbmRvdy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3cuaCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRWxlbWVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNFbGVtZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFbnRpdHkuY3Bw
IFwKQEAgLTUxOSw2ICs1MjEsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNWYWxpZGl0eVN0YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNWb2lkQ2FsbGJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVm9p
ZENhbGxiYWNrLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXYXZlU2hhcGVyTm9kZS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xBY3RpdmVJbmZvLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1dlYkdMQWN0aXZlSW5mby5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViR0xCdWZmZXIuY3BwIFwKQEAgLTQ2MDAsOCArNDYwNCwxNyBAQCBlbmRpZiAjIEVORCBF
TkFCTEVfU1ZHCiAjIC0tLS0KICMgV2ViIEF1ZGlvIFN1cHBvcnQKICMgLS0tLQorCiBpZiBFTkFC
TEVfV0VCX0FVRElPCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ29udm9sdmVyTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSmF2YVNjcmlwdEF1ZGlvTm9kZUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuY3BwIFwKQEAgLTQ2MzEsNDIgKzQ2NDQsMTI5IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9QYW5uZXJOb2RlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9BdWRpb1BhcmFtLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1l
bGluZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb1Byb2Nlc3NpbmdFdmVudC5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvUHJvY2Vzc2luZ0V2ZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvU291cmNlTm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9C
aXF1YWREU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkRmlsdGVy
Tm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaCBc
CiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmggXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Db252
b2x2ZXJOb2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5l
bC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmggXAogCVNv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nl
c3Nvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggXAor
CVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0hpZ2hQYXNzMkZpbHRlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9IaWdoUGFzczJGaWx0ZXJOb2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9KYXZhU2NyaXB0QXVkaW9Ob2RlLmggXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bh
c3MyRmlsdGVyTm9kZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0xvd1Bhc3MyRmls
dGVyTm9kZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmggXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0NvbXBsZXRpb25FdmVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGlt
ZUFuYWx5c2VyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmgKKwlTb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2
ZVNoYXBlckRTUEtlcm5lbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJEU1BLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nl
c3Nvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQXJyYXkuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0J1cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9B
dWRpb0NoYW5uZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0No
YW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vz
c29yLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRmlsZVJlYWRlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Byb2Nlc3Nvci5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvUmVzYW1wbGVyS2VybmVsLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXJLZXJuZWwuaCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9Tb3VyY2VQcm92aWRlci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1V0aWxpdGllcy5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvVXRpbGl0aWVzLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0JpcXVhZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0Jp
cXVhZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Db25lLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQ29uZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9EaXN0YW5jZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0Rpc3RhbmNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JLZXJuZWwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRXF1
YWxQb3dlclBhbm5lci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0VxdWFs
UG93ZXJQYW5uZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9s
dmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkRhdGFiYXNlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0
aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkVsZXZhdGlvbi5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGUGFubmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSFJURlBhbm5lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
YW5uZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QYW5uZXIuaCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXJTdGFnZS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdlLmgg
XAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9SZXZlcmJJbnB1dEJ1ZmZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYklucHV0QnVmZmVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL1NpbmNSZXNhbXBsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9T
aW5jUmVzYW1wbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1h
dGguY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1plcm9Qb2xlLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9G
aWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3RrL0F1ZGlvQnVzR3RrLmNwcAogd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9CdWZmZXIuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJD
YWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsTWVyZ2VyLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvQ2hhbm5lbE1lcmdlci5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0ZXIuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9DaGFubmVsU3BsaXR0ZXIuaCBcCi0JRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0F1ZGlvQ29udGV4dC5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb0NvbnRleHQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb0dhaW4uY3BwIFwKQEAg
LTQ2NzcsMTQgKzQ3NzcsMTQgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQXVkaW9MaXN0ZW5lci5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTQXVkaW9Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvTm9k
ZS5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9QYW5uZXJOb2RlLmNwcCBcCi0J
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvUGFubmVyTm9kZS5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQXVkaW9QYXJhbS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNBdWRpb1BhcmFtLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Byb2Nlc3Np
bmdFdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBdWRpb1Byb2Nlc3NpbmdF
dmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQXVkaW9Tb3VyY2VOb2RlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0F1ZGlvU291cmNlTm9kZS5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTQmlxdWFkRmlsdGVyTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNCaXF1YWRGaWx0ZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNDb252b2x2ZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NvbnZvbHZl
ck5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RlbGF5Tm9kZS5jcHAgXApAQCAt
NDY5MywxMiArNDc5MywxNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNIaWdoUGFzczJGaWx0ZXJOb2RlLmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNKYXZhU2NyaXB0QXVkaW9Ob2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0phdmFTY3JpcHRBdWRpb05vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0xvd1Bhc3MyRmlsdGVyTm9kZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNMb3dQYXNzMkZpbHRlck5vZGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlh
RWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U1JlYWx0aW1lQW5hbHlzZXJOb2RlLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Jl
YWx0aW1lQW5hbHlzZXJOb2RlLmgKIGVuZGlmCiAKKwogIyAtLS0tCiAjIFdlYiBTb2NrZXRzIFN1
cHBvcnQKICMgLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0M2Q4NGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuaCIKKworI2luY2x1ZGUgIkF1ZGlvQ2hhbm5lbC5oIgorI2lu
Y2x1ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJHT3duUHRyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxBdWRpb0Rlc3RpbmF0aW9uPiBBdWRpb0Rl
c3RpbmF0aW9uOjpjcmVhdGUoQXVkaW9Tb3VyY2VQcm92aWRlciYgcHJvdmlkZXIsIGZsb2F0IHNh
bXBsZVJhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyKHByb3ZpZGVyLCBzYW1wbGVSYXRlKSk7Cit9CisKK2Zsb2F0IEF1ZGlvRGVzdGluYXRp
b246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpCit7CisgICAgcmV0dXJuIDQ0MTAwOworfQorCitBdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvU291
cmNlUHJvdmlkZXImIHByb3ZpZGVyLCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIDogbV9wcm92aWRl
cihwcm92aWRlcikKKyAgICAsIG1fcmVuZGVyQnVzKDIsIDEyOCwgdHJ1ZSkKKyAgICAsIG1fc2Ft
cGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCit7Cit9CisKK0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6On5BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKCkKK3sK
K30KKwordm9pZCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpzdGFydCgpCit7CisgICAgbV9p
c1BsYXlpbmcgPSB0cnVlOworfQorCit2b2lkIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OnN0
b3AoKQoreworICAgIG1faXNQbGF5aW5nID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2Yz
Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaApAQCAtMCwwICsxLDQ5IEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAxMSBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBBdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyX2gKKyNkZWZpbmUgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcl9oCisK
KyNpbmNsdWRlICJBdWRpb0J1cy5oIgorI2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyIDog
cHVibGljIEF1ZGlvRGVzdGluYXRpb24geworcHVibGljOgorICAgIEF1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIoQXVkaW9Tb3VyY2VQcm92aWRlciYsIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIHZp
cnR1YWwgfkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
dGFydCgpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisKKyAgICBib29sIGlzUGxheWluZygp
IHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIEF1ZGlvU291cmNlUHJvdmlkZXImIHNvdXJjZVBy
b3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aWRlcjsgfQorCitwcml2YXRlOgorICAgIEF1
ZGlvU291cmNlUHJvdmlkZXImIG1fcHJvdmlkZXI7CisgICAgQXVkaW9CdXMgbV9yZW5kZXJCdXM7
CisKKyAgICBmbG9hdCBtX3NhbXBsZVJhdGU7CisgICAgYm9vbCBtX2lzUGxheWluZzsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEF1ZGlvRGVzdGluYXRpb25HU3Ry
ZWFtZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGU4MWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJl
YW1lci5jcHAKQEAgLTAsMCArMSwzNjUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgWmFuIERvYmVyc2VrICA8emFuZG9iZXJz
ZWtAZ21haWwuY29tPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9BVURJTykKKworI2luY2x1ZGUgIkF1ZGlvRmls
ZVJlYWRlci5oIgorCisjaW5jbHVkZSAiQXVkaW9CdXMuaCIKKyNpbmNsdWRlICJHT3duUHRyLmgi
CisjaW5jbHVkZSAiR1JlZlB0ci5oIgorI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRlIDxn
c3QvYXBwL2dzdGFwcHNpbmsuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vbXVsdGljaGFubmVsLmg+
CisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvRmlsZVJlYWRlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQXVkaW9GaWxlUmVhZGVyKTsKK3B1YmxpYzoKKyAgICBBdWRp
b0ZpbGVSZWFkZXIoY29uc3QgY2hhciogZmlsZVBhdGgpOworICAgIEF1ZGlvRmlsZVJlYWRlcihj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpOworICAgIH5BdWRpb0ZpbGVSZWFkZXIo
KTsKKworICAgIFBhc3NPd25QdHI8QXVkaW9CdXM+IGNyZWF0ZUJ1cyhmbG9hdCBzYW1wbGVSYXRl
LCBib29sIG1peFRvTW9ubyk7CisKKyAgICBHc3RGbG93UmV0dXJuIGhhbmRsZUJ1ZmZlcihHc3RB
cHBTaW5rKik7CisgICAgZ2Jvb2xlYW4gaGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKik7CisgICAg
dm9pZCBoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKik7CisgICAgdm9pZCBkZWludGVy
bGVhdmVQYWRzQ29uZmlndXJlZCgpOworICAgIHZvaWQgcGx1Z0RlaW50ZXJsZWF2ZShHc3RQYWQq
KTsKKworcHJpdmF0ZToKKyAgICBjb25zdCB2b2lkKiBtX2RhdGE7CisgICAgc2l6ZV90IG1fZGF0
YVNpemU7CisgICAgY29uc3QgY2hhciogbV9maWxlUGF0aDsKKworICAgIGZsb2F0IG1fc2FtcGxl
UmF0ZTsKKyAgICBHc3RCdWZmZXJMaXN0KiBtX2Zyb250TGVmdEJ1ZmZlcnM7CisgICAgR3N0QnVm
ZmVyTGlzdEl0ZXJhdG9yKiBtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcjsKKyAgICBHc3RCdWZm
ZXJMaXN0KiBtX2Zyb250UmlnaHRCdWZmZXJzOworICAgIEdzdEJ1ZmZlckxpc3RJdGVyYXRvciog
bV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yOworICAgIEdzdEVsZW1lbnQqIG1fcGlwZWxpbmU7
CisgICAgYm9vbCBtX2VvczsKKyAgICB1bnNpZ25lZCBtX2NoYW5uZWxTaXplOworCisgICAgZ3Vs
b25nIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRTaWduYWxIYW5kbGVySWQ7CisgICAgZ3Vsb25nIG1f
ZGVpbnRlcmxlYXZlTm9Nb3JlUGFkU2lnbmFsSGFuZGxlcklkOworfTsKKworc3RhdGljIEdzdENh
cHMqIGdldEdTdHJlYW1lckF1ZGlvQ2FwcyhpbnQgY2hhbm5lbHMsIGZsb2F0IHNhbXBsZVJhdGUp
Cit7CisgICAgcmV0dXJuIGdzdF9jYXBzX25ld19zaW1wbGUoImF1ZGlvL3gtcmF3LWZsb2F0Iiwg
InJhdGUiLCBHX1RZUEVfSU5ULCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZVJhdGUpLCAiY2hhbm5l
bHMiLCBHX1RZUEVfSU5ULCBjaGFubmVscywgImVuZGlhbm5lc3MiLCBHX1RZUEVfSU5ULCBHX0JZ
VEVfT1JERVIsICJ3aWR0aCIsIEdfVFlQRV9JTlQsIDMyLCBOVUxMKTsKK30KKworc3RhdGljIHZv
aWQgY29weUdzdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChHc3RCdWZmZXJMaXN0KiBidWZm
ZXJzLCBBdWRpb0NoYW5uZWwqIGF1ZGlvQ2hhbm5lbCkKK3sKKyAgICBHc3RCdWZmZXJMaXN0SXRl
cmF0b3IqIGl0ZXIgPSBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0ZShidWZmZXJzKTsKKyAgICBnc3Rf
YnVmZmVyX2xpc3RfaXRlcmF0b3JfbmV4dF9ncm91cChpdGVyKTsKKyAgICBHc3RCdWZmZXIqIGJ1
ZmZlciA9IGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9tZXJnZV9ncm91cChpdGVyKTsKKyAgICBp
ZiAoYnVmZmVyKSB7CisgICAgICAgIG1lbWNweShhdWRpb0NoYW5uZWwtPmRhdGEoKSwgcmVpbnRl
cnByZXRfY2FzdDxmbG9hdCo+KEdTVF9CVUZGRVJfREFUQShidWZmZXIpKSwgR1NUX0JVRkZFUl9T
SVpFKGJ1ZmZlcikpOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmKGJ1ZmZlcik7CisgICAgfQor
CisgICAgZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdG9yX2ZyZWUoaXRlcik7Cit9CisKK3N0YXRpYyBH
c3RGbG93UmV0dXJuIG9uQXBwc2lua05ld0J1ZmZlckNhbGxiYWNrKEdzdEFwcFNpbmsqIHNpbmss
IGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdWRpb0ZpbGVS
ZWFkZXIqPih1c2VyRGF0YSktPmhhbmRsZUJ1ZmZlcihzaW5rKTsKK30KKworZ2Jvb2xlYW4gbWVz
c2FnZUNhbGxiYWNrKEdzdEJ1cyogYnVzLCBHc3RNZXNzYWdlKiBtZXNzYWdlLCBBdWRpb0ZpbGVS
ZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZXR1cm4gcmVhZGVyLT5oYW5kbGVNZXNzYWdlKG1lc3Nh
Z2UpOworfQorCitzdGF0aWMgdm9pZCBvbkdTdHJlYW1lckRlaW50ZXJsZWF2ZVBhZEFkZGVkQ2Fs
bGJhY2soR3N0RWxlbWVudCogZWxlbWVudCwgR3N0UGFkKiBwYWQsIEF1ZGlvRmlsZVJlYWRlciog
cmVhZGVyKQoreworICAgIHJlYWRlci0+aGFuZGxlTmV3RGVpbnRlcmxlYXZlUGFkKHBhZCk7Cit9
CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVhbWVyRGVpbnRlcmxlYXZlUmVhZHlDYWxsYmFjayhHc3RF
bGVtZW50KiBlbGVtZW50LCBBdWRpb0ZpbGVSZWFkZXIqIHJlYWRlcikKK3sKKyAgICByZWFkZXIt
PmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1cmVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uR1N0cmVh
bWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayhHc3RFbGVtZW50KiBlbGVtZW50LCBHc3RQYWQq
IHBhZCwgQXVkaW9GaWxlUmVhZGVyKiByZWFkZXIpCit7CisgICAgcmVhZGVyLT5wbHVnRGVpbnRl
cmxlYXZlKHBhZCk7Cit9CisKK0F1ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKGNvbnN0
IGNoYXIqIGZpbGVQYXRoKQorICAgIDogbV9kYXRhKDApCisgICAgLCBtX2RhdGFTaXplKDApCisg
ICAgLCBtX2ZpbGVQYXRoKGZpbGVQYXRoKQorICAgICwgbV9lb3MoZmFsc2UpCit7Cit9CisKK0F1
ZGlvRmlsZVJlYWRlcjo6QXVkaW9GaWxlUmVhZGVyKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBk
YXRhU2l6ZSkKKyAgICA6IG1fZGF0YShkYXRhKQorICAgICwgbV9kYXRhU2l6ZShkYXRhU2l6ZSkK
KyAgICAsIG1fZmlsZVBhdGgoMCkKKyAgICAsIG1fZW9zKGZhbHNlKQoreworfQorCitBdWRpb0Zp
bGVSZWFkZXI6On5BdWRpb0ZpbGVSZWFkZXIoKQoreworfQorCitHc3RGbG93UmV0dXJuIEF1ZGlv
RmlsZVJlYWRlcjo6aGFuZGxlQnVmZmVyKEdzdEFwcFNpbmsqIHNpbmspCit7CisgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RfYXBwX3NpbmtfcHVsbF9idWZmZXIoc2luayk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICAgIEdzdENhcHMqIGNh
cHMgPSBnc3RfYnVmZmVyX2dldF9jYXBzKGJ1ZmZlcik7CisgICAgR3N0U3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlKGNhcHMsIDApOworCisgICAgZ2ludCBjaGFu
bmVscyA9IDA7CisgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiY2hh
bm5lbHMiLCAmY2hhbm5lbHMpIHx8ICFjaGFubmVscykgeworICAgICAgICBnc3RfY2Fwc191bnJl
ZihjYXBzKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICByZXR1
cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQorCisgICAgLy8gQ2hlY2sgdGhlIGZpcnN0IGF1ZGlv
IGNoYW5uZWwuIFRoZSBidWZmZXIgaXMgc3VwcG9zZWQgdG8gc3RvcmUKKyAgICAvLyBkYXRhIG9m
IGEgc2luZ2xlIGNoYW5uZWwgYW55d2F5LgorICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uKiBw
b3NpdGlvbnMgPSBnc3RfYXVkaW9fZ2V0X2NoYW5uZWxfcG9zaXRpb25zKHN0cnVjdHVyZSk7Cisg
ICAgc3dpdGNoIChwb3NpdGlvbnNbMF0pIHsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BP
U0lUSU9OX0ZST05UX0xFRlQ6CisgICAgICAgIGdzdF9idWZmZXJfbGlzdF9pdGVyYXRvcl9hZGQo
bV9mcm9udExlZnRCdWZmZXJzSXRlcmF0b3IsIGJ1ZmZlcik7CisgICAgICAgIG1fY2hhbm5lbFNp
emUgKz0gR1NUX0JVRkZFUl9PRkZTRVRfRU5EKGJ1ZmZlcikgLSBHU1RfQlVGRkVSX09GRlNFVChi
dWZmZXIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9BVURJT19DSEFOTkVMX1BPU0lU
SU9OX0ZST05UX1JJR0hUOgorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkKG1f
ZnJvbnRSaWdodEJ1ZmZlcnNJdGVyYXRvciwgYnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZihidWZmZXIpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBnX2ZyZWUocG9zaXRpb25zKTsKKyAgICBnc3RfY2Fwc191bnJlZihj
YXBzKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK2dib29sZWFuIEF1ZGlvRmlsZVJl
YWRlcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQoreworICAgIEdPd25QdHI8
R0Vycm9yPiBlcnJvcjsKKyAgICBHT3duUHRyPGdjaGFyPiBkZWJ1ZzsKKworICAgIHN3aXRjaCAo
R1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgor
ICAgICAgICBtX2VvcyA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NB
R0VfV0FSTklORzoKKyAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyhtZXNzYWdlLCAm
ZXJyb3Iub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CisgICAgICAgIGdfd2FybmluZygiV2Fy
bmluZzogJWQsICVzIiwgZXJyb3ItPmNvZGUsICBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6CisgICAgICAgIGdzdF9tZXNzYWdlX3Bh
cnNlX2Vycm9yKG1lc3NhZ2UsICZlcnJvci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKKyAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAiRmF0YWwgZXJyb3I6ICVkLCAlcyIsIGVycm9y
LT5jb2RlLCAgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQgQXVkaW9G
aWxlUmVhZGVyOjpoYW5kbGVOZXdEZWludGVybGVhdmVQYWQoR3N0UGFkKiBwYWQpCit7CisgICAg
Ly8gQSBuZXcgcGFkIGZvciBhIHBsYW5hciBjaGFubmVsIHdhcyBhZGRlZCBpbiBkZWludGVybGVh
dmUuIFBsdWcKKyAgICAvLyBpbiBhbiBhcHBzaW5rIHNvIHdlIGNhbiBwdWxsIHRoZSBkYXRhIGZy
b20gZWFjaAorICAgIC8vIGNoYW5uZWwuIFBpcGVsaW5lIGxvb2tzIGxpa2U6CisgICAgLy8gLi4u
IGRlaW50ZXJsZWF2ZSAhIHF1ZXVlICEgYXBwc2luay4KKyAgICBHc3RFbGVtZW50KiBxdWV1ZSA9
IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgicXVldWUiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBz
aW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJhcHBzaW5rIiwgMCk7CisKKyAgICBHc3RB
cHBTaW5rQ2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICBjYWxsYmFja3MuZW9zID0gMDsKKyAgICBj
YWxsYmFja3MubmV3X3ByZXJvbGwgPSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyX2xpc3Qg
PSAwOworICAgIGNhbGxiYWNrcy5uZXdfYnVmZmVyID0gb25BcHBzaW5rTmV3QnVmZmVyQ2FsbGJh
Y2s7CisgICAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MoR1NUX0FQUF9TSU5LKHNpbmspLCAm
Y2FsbGJhY2tzLCB0aGlzLCAwKTsKKworICAgIGdfb2JqZWN0X3NldChzaW5rLCAic3luYyIsIEZB
TFNFLCBOVUxMKTsKKworICAgIEdzdENhcHMqIGNhcHMgPSBnZXRHU3RyZWFtZXJBdWRpb0NhcHMo
MSwgbV9zYW1wbGVSYXRlKTsKKyAgICBnc3RfYXBwX3Npbmtfc2V0X2NhcHMoR1NUX0FQUF9TSU5L
KHNpbmspLCBjYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZihjYXBzKTsKKworICAgIGdzdF9iaW5f
YWRkX21hbnkoR1NUX0JJTihtX3BpcGVsaW5lKSwgcXVldWUsIHNpbmssIE5VTEwpOworCisgICAg
R3N0UGFkKiBzaW5rUGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQocXVldWUsICJzaW5r
Iik7CisgICAgZ3N0X3BhZF9saW5rKHBhZCwgc2lua1BhZCk7CisgICAgZ3N0X29iamVjdF91bnJl
ZihHU1RfT0JKRUNUKHNpbmtQYWQpKTsKKworICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxs
KHF1ZXVlLCAic3JjIiwgc2luaywgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7
CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUocXVldWUsIEdTVF9TVEFURV9SRUFEWSk7Cisg
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKHNpbmssIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK3Zv
aWQgQXVkaW9GaWxlUmVhZGVyOjpkZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCit7CisgICAg
Ly8gQWxsIGRlaW50ZXJsZWF2ZSBzcmMgcGFkcyBhcmUgbm93IGF2YWlsYWJsZSwgbGV0J3Mgcm9s
bCB0bworICAgIC8vIFBMQVlJTkcgc28gZGF0YSBmbG93cyB0b3dhcmRzIHRoZSBzaW5rcyBhbmQg
aXQgY2FuIGJlIHJldHJpZXZlZC4KKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9waXBlbGlu
ZSwgR1NUX1NUQVRFX1BMQVlJTkcpOworfQorCit2b2lkIEF1ZGlvRmlsZVJlYWRlcjo6cGx1Z0Rl
aW50ZXJsZWF2ZShHc3RQYWQqIHBhZCkKK3sKKyAgICAvLyBBIGRlY29kZWJpbiBwYWQgd2FzIGFk
ZGVkLCBwbHVnIGluIGEgZGVpbnRlcmxlYXZlIGVsZW1lbnQgdG8KKyAgICAvLyBzZXBhcmF0ZSBl
YWNoIHBsYW5hciBjaGFubmVsLiBTdWIgcGlwZWxpbmUgbG9va3MgbGlrZQorICAgIC8vIC4uLiBk
ZWNvZGViaW4yICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGNhcHNmaWx0ZXIgISBk
ZWludGVybGVhdmUuCisgICAgR3N0RWxlbWVudCogYXVkaW9Db252ZXJ0ICA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfbWFrZSgiYXVkaW9jb252ZXJ0IiwgMCk7CisgICAgR3N0RWxlbWVudCogYXVkaW9S
ZXNhbXBsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSgiYXVkaW9yZXNhbXBsZSIsIDApOwor
ICAgIEdzdEVsZW1lbnQqIGNhcHNGaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImNh
cHNmaWx0ZXIiLCAwKTsKKyAgICBHc3RFbGVtZW50KiBkZUludGVybGVhdmUgPSBnc3RfZWxlbWVu
dF9mYWN0b3J5X21ha2UoImRlaW50ZXJsZWF2ZSIsICJkZWludGVybGVhdmUiKTsKKworICAgIGdf
b2JqZWN0X3NldChkZUludGVybGVhdmUsICJrZWVwLXBvc2l0aW9ucyIsIFRSVUUsIE5VTEwpOwor
ICAgIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRTaWduYWxIYW5kbGVySWQgPSBnX3NpZ25hbF9jb25u
ZWN0KGRlSW50ZXJsZWF2ZSwgInBhZC1hZGRlZCIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWlu
dGVybGVhdmVQYWRBZGRlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgbV9kZWludGVybGVhdmVOb01v
cmVQYWRTaWduYWxIYW5kbGVySWQgPSBnX3NpZ25hbF9jb25uZWN0KGRlSW50ZXJsZWF2ZSwgIm5v
LW1vcmUtcGFkcyIsIEdfQ0FMTEJBQ0sob25HU3RyZWFtZXJEZWludGVybGVhdmVSZWFkeUNhbGxi
YWNrKSwgdGhpcyk7CisKKyAgICBHc3RDYXBzKiBjYXBzID0gZ2V0R1N0cmVhbWVyQXVkaW9DYXBz
KDIsIG1fc2FtcGxlUmF0ZSk7CisgICAgZ19vYmplY3Rfc2V0KGNhcHNGaWx0ZXIsICJjYXBzIiwg
Y2FwcywgTlVMTCk7CisgICAgZ3N0X2NhcHNfdW5yZWYoY2Fwcyk7CisKKyAgICBnc3RfYmluX2Fk
ZF9tYW55KEdTVF9CSU4obV9waXBlbGluZSksIGF1ZGlvQ29udmVydCwgYXVkaW9SZXNhbXBsZSwg
Y2Fwc0ZpbHRlciwgZGVJbnRlcmxlYXZlLCBOVUxMKTsKKworICAgIEdzdFBhZCogc2lua1BhZCA9
IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkKGF1ZGlvQ29udmVydCwgInNpbmsiKTsKKyAgICBn
c3RfcGFkX2xpbmsocGFkLCBzaW5rUGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmKEdTVF9PQkpF
Q1Qoc2lua1BhZCkpOworCisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9Db252
ZXJ0LCAic3JjIiwgYXVkaW9SZXNhbXBsZSwgInNpbmsiLCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9U
SElORyk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoYXVkaW9SZXNhbXBsZSwgInNy
YyIsIGNhcHNGaWx0ZXIsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworICAg
IGdzdF9lbGVtZW50X2xpbmtfcGFkc19mdWxsKGNhcHNGaWx0ZXIsICJzcmMiLCBkZUludGVybGVh
dmUsICJzaW5rIiwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworCisgICAgZ3N0X2VsZW1l
bnRfc3luY19zdGF0ZV93aXRoX3BhcmVudChhdWRpb0NvbnZlcnQpOworICAgIGdzdF9lbGVtZW50
X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQoYXVkaW9SZXNhbXBsZSk7CisgICAgZ3N0X2VsZW1lbnRf
c3luY19zdGF0ZV93aXRoX3BhcmVudChjYXBzRmlsdGVyKTsKKyAgICBnc3RfZWxlbWVudF9zeW5j
X3N0YXRlX3dpdGhfcGFyZW50KGRlSW50ZXJsZWF2ZSk7Cit9CisKKworUGFzc093blB0cjxBdWRp
b0J1cz4gQXVkaW9GaWxlUmVhZGVyOjpjcmVhdGVCdXMoZmxvYXQgc2FtcGxlUmF0ZSwgYm9vbCBt
aXhUb01vbm8pCit7CisgICAgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKworICAgIHN0YXRp
YyBib29sIGdzdEluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKCFnc3RJbml0aWFsaXplZCkK
KyAgICAgICAgZ3N0SW5pdGlhbGl6ZWQgPSBnc3RfaW5pdF9jaGVjaygwLCAwLCAwKTsKKworICAg
IGlmICghZ3N0SW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgbV9m
cm9udExlZnRCdWZmZXJzID0gZ3N0X2J1ZmZlcl9saXN0X25ldygpOworICAgIG1fZnJvbnRMZWZ0
QnVmZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZlcl9saXN0X2l0ZXJhdGUobV9mcm9udExlZnRCdWZm
ZXJzKTsKKyAgICBnc3RfYnVmZmVyX2xpc3RfaXRlcmF0b3JfYWRkX2dyb3VwKG1fZnJvbnRMZWZ0
QnVmZmVyc0l0ZXJhdG9yKTsKKworICAgIG1fZnJvbnRSaWdodEJ1ZmZlcnMgPSBnc3RfYnVmZmVy
X2xpc3RfbmV3KCk7CisgICAgbV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yID0gZ3N0X2J1ZmZl
cl9saXN0X2l0ZXJhdGUobV9mcm9udFJpZ2h0QnVmZmVycyk7CisgICAgZ3N0X2J1ZmZlcl9saXN0
X2l0ZXJhdG9yX2FkZF9ncm91cChtX2Zyb250UmlnaHRCdWZmZXJzSXRlcmF0b3IpOworCisgICAg
Ly8gQnVpbGQgdGhlIHBpcGVsaW5lIChnaW9zdHJlYW1zcmMgfCBmaWxlc3JjKSAhIGRlY29kZWJp
bjIKKyAgICAvLyBBIGRlaW50ZXJsZWF2ZSBlbGVtZW50IGlzIGFkZGVkIG9uY2UgYSBzcmMgcGFk
IGJlY29tZXMgYXZhaWxhYmxlIGluIGRlY29kZWJpbi4KKyAgICBtX3BpcGVsaW5lID0gZ3N0X3Bp
cGVsaW5lX25ldygwKTsKKworICAgIEdzdEJ1cyogYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMo
R1NUX1BJUEVMSU5FKG1fcGlwZWxpbmUpKTsKKyAgICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2go
YnVzKTsKKyAgICBndWxvbmcgYnVzU2lnbmFsSGFuZGxlcklkID0gZ19zaWduYWxfY29ubmVjdChi
dXMsICJtZXNzYWdlIiwgR19DQUxMQkFDSyhtZXNzYWdlQ2FsbGJhY2spLCB0aGlzKTsKKworICAg
IEdzdEVsZW1lbnQqIHNvdXJjZTsKKyAgICBpZiAobV9kYXRhKSB7CisgICAgICAgIEFTU0VSVCht
X2RhdGFTaXplKTsKKyAgICAgICAgc291cmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJn
aW9zdHJlYW1zcmMiLCAwKTsKKyAgICAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IG1lbW9yeVN0
cmVhbSA9IGdfbWVtb3J5X2lucHV0X3N0cmVhbV9uZXdfZnJvbV9kYXRhKG1fZGF0YSwgbV9kYXRh
U2l6ZSwgMCk7CisgICAgICAgIGdfb2JqZWN0X3NldChzb3VyY2UsICJzdHJlYW0iLCBtZW1vcnlT
dHJlYW0uZ2V0KCksIE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNvdXJjZSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfbWFrZSgiZmlsZXNyYyIsIDApOworICAgICAgICBnX29iamVjdF9zZXQo
c291cmNlLCAibG9jYXRpb24iLCBtX2ZpbGVQYXRoLCBOVUxMKTsKKyAgICB9CisKKyAgICBHc3RF
bGVtZW50KiBkZWNvZGViaW4gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImRlY29kZWJpbjIi
LCAiZGVjb2RlYmluIik7CisgICAgZ3Vsb25nIGRlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxl
cklkID0gZ19zaWduYWxfY29ubmVjdChkZWNvZGViaW4sICJwYWQtYWRkZWQiLCBHX0NBTExCQUNL
KG9uR1N0cmVhbWVyRGVjb2RlYmluUGFkQWRkZWRDYWxsYmFjayksIHRoaXMpOworCisgICAgZ3N0
X2Jpbl9hZGRfbWFueShHU1RfQklOKG1fcGlwZWxpbmUpLCBzb3VyY2UsIGRlY29kZWJpbiwgTlVM
TCk7CisgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzX2Z1bGwoc291cmNlLCAic3JjIiwgZGVjb2Rl
YmluLCAic2luayIsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKworICAgIG1fZW9zID0g
ZmFsc2U7CisgICAgbV9jaGFubmVsU2l6ZSA9IDA7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRl
KG1fcGlwZWxpbmUsIEdTVF9TVEFURV9QQVVTRUQpOworICAgIHdoaWxlICghbV9lb3MpCisgICAg
ICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbigwLCBGQUxTRSk7CisKKyAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QoYnVzLCBidXNTaWduYWxIYW5kbGVySWQpOworICAgIGdzdF9vYmpl
Y3RfdW5yZWYoYnVzKTsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChkZWNvZGVi
aW4sIGRlY29kZWJpblBhZEFkZGVkU2lnbmFsSGFuZGxlcklkKTsKKworICAgIGlmIChHc3RFbGVt
ZW50KiBkZWludGVybGVhdmUgPSBnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4obV9waXBlbGlu
ZSksICJkZWludGVybGVhdmUiKSkgeworICAgICAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9pc19j
b25uZWN0ZWQoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2ZVBhZEFkZGVkU2lnbmFsSGFuZGxl
cklkKSkKKyAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChkZWludGVybGVh
dmUsIG1fZGVpbnRlcmxlYXZlUGFkQWRkZWRTaWduYWxIYW5kbGVySWQpOworICAgICAgICBpZiAo
Z19zaWduYWxfaGFuZGxlcl9pc19jb25uZWN0ZWQoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2
ZU5vTW9yZVBhZFNpZ25hbEhhbmRsZXJJZCkpCisgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QoZGVpbnRlcmxlYXZlLCBtX2RlaW50ZXJsZWF2ZU5vTW9yZVBhZFNpZ25hbEhh
bmRsZXJJZCk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYoZGVpbnRlcmxlYXZlKTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBjaGFubmVscyA9IG1peFRvTW9ubyA/IDEgOiAyOworICAgIE93blB0
cjxBdWRpb0J1cz4gYXVkaW9CdXMgPSBhZG9wdFB0cihuZXcgQXVkaW9CdXMoY2hhbm5lbHMsIG1f
Y2hhbm5lbFNpemUsIHRydWUpKTsKKyAgICBhdWRpb0J1cy0+c2V0U2FtcGxlUmF0ZShtX3NhbXBs
ZVJhdGUpOworCisgICAgY29weUdzdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChtX2Zyb250
TGVmdEJ1ZmZlcnMsIGF1ZGlvQnVzLT5jaGFubmVsKDApKTsKKyAgICBpZiAoIW1peFRvTW9ubykK
KyAgICAgICAgY29weUdzdHJlYW1lckJ1ZmZlcnNUb0F1ZGlvQ2hhbm5lbChtX2Zyb250UmlnaHRC
dWZmZXJzLCBhdWRpb0J1cy0+Y2hhbm5lbCgxKSk7CisKKyAgICBnc3RfYnVmZmVyX2xpc3RfaXRl
cmF0b3JfZnJlZShtX2Zyb250TGVmdEJ1ZmZlcnNJdGVyYXRvcik7CisgICAgZ3N0X2J1ZmZlcl9s
aXN0X2l0ZXJhdG9yX2ZyZWUobV9mcm9udFJpZ2h0QnVmZmVyc0l0ZXJhdG9yKTsKKyAgICBnc3Rf
YnVmZmVyX2xpc3RfdW5yZWYobV9mcm9udExlZnRCdWZmZXJzKTsKKyAgICBnc3RfYnVmZmVyX2xp
c3RfdW5yZWYobV9mcm9udFJpZ2h0QnVmZmVycyk7CisKKyAgICBnc3RfZWxlbWVudF9zZXRfc3Rh
dGUobV9waXBlbGluZSwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYoR1NU
X09CSkVDVChtX3BpcGVsaW5lKSk7CisKKyAgICByZXR1cm4gYXVkaW9CdXMucmVsZWFzZSgpOwor
fQorCitQYXNzT3duUHRyPEF1ZGlvQnVzPiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGNvbnN0IGNo
YXIqIGZpbGVQYXRoLCBib29sIG1peFRvTW9ubywgZmxvYXQgc2FtcGxlUmF0ZSkKK3sKKyAgICBy
ZXR1cm4gQXVkaW9GaWxlUmVhZGVyKGZpbGVQYXRoKS5jcmVhdGVCdXMoc2FtcGxlUmF0ZSwgbWl4
VG9Nb25vKTsKK30KKworUGFzc093blB0cjxBdWRpb0J1cz4gY3JlYXRlQnVzRnJvbUluTWVtb3J5
QXVkaW9GaWxlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSwgYm9vbCBtaXhUb01v
bm8sIGZsb2F0IHNhbXBsZVJhdGUpCit7CisgICAgcmV0dXJuIEF1ZGlvRmlsZVJlYWRlcihkYXRh
LCBkYXRhU2l6ZSkuY3JlYXRlQnVzKHNhbXBsZVJhdGUsIG1peFRvTW9ubyk7Cit9CisKK30gLy8g
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjFiMDllOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCkBAIC0wLDAgKzEsNDIgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVE
SU8pCisKKyNpbmNsdWRlICJBdWRpb0J1cy5oIgorCisjaW5jbHVkZSAiQXVkaW9GaWxlUmVhZGVy
LmgiCisjaW5jbHVkZSAiR093blB0ci5oIgorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1
ZGUgPGdsaWIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRyPEF1ZGlvQnVz
PiBBdWRpb0J1czo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciogbmFtZSwgZmxvYXQg
c2FtcGxlUmF0ZSkKK3sKKyAgICBHT3duUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmlu
dGYoIiVzLndhdiIsIG5hbWUpKTsKKyAgICBHT3duUHRyPGdjaGFyPiBhYnNvbHV0ZUZpbGVuYW1l
KGdfYnVpbGRfZmlsZW5hbWUoREFUQV9ESVIsICJ3ZWJraXRndGstIldFQktJVEdUS19BUElfVkVS
U0lPTl9TVFJJTkcsICJyZXNvdXJjZXMiLCAiYXVkaW8iLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkp
OworICAgIHJldHVybiBjcmVhdGVCdXNGcm9tQXVkaW9GaWxlKGFic29sdXRlRmlsZW5hbWUuZ2V0
KCksIGZhbHNlLCBzYW1wbGVSYXRlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiY2UyZGE2Li41
YzBmODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFt
ZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5r
IGFnYWluc3QgbGliZmZ0dy4KKwogMjAxMS0xMC0yMCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSB3ZWJraXRndGsncyBwa2djb25maWcgZmls
ZSBuZWVkcyB0byByZXF1aXJlIGphdmFzY3JpcHRjb3JlZ3RrCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDY3MGU5MTUuLjc1MmM5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBA
IC02Niw2ICs2Niw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJJChHU1RSRUFNRVJfQ0ZM
QUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCisJJChMSUJGRlRX
X0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkk
KExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC05Niw2ICs5Nyw3IEBAIGxpYndlYmtpdGd0a19AV0VCS0lU
R1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9M
SUJBCiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdfTElCUykgXAor
CSQoTElCRkZUV19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhNTF9MSUJTKSBc
CiAJJChMSUJYU0xUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YzMxMTYxLi5mMTc1ZGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMTEgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIFdlYkF1ZGlvIEF1ZGlv
RmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njk4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBMaW5rIGFnYWluc3QgbGliZmZ0dy4K
KwogMjAxMS0xMC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIFdlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0KaW5kZXggNTJkZmU3Mi4uN2Q3NjBlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
YW0KQEAgLTEzNTUsNiArMTM1NSw3IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERB
REQgPSBcCiAJJChYUkVOREVSX0xJQlMpIFwKIAkkKFhUX0xJQlMpIFwKIAkkKFdJTk1NX0xJQlMp
IFwKKwkkKExJQkZGVFdfTElCUykgXAogCSQoWkxJQl9MSUJTKQogCiBQcm9ncmFtc19XZWJLaXRQ
bHVnaW5Qcm9jZXNzX0xERkxBR1MgPSBcCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25m
aWd1cmUuYWMKaW5kZXggMjNhNjY5MS4uZDA0ZDM5NiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj
CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjc3LDYgKzI3Nyw3IEBAIFNRTElURV9SRVFVSVJFRF9W
RVJTSU9OPTMuMAogR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT049MC4xMAogR1NUUkVBTUVSX1BM
VUdJTlNfQkFTRV9SRVFVSVJFRF9WRVJTSU9OPTAuMTAuMzAKIEVOQ0hBTlRfUkVRVUlSRURfVkVS
U0lPTj0wLjIyCitMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT049My4yLjIKIAogIyBBdmFpbGFibGUg
bW9kdWxlcwogIwpAQCAtMTAzNSwxMCArMTAzNiwxMSBAQCBpZiB0ZXN0ICIkb3Nfd2luMzIiID0g
Im5vIjsgdGhlbgogZmkKIAogIyBjaGVjayBpZiBnc3RyZWFtZXIgaXMgYXZhaWxhYmxlCi1pZiB0
ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCitpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVv
IiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCiAgICBQ
S0dfQ0hFQ0tfTU9EVUxFUyhbR1NUUkVBTUVSXSwKICAgICAgICAgICAgICAgICAgICAgIFtnc3Ry
ZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAg
ICAgICAgIGdzdHJlYW1lci1hcHAtMC4xMAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVy
LWF1ZGlvLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1iYXNlLTAuMTAKICAg
ICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2VzLTAuMTAKICAgICAgICAgICAg
ICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKQEAgLTEwNTAsNiArMTA1MiwxNyBAQCBp
ZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbR1NUUkVB
TUVSX0xJQlNdKQogZmkKIAorIyBjaGVjayBpZiBsaWJmZnR3IGlzIGF2YWlsYWJsZQoraWYgdGVz
dCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KKyAgIFBLR19DSEVDS19NT0RVTEVT
KFtMSUJGRlRXXSwKKyAgICAgICAgICAgICAgICAgICAgIFtmZnR3MyA+PSAkTElCRkZUV19SRVFV
SVJFRF9WRVJTSU9OCisgICAgICAgICAgICAgICAgICAgICBmZnR3M2YgPj0gJExJQkZGVFdfUkVR
VUlSRURfVkVSU0lPTl0sCisgICAgICAgICAgICAgICAgICAgICBbaGF2ZV9mZnR3PXllc10pCisK
KyAgICBBQ19TVUJTVChbTElCRkZUV19DRkxBR1NdKQorICAgIEFDX1NVQlNUKFtMSUJGRlRXX0xJ
QlNdKQorZmkKKwogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0ICIk
ZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1NRCIK
QEAgLTExMjMsNiArMTEzNiw5IEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfUEFOR09dLCBbdGVzdCAi
JHdpdGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJdKQogIyBHU3RyZWFtZXIgZmVhdHVyZSBjb25k
aXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVfZ3N0
cmVhbWVyIiA9ICJ5ZXMiXSkKIAorIyBXZWIgQXVkaW8gZmVhdHVyZSBjb25kaXRpb25hbAorQU1f
Q09ORElUSU9OQUwoW1VTRV9XRUJBVURJT19GRlRXXSwgW3Rlc3QgIiRoYXZlX2ZmdHciID0gInll
cyJdKQorCiAjIFdlYktpdCBmZWF0dXJlIGNvbmRpdGlvbmFscwogQU1fQ09ORElUSU9OQUwoW0VO
QUJMRV9ERUJVR10sW3Rlc3QgIiRlbmFibGVfZGVidWdfZmVhdHVyZXMiID0gInllcyJdKQogQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV8zRF9SRU5ERVJJTkddLFt0ZXN0ICIkZW5hYmxlXzNkX3JlbmRl
cmluZyIgPSAieWVzIl0pCi0tIAoxLjcuNw==
</data>

          </attachment>
      

    </bug>

</bugzilla>