<?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>73545</bug_id>
          
          <creation_ts>2011-12-01 02:52:34 -0800</creation_ts>
          <short_desc>[GStreamer] FFTFrame implementation</short_desc>
          <delta_ts>2012-02-02 00: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>
          <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>gustavo</cc>
    
    <cc>s.choi</cc>
    
    <cc>slomo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512661</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-01 02:52:34 -0800</bug_when>
    <thetext>This is required for the WebAudio implementation. We currently use FFTW but it&apos;s to be removed from the tree for licensing issues. So a gstfft based implementation is needed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527581</commentid>
    <comment_count>1</comment_count>
    <who name="Dongwoo Joshua Im (dwim)">dw.im</who>
    <bug_when>2011-12-28 00:57:01 -0800</bug_when>
    <thetext>I would be interested in this bug. 
Would you have any plan to implement it soon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527589</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-12-28 01:27:19 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I would be interested in this bug. 
&gt; Would you have any plan to implement it soon?

Yes I started a patch. Will work on it in January.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533163</commentid>
    <comment_count>3</comment_count>
      <attachid>121863</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-10 10:17:17 -0800</bug_when>
    <thetext>Created attachment 121863
FFTFrameGStreamer implementation

Can you test this first iteration of the patch please? I&apos;m also
interested by EWS status and some initial feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533172</commentid>
    <comment_count>4</comment_count>
      <attachid>121865</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-10 10:26:25 -0800</bug_when>
    <thetext>Created attachment 121865
FFTFrameGStreamer implementation

Rebased against ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533395</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-10 14:40:52 -0800</bug_when>
    <thetext>Wow, everyone is doing FFTs :) 

Intel also has one for an IPP backend:
https://bugs.webkit.org/show_bug.cgi?id=75522

Please see comments in that bug about the layout test which you will want to try as part of validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533547</commentid>
    <comment_count>6</comment_count>
    <who name="Dongwoo Joshua Im (dwim)">dw.im</who>
    <bug_when>2012-01-10 18:09:34 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=121865&amp;action=review

Great job!

Here&apos;s some minor comments.

&gt; Source/WebCore/platform/audio/FFTFrame.h:53
&gt; +#include &lt;gst/fft/gstfft.h&gt;

I guess this looks redundant as &quot;gstfftf32.h&quot; includes &quot;gstfft.h&quot; recursively.

&gt; Source/WebCore/platform/audio/FFTFrameStub.cpp:32
&gt; +#if !OS(DARWIN) &amp;&amp; !USE(WEBAUDIO_MKL) &amp;&amp; !USE(WEBAUDIO_FFMPEG) &amp;&amp; !USE(GSTREAMER)

I think you&apos;d better use &quot;WEBAUDIO&quot; prefix, such as WEBAUDIO_GSTREAMER.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533692</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-11 00:03:23 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Wow, everyone is doing FFTs :) 
&gt; 
&gt; Intel also has one for an IPP backend:
&gt; https://bugs.webkit.org/show_bug.cgi?id=75522
&gt; 
&gt; Please see comments in that bug about the layout test which you will want to try as part of validation.

I actually saw that patch when writing this one :) Haven&apos;t yet checked the test though. Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533699</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-11 00:11:13 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121865&amp;action=review
&gt; 
&gt; Great job!
&gt; 
&gt; Here&apos;s some minor comments.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/FFTFrame.h:53
&gt; &gt; +#include &lt;gst/fft/gstfft.h&gt;
&gt; 
&gt; I guess this looks redundant as &quot;gstfftf32.h&quot; includes &quot;gstfft.h&quot; recursively.
&gt; 

Hum, yes, probably :)

&gt; &gt; Source/WebCore/platform/audio/FFTFrameStub.cpp:32
&gt; &gt; +#if !OS(DARWIN) &amp;&amp; !USE(WEBAUDIO_MKL) &amp;&amp; !USE(WEBAUDIO_FFMPEG) &amp;&amp; !USE(GSTREAMER)
&gt; 
&gt; I think you&apos;d better use &quot;WEBAUDIO&quot; prefix, such as WEBAUDIO_GSTREAMER.

Right, I guess it&apos;d be useful for ports using GStreamer and using a different lib for FFT processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533784</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-11 03:26:52 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Wow, everyone is doing FFTs :) 
&gt; 
&gt; Intel also has one for an IPP backend:
&gt; https://bugs.webkit.org/show_bug.cgi?id=75522
&gt; 
&gt; Please see comments in that bug about the layout test which you will want to try as part of validation.

Hum it doesn&apos;t look good :/


PASS Initial latency of convolver is silent.
PASS Triangular portion of convolution is correct.
FAIL First part of tail of convolution is not sufficiently small: -129.7413645172823 dB
FAIL Test signal was not correctly convolved.
PASS successfullyParsed is true

One question, do I need to apply a function window to the timed data before performing the FFT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534058</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-11 11:27:51 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; Wow, everyone is doing FFTs :) 
&gt; &gt; 
&gt; &gt; Intel also has one for an IPP backend:
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=75522
&gt; &gt; 
&gt; &gt; Please see comments in that bug about the layout test which you will want to try as part of validation.
&gt; 
&gt; Hum it doesn&apos;t look good :/
&gt; 
&gt; 
&gt; PASS Initial latency of convolver is silent.
&gt; PASS Triangular portion of convolution is correct.
&gt; FAIL First part of tail of convolution is not sufficiently small: -129.7413645172823 dB
&gt; FAIL Test signal was not correctly convolved.
&gt; PASS successfullyParsed is true
&gt; 
&gt; One question, do I need to apply a function window to the timed data before performing the FFT?

No, don&apos;t worry about a window.  The FFTConvolver doesn&apos;t want any window applied.

Also, don&apos;t worry about the failing test.  -129 dB is really quite good and we can adjust the threshold to be less stringent so the test passes.  In fact, the IPP FFT is also adjust this threshold in a similar way if you look at that patch:
https://bugs.webkit.org/show_bug.cgi?id=75522

You can feel free to adjust the layout test so that -129.7413645172823 dB passes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536528</commentid>
    <comment_count>11</comment_count>
      <attachid>122627</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-16 06:56:41 -0800</bug_when>
    <thetext>Created attachment 122627
FFTFrameGStreamer implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536620</commentid>
    <comment_count>12</comment_count>
      <attachid>122627</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-16 09:23:09 -0800</bug_when>
    <thetext>Comment on attachment 122627
FFTFrameGStreamer implementation

I forgot to update some Makefiles. Will send a new version soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536928</commentid>
    <comment_count>13</comment_count>
      <attachid>122727</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-17 00:35:19 -0800</bug_when>
    <thetext>Created attachment 122727
FFTFrameGStreamer implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537766</commentid>
    <comment_count>14</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-18 04:03:42 -0800</bug_when>
    <thetext>Hey Sebastian!
Would you mind having a look at this patch? When you find some time, please :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537771</commentid>
    <comment_count>15</comment_count>
      <attachid>122727</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2012-01-18 04:32:25 -0800</bug_when>
    <thetext>Comment on attachment 122727
FFTFrameGStreamer implementation

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

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:29
&gt; +unsigned unpackedFFTDataSize(unsigned fftSize)

Shouldn&apos;t this be static or something to prevent it from being exported?

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:48
&gt; +    ASSERT(1UL &lt;&lt; m_log2FFTSize == m_FFTSize);

GstFFT can handle FFT sizes that are multiples of only 2, 3, 5 fast (e.g. 30 too) but can also handle every other size (but might be slow)

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:52
&gt; +    int fftLength = gst_fft_next_fast_length(m_FFTSize);

This doesn&apos;t make sense, you&apos;re forcing it to a power of two anyway ;) Either remove that assertion or this here.

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:154
&gt; +    for (unsigned i = 0; i &lt; halfSize; i++) {

Hm, aren&apos;t you dropping one value here? It&apos;s n/2 + 1, not n/2.

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:175
&gt; +    const float scaleFactor = 1.0 / (2 * m_FFTSize);

You only have to divide by m_FFTSize IIRC. Or divide by 1/sqrt(m_FFTSize) after both transformations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540455</commentid>
    <comment_count>16</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-23 02:50:10 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 122727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122727&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:29
&gt; &gt; +unsigned unpackedFFTDataSize(unsigned fftSize)
&gt; 
&gt; Shouldn&apos;t this be static or something to prevent it from being exported?
&gt; 

I think it&apos;s fine as it is. The anonymous namespace keeps this function private to this file, I think.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:48
&gt; &gt; +    ASSERT(1UL &lt;&lt; m_log2FFTSize == m_FFTSize);
&gt; 
&gt; GstFFT can handle FFT sizes that are multiples of only 2, 3, 5 fast (e.g. 30 too) but can also handle every other size (but might be slow)
&gt; 

The other 2 FFTFrame implementations I can see in WebKit trunk force a power-of-two size, I think I&apos;ll just remove this ASSERT and keep using gst_fft_next_fast_length :)

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:52
&gt; &gt; +    int fftLength = gst_fft_next_fast_length(m_FFTSize);
&gt; 
&gt; This doesn&apos;t make sense, you&apos;re forcing it to a power of two anyway ;) Either remove that assertion or this here.
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:154
&gt; &gt; +    for (unsigned i = 0; i &lt; halfSize; i++) {
&gt; 
&gt; Hm, aren&apos;t you dropping one value here? It&apos;s n/2 + 1, not n/2.
&gt; 

I think it&apos;s n/2, it&apos;s the size of the m_realData and m_imagData arrays.

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:175
&gt; &gt; +    const float scaleFactor = 1.0 / (2 * m_FFTSize);
&gt; 
&gt; You only have to divide by m_FFTSize IIRC. Or divide by 1/sqrt(m_FFTSize) after both transformations.

Ah Ok, I think I just did like in another FFTFrame implementation ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540459</commentid>
    <comment_count>17</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2012-01-23 03:11:19 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 122727 [details] [details])

&gt; &gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:154
&gt; &gt; &gt; +    for (unsigned i = 0; i &lt; halfSize; i++) {
&gt; &gt; 
&gt; &gt; Hm, aren&apos;t you dropping one value here? It&apos;s n/2 + 1, not n/2.
&gt; &gt; 
&gt; 
&gt; I think it&apos;s n/2, it&apos;s the size of the m_realData and m_imagData arrays.

Where is the remaining one real and one imaginary value then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540484</commentid>
    <comment_count>18</comment_count>
      <attachid>123540</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-23 04:33:56 -0800</bug_when>
    <thetext>Created attachment 123540
GstFFTFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542286</commentid>
    <comment_count>19</comment_count>
      <attachid>123540</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 08:16:06 -0800</bug_when>
    <thetext>Comment on attachment 123540
GstFFTFrame

Will send a new version replacing g_new with fastNewArray calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542332</commentid>
    <comment_count>20</comment_count>
      <attachid>123952</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 09:11:20 -0800</bug_when>
    <thetext>Created attachment 123952
GstFFTFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542334</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 09:12:10 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=123952) [details]
&gt; GstFFTFrame

Hi Chris, can you please review this patch when you get time? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542336</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 09:13:49 -0800</bug_when>
    <thetext>Attachment 123952 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;LayoutTests/ChangeLog&apos;, u&apos;La...&quot; exit_code: 1

Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:25:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 1 in 12 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>542378</commentid>
    <comment_count>23</comment_count>
      <attachid>123962</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-25 09:48:42 -0800</bug_when>
    <thetext>Created attachment 123962
GstFFTFrame

Making style-bot happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542528</commentid>
    <comment_count>24</comment_count>
      <attachid>123962</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-25 12:22:29 -0800</bug_when>
    <thetext>Comment on attachment 123962
GstFFTFrame

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

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:47
&gt; +    m_complexData = WTF::fastNewArray&lt;GstFFTF32Complex&gt;(unpackedFFTDataSize(m_FFTSize));

It seems odd to use fastNewArray for the allocation.  I don&apos;t know if it&apos;s &quot;wrong&quot; or not, but FFTFrameFFMPEG and FFTFrameMKL simply use an AudioFloatArray

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:123
&gt; +    for (size_t i = 0; i &lt; unpackedFFTDataSize(m_FFTSize); ++i) {

Thanks to Intel, you should be able to optimize this loop using the new VectorMath::zvmul()  and VectorMath::vsmul() functions.  You can look at FFTFrameMac and FFTFrameFFMPEG as an example

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:145
&gt; +    for (size_t i = 0; i &lt; unpackedFFTDataSize(m_FFTSize); ++i) {

I think you could use VectorMath::vsmul() here

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:166
&gt; +    for (unsigned i = 0; i &lt; m_FFTSize; ++i)

could use VectorMath::vsmul() here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542951</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-26 01:19:45 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 123962 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123962&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:47
&gt; &gt; +    m_complexData = WTF::fastNewArray&lt;GstFFTF32Complex&gt;(unpackedFFTDataSize(m_FFTSize));
&gt; 
&gt; It seems odd to use fastNewArray for the allocation.  I don&apos;t know if it&apos;s &quot;wrong&quot; or not, but FFTFrameFFMPEG and FFTFrameMKL simply use an AudioFloatArray
&gt; 

Well the GstFFT API stores the complex data in GstFFTF32Complex structures. Not sure I can do anything about that :)

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:123
&gt; &gt; +    for (size_t i = 0; i &lt; unpackedFFTDataSize(m_FFTSize); ++i) {
&gt; 
&gt; Thanks to Intel, you should be able to optimize this loop using the new VectorMath::zvmul()  and VectorMath::vsmul() functions.  You can look at FFTFrameMac and FFTFrameFFMPEG as an example
&gt; 

Oh, nice!

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:145
&gt; &gt; +    for (size_t i = 0; i &lt; unpackedFFTDataSize(m_FFTSize); ++i) {
&gt; 
&gt; I think you could use VectorMath::vsmul() here
&gt; 

Hum, really? How can I trick it to access the .i and .r fields of GstFFTF32Complex?

&gt; &gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:166
&gt; &gt; +    for (unsigned i = 0; i &lt; m_FFTSize; ++i)
&gt; 
&gt; could use VectorMath::vsmul() here

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543000</commentid>
    <comment_count>26</comment_count>
      <attachid>124088</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-26 02:51:22 -0800</bug_when>
    <thetext>Created attachment 124088
GstFFTFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543201</commentid>
    <comment_count>27</comment_count>
      <attachid>124088</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-26 09:26:52 -0800</bug_when>
    <thetext>Comment on attachment 124088
GstFFTFrame

Attachment 124088 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11191386</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543378</commentid>
    <comment_count>28</comment_count>
      <attachid>124088</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-01-26 12:23:44 -0800</bug_when>
    <thetext>Comment on attachment 124088
GstFFTFrame

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

Philippe, the FFTFrame part looks good overall.  I added one comment there.  It&apos;s very encouraging that your code is passing the convolution layout test (with your slight threshold change).  That test really puts your code to work!

&gt; Source/WebCore/platform/audio/gstreamer/FFTFrameGStreamer.cpp:151
&gt; +    VectorMath::vsmul(processedRealData.data(), 1, &amp;scaleFactor, realData, 1, size);

For lines 143:151 I&apos;d recommend either reverting back to your previous approach (not using VectorMath::vsmul()) or calling VectorMath::vsmul() DIRECTLY on m_complexData,
since effectively it&apos;s a floating point vector (with alternating REAL/IMAG values).  To operate directly on m_complexData you&apos;d have to use a static_cast&lt;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545902</commentid>
    <comment_count>29</comment_count>
      <attachid>124698</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-31 03:17:20 -0800</bug_when>
    <thetext>Created attachment 124698
GstFFTFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545903</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 03:18:41 -0800</bug_when>
    <thetext>Attachment 124698 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546992</commentid>
    <comment_count>31</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 04:08:59 -0800</bug_when>
    <thetext>Chris, you&apos;re officially a reviewer now, no? An official review of this patch would be very welcome! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547181</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-01 10:29:13 -0800</bug_when>
    <thetext>Hi Philippe, I&apos;m not sure if my reviewer status has yet changed yet, since I haven&apos;t heard any official word.  But I can check...  Do you know what the &quot;style&quot; problem with the latest patch is?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547185</commentid>
    <comment_count>33</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 10:31:12 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Hi Philippe, I&apos;m not sure if my reviewer status has yet changed yet, since I haven&apos;t heard any official word.  But I can check...  Do you know what the &quot;style&quot; problem with the latest patch is?

The style bot got crippled yesterday. I can attach a new patch just to make sure it&apos;s coding style is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547250</commentid>
    <comment_count>34</comment_count>
      <attachid>124981</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-01 11:52:06 -0800</bug_when>
    <thetext>Created attachment 124981
FFTFrame

Same one as before but to go through now-sane style-bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547698</commentid>
    <comment_count>35</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 00:04:50 -0800</bug_when>
    <thetext>Committed r106537: &lt;http://trac.webkit.org/changeset/106537&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121863</attachid>
            <date>2012-01-10 10:17:17 -0800</date>
            <delta_ts>2012-01-10 10:26:25 -0800</delta_ts>
            <desc>FFTFrameGStreamer implementation</desc>
            <filename>FFTFrameGStreamer-implementation.patch</filename>
            <type>text/plain</type>
            <size>13469</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3MmFmNzMzNGVlMzIxYTcyOTNlMDRiZTJlNjkwN2M3MGI4ZjVhNmExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDI5IE5vdiAyMDExIDE4OjQxOjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RkZURnJhbWVHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24KCi0tLQogQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysKIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTggKysK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAg
NCArLQogLi4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAg
fCAgMjE4ICsrKysrKysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjgxIGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggODRlNTRlNS4uODNlM2FjNiAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEyLTAxLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogRW5hYmxlIHRo
ZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4uCisKIDIwMTItMDEtMDQgIEpvbiBMZWUgIDxqb25sZWVA
YXBwbGUuY29tPgogCiAgICAgICAgIENsaWNraW5nIG9uIHRoZSBjYW5jZWwgYnV0dG9uIG9uIHJl
YWRvbmx5IGFuZCBkaXNhYmxlZCBzZWFyY2ggZmllbGRzIGRhcmtlbnMgYXMgaWYgdGhlIHNlYXJj
aCBmaWVsZCB3YXMgZWRpdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGE5ZTY3Li45OTM0MmQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMTAgIFBoaWxpcHBlIE5vcm1hbmQgIDxw
bm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1lIGltcGxl
bWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEZGVEZyYW1lIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEdTdHJlYW1lcidzIEZGVCBwcm9jZXNz
aW5nCisgICAgICAgIGxpYnJhcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyBX
ZWJBdWRpbyB0ZXN0cyBjb3ZlciB0aGlzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpG
RlRGcmFtZTo6RkZURnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNsZWFudXApOgorICAgICAgICAoV2Vi
Q29yZTo6RkZURnJhbWU6On5GRlRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6
bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAg
KFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ludmVyc2VGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZU
RnJhbWU6OmdldFVwVG9EYXRlQ29tcGxleERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJh
bWU6OnJlYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjppbWFnRGF0YSk6CisK
IDIwMTItMDEtMDkgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4K
IAogICAgICAgICBbVGV4bWFwXSBNb3ZlIHN1cmZhY2UgbWFuYWdlbWVudCBmcm9tIFRleHR1cmVN
YXBwZXJOb2RlIHRvIFRleHR1cmVNYXBwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDZkN2VhMjEuLjlhMThlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
NTM1Miw2ICs1MzUyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9B
dWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVk
aW9Tb3VyY2VHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3Rr
L0F1ZGlvQnVzR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgK
aW5kZXggYjI1ZDI3OS4uYTQyZmJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5oCkBAIC00Nyw2ICs0NywxNCBAQAogI2luY2x1ZGUgIm1rbF9kZnRpLmgiCiAjZW5k
aWYgLy8gVVNFKFdFQkFVRElPX01LTCkKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5jbHVkZSA8
Z2xpYi5oPgorR19CRUdJTl9ERUNMUworI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0Lmg+CisjaW5j
bHVkZSA8Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KK0dfRU5EX0RFQ0xTCisjZW5kaWYgLy8gVVNFKEdT
VFJFQU1FUikKKwogI2lmIFVTRShXRUJBVURJT19GRk1QRUcpCiBzdHJ1Y3QgUkRGVENvbnRleHQ7
CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKQEAgLTE0Niw2ICsxNTQsMTYgQEAgcHJp
dmF0ZToKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VC
QVVESU9fRkZNUEVHKQogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBHc3RGRlRGMzIqIG1fZmZ0
OworICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OworICAgIEdzdEZGVEYzMkNvbXBsZXgqIG1f
Zm9yd2FyZFBsYW47CisgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CisgICAgQXVkaW9G
bG9hdEFycmF5IG1faW1hZ0RhdGE7CisKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBnZXRVcFRvRGF0
ZUNvbXBsZXhEYXRhKCk7CisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKKwogI2VuZGlmIC8vICFV
U0VfQUNDRUxFUkFURV9GRlQKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9GRlRGcmFtZVN0dWIuY3BwCmluZGV4IGRmYzUyYTIuLjhjMDhkYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcApAQCAtMjksNyArMjksNyBA
QAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAotI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VC
QVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElPX0ZGTVBFRykKKyNpZiAhT1MoREFSV0lOKSAmJiAh
VVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19GRk1QRUcpICYmICFVU0UoR1NUUkVB
TUVSKQogCiAjaW5jbHVkZSAiRkZURnJhbWUuaCIKIApAQCAtMTAyLDYgKzEwMiw2IEBAIGZsb2F0
KiBGRlRGcmFtZTo6aW1hZ0RhdGEoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkKKyNlbmRpZiAvLyAh
T1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShHU1RSRUFNRVIpCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzZThkYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1l
ci5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxp
YSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKy8vIEZGVEZyYW1lIGltcGxl
bWVudGF0aW9uIHVzaW5nIHRoZSBHU3RyZWFtZXIgRkZUIGxpYnJhcnkuCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJGRlRGcmFtZS5o
IgorCituYW1lc3BhY2UgeworCit1bnNpZ25lZCB1bnBhY2tlZEZGVERhdGFTaXplKHVuc2lnbmVk
IGZmdFNpemUpCit7CisgICAgcmV0dXJuIGZmdFNpemUgLyAyICsgMTsKK30KKworfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTm9ybWFsIGNvbnN0
cnVjdG9yOiBhbGxvY2F0ZXMgZm9yIGEgZ2l2ZW4gZmZ0U2l6ZS4KK0ZGVEZyYW1lOjpGRlRGcmFt
ZSh1bnNpZ25lZCBmZnRTaXplKQorICAgIDogbV9GRlRTaXplKGZmdFNpemUpCisgICAgLCBtX2xv
ZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGZmdFNpemUpKSkKKyAgICAsIG1f
ZmZ0KDApCisgICAgLCBtX2ZvcndhcmRQbGFuKDApCisgICAgLCBtX3JlYWxEYXRhKGZmdFNpemUg
LyAyKQorICAgICwgbV9pbWFnRGF0YShmZnRTaXplIC8gMikKK3sKKyAgICAvLyBXZSBvbmx5IGFs
bG93IHBvd2VyIG9mIHR3by4KKyAgICBBU1NFUlQoMVVMIDw8IG1fbG9nMkZGVFNpemUgPT0gbV9G
RlRTaXplKTsKKworICAgIG1fZm9yd2FyZFBsYW4gPSBnX25ldyhHc3RGRlRGMzJDb21wbGV4LCB1
bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworCisgICAgaW50IGZmdExlbmd0aCA9IGdz
dF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOworICAgIG1fZmZ0ID0gZ3N0X2ZmdF9m
MzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52ZXJzZUZmdCA9IGdzdF9mZnRfZjMy
X25ldyhmZnRMZW5ndGgsIFRSVUUpOworCit9CisKKy8vIENyZWF0ZXMgYSBibGFuay9lbXB0eSBm
cmFtZSAoaW50ZXJwb2xhdGUoKSBtdXN0IGxhdGVyIGJlIGNhbGxlZCkuCitGRlRGcmFtZTo6RkZU
RnJhbWUoKQorICAgIDogbV9GRlRTaXplKDApCisgICAgLCBtX2xvZzJGRlRTaXplKDApCisgICAg
LCBtX2ZvcndhcmRQbGFuKDApCit7CisgICAgbV9mb3J3YXJkUGxhbiA9IGdfbmV3KEdzdEZGVEYz
MkNvbXBsZXgsIHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7CisKKyAgICBpbnQgZmZ0
TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9mZnQg
PSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0ID0g
Z3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7Cit9CisKKy8vIENvcHkgY29uc3RydWN0
b3IuCitGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQorICAgIDogbV9G
RlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cy
RkZUU2l6ZSkKKyAgICAsIG1fZm9yd2FyZFBsYW4oMCkKKyAgICAsIG1fcmVhbERhdGEoZnJhbWUu
bV9GRlRTaXplIC8gMikKKyAgICAsIG1faW1hZ0RhdGEoZnJhbWUubV9GRlRTaXplIC8gMikKK3sK
KyAgICBtX2ZvcndhcmRQbGFuID0gZ19uZXcoR3N0RkZURjMyQ29tcGxleCwgdW5wYWNrZWRGRlRE
YXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIC8vIENvcHkvc2V0dXAgZnJhbWUgZGF0YS4KKyAg
ICB1bnNpZ25lZCBuYnl0ZXMgPSBzaXplb2YoZmxvYXQpICogbV9GRlRTaXplOworICAgIG1lbWNw
eShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0YSgpLCBuYnl0ZXMpOworICAgIG1lbWNweShpbWFn
RGF0YSgpLCBmcmFtZS5pbWFnRGF0YSgpLCBuYnl0ZXMpOworfQorCit2b2lkIEZGVEZyYW1lOjpp
bml0aWFsaXplKCkKK3sKK30KKwordm9pZCBGRlRGcmFtZTo6Y2xlYW51cCgpCit7Cit9CisKK0ZG
VEZyYW1lOjp+RkZURnJhbWUoKQoreworICAgIGlmICghbV9mZnQpCisgICAgICAgIHJldHVybjsK
KworICAgIGdzdF9mZnRfZjMyX2ZyZWUobV9mZnQpOworICAgIG1fZmZ0ID0gMDsKKworICAgIGdz
dF9mZnRfZjMyX2ZyZWUobV9pbnZlcnNlRmZ0KTsKKyAgICBtX2ludmVyc2VGZnQgPSAwOworCisg
ICAgZ19mcmVlKG1fZm9yd2FyZFBsYW4pOworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0aXBseShj
b25zdCBGRlRGcmFtZSYgZnJhbWUpCit7CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0aGlzOwor
ICAgIEZGVEZyYW1lJiBmcmFtZTIgPSBjb25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUpOworCisg
ICAgZmxvYXQqIHJlYWxQMSA9IGZyYW1lMS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBpbWFnUDEg
PSBmcmFtZTEuaW1hZ0RhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUyLnJl
YWxEYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0YSgpOwor
CisgICAgLy8gU2NhbGUgYWNjb3VudHMgdGhlIHBlY3VsaWFyIHNjYWxpbmcgb2YgdmVjTGliIG9u
IHRoZSBNYWMuCisgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSByaWdodCBzY2FsaW5nIGFsbCB0aGUg
d2F5IGJhY2sgdG8gaW52ZXJzZSBGRlQuCisgICAgLy8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUg
c2NhbGluZyBvbiB0aGUgTWFjIHRoZW4gdGhpcyBzY2FsZQorICAgIC8vIGZhY3RvciB3aWxsIG5l
ZWQgdG8gY2hhbmdlIHRvby4KKyAgICBmbG9hdCBzY2FsZSA9IDAuNWY7CisKKyAgICAvLyBNdWx0
aXBseSB0aGUgcGFja2VkIERDL255cXVpc3QgY29tcG9uZW50CisgICAgcmVhbFAxWzBdICo9IHNj
YWxlICogcmVhbFAyWzBdOworICAgIGltYWdQMVswXSAqPSBzY2FsZSAqIGltYWdQMlswXTsKKwor
ICAgIC8vIENvbXBsZXggbXVsdGlwbGljYXRpb24uIElmIHRoaXMgbG9vcCB0dXJucyBvdXQgdG8g
YmUgaG90IHRoZW4KKyAgICAvLyB3ZSBzaG91bGQgdXNlIFNTRSBvciBvdGhlciBpbnRyaW5zaWNz
IHRvIGFjY2VsZXJhdGUgaXQuCisgICAgdW5zaWduZWQgaGFsZlNpemUgPSBmZnRTaXplKCkgLyAy
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGhhbGZTaXplOyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGltYWdQMVtpXSAq
IGltYWdQMltpXTsKKyAgICAgICAgZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtpXSAqIGltYWdQ
MltpXSArIGltYWdQMVtpXSAqIHJlYWxQMltpXTsKKworICAgICAgICByZWFsUDFbaV0gPSBzY2Fs
ZSAqIHJlYWxSZXN1bHQ7CisgICAgICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1hZ1Jlc3VsdDsK
KyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQoreworICAgIGdz
dF9mZnRfZjMyX2ZmdChtX2ZmdCwgZGF0YSwgbV9mb3J3YXJkUGxhbik7CisKKyAgICAvLyBTY2Fs
ZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidzIHNjYWxlIGZhY3Rv
cgorICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIGRlZmluaXRpb24g
b2YgRkZURnJhbWUgdG8KKyAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBmYWN0b3IgdGhlbiB0
aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KKyAgICAvLyBBbHNvLCBpZiB0aGlzIGxvb3Ag
dHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NFCisgICAgLy8gb3Igb3Ro
ZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
MjsKKworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworICAgIGZsb2F0
KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHVu
cGFja2VkRkZURGF0YVNpemUoZmZ0U2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2ZvcndhcmRQbGFuW2ld
LmkgKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgcmVhbERhdGFbaV0gPSBtX2ZvcndhcmRQbGFuW2ld
LnIgKiBzY2FsZUZhY3RvcjsKKyAgICB9CisKKyAgICAvLyBNb3ZlIHRoZSBOeXF1aXN0IGNvbXBv
bmVudCB0byB0aGUgbG9jYXRpb24gZXhwZWN0ZWQgYnkgdGhlCisgICAgLy8gRkZURnJhbWUgQVBJ
LgorICAgIGltYWdEYXRhWzBdID0gcmVhbERhdGFbbGVuZ3RoIC0gMV07Cit9CisKK3ZvaWQgRkZU
RnJhbWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKK3sKKyAgICBHc3RGRlRGMzJDb21wbGV4
KiBwbGFuID0gZ2V0VXBUb0RhdGVDb21wbGV4RGF0YSgpOworICAgIGdzdF9mZnRfZjMyX2ludmVy
c2VfZmZ0KG1faW52ZXJzZUZmdCwgcGxhbiwgZGF0YSk7CisgICAgZ19mcmVlKHBsYW4pOworCisg
ICAgLy8gU2NhbGUgc28gdGhhdCBhIGZvcndhcmQgdGhlbiBpbnZlcnNlIEZGVCB5aWVsZHMgZXhh
Y3RseSB0aGUgb3JpZ2luYWwgZGF0YS4KKyAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEu
MCAvICgyICogZmZ0U2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmZ0U2l6
ZSgpOyArK2kpCisgICAgICAgIGRhdGFbaV0gKj0gc2NhbGVGYWN0b3I7CisKKyAgICAvLyBNb3Zl
IHRoZSBOeXF1aXN0IGNvbXBvbmVudCBiYWNrIHRvIHRoZSBsb2NhdGlvbiBleHBlY3RlZCBieSB0
aGUKKyAgICAvLyBGRlRGcmFtZSBBUEkuCisgICAgZmxvYXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0
YS5kYXRhKCk7CisgICAgZmxvYXQqIGltYWdEYXRhID0gbV9pbWFnRGF0YS5kYXRhKCk7CisgICAg
dW5zaWduZWQgbGVuZ3RoID0gdW5wYWNrZWRGRlREYXRhU2l6ZShmZnRTaXplKCkpOworICAgIGlt
YWdEYXRhWzBdID0gcmVhbERhdGFbbGVuZ3RoIC0gMV07Cit9CisKK0dzdEZGVEYzMkNvbXBsZXgq
IEZGVEZyYW1lOjpnZXRVcFRvRGF0ZUNvbXBsZXhEYXRhKCkKK3sKKyAgICAvLyBNZXJnZSB0aGUg
cmVhbCBhbmQgaW1hZ2ltYXJ5IHZlY3RvcnMgdG8gY29tcGxleCB2ZWN0b3IuCisgICAgZmxvYXQq
IHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7CisgICAgZmxvYXQqIGltYWdEYXRhID0gbV9p
bWFnRGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdW5wYWNrZWRGRlREYXRhU2l6
ZShmZnRTaXplKCkpOworCisgICAgLy8gTW92ZSB0aGUgTnlxdWlzdCBjb21wb25lbnQgdG8gdGhl
IGxvY2F0aW9uIGV4cGVjdGVkIGJ5IEZGVFcuCisgICAgcmVhbERhdGFbbGVuZ3RoIC0gMV0gPSBp
bWFnRGF0YVswXTsKKyAgICBpbWFnRGF0YVtsZW5ndGggLSAxXSA9IDA7CisgICAgaW1hZ0RhdGFb
MF0gPSAwOworCisgICAgdW5zaWduZWQgc2l6ZSA9IHVucGFja2VkRkZURGF0YVNpemUobV9GRlRT
aXplKTsKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBwbGFuID0gZ19uZXcoR3N0RkZURjMyQ29tcGxl
eCwgc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAg
ICAgICBwbGFuW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgcGxhbltpXS5yID0gcmVhbERh
dGFbaV07CisgICAgfQorICAgIHJldHVybiBwbGFuOworfQorCitmbG9hdCogRkZURnJhbWU6OnJl
YWxEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERh
dGEuZGF0YSgpKTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYg
LS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYzZkOTFjZC4uNGM0ZDMy
YiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNzQzLDcg
Kzc0MywxMSBAQCBBQ19BUkdfRU5BQkxFKHdlYl9zb2NrZXRzLAogQUNfTVNHX1JFU1VMVChbJGVu
YWJsZV93ZWJfc29ja2V0c10pCiAKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgV2ViIEF1ZGlv
IHN1cHBvcnQKLWVuYWJsZV93ZWJfYXVkaW89bm8KK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0
byBlbmFibGUgV2ViIEF1ZGlvIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRSh3ZWJfYXVkaW8sCisg
ICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS13ZWItYXVkaW9dLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHN1cHBvcnQgZm9yIFdlYiBBdWRpbyBbZGVm
YXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV93ZWJfYXVkaW89Im5vIl0pCiBB
Q19NU0dfUkVTVUxUKFskZW5hYmxlX3dlYl9hdWRpb10pCiAKICMgY2hlY2sgd2hldGhlciB0byBl
bmFibGUgV2ViIFRpbWluZyBzdXBwb3J0CkBAIC0xMDI0LDYgKzEwMjgsNyBAQCBpZiB0ZXN0ICIk
ZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMi
OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdTVFJFQU1F
Ul9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXBwLTAu
MTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hdWRpby0wLjEwCisgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItZmZ0LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1iYXNlLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRlcmZhY2Vz
LTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAKQEAgLTEw
MzUsMTcgKzEwNDAsNiBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8IHRlc3Qg
IiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbR1NUUkVBTUVS
X0xJQlNdKQogZmkKIAotIyBjaGVjayBpZiBsaWJmZnR3IGlzIGF2YWlsYWJsZQotaWYgdGVzdCAi
JGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KLSAgIFBLR19DSEVDS19NT0RVTEVTKFtM
SUJGRlRXXSwKLSAgICAgICAgICAgICAgICAgICAgIFtmZnR3MyA+PSAkTElCRkZUV19SRVFVSVJF
RF9WRVJTSU9OCi0gICAgICAgICAgICAgICAgICAgICBmZnR3M2YgPj0gJExJQkZGVFdfUkVRVUlS
RURfVkVSU0lPTl0sCi0gICAgICAgICAgICAgICAgICAgICBbaGF2ZV9mZnR3PXllc10pCi0KLSAg
ICBBQ19TVUJTVChbTElCRkZUV19DRkxBR1NdKQotICAgIEFDX1NVQlNUKFtMSUJGRlRXX0xJQlNd
KQotZmkKLQogaWYgdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gImNsdXR0
ZXIiOyB0aGVuCiAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhDTFVUVEVSLCBjbHV0dGVyLTEuMCA+PSAk
Q0xVVFRFUl9SRVFVSVJFRF9WRVJTSU9OKQogICAgUEtHX0NIRUNLX01PRFVMRVMoW0NMVVRURVJf
R1RLXSwKLS0gCjEuNy44LjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121865</attachid>
            <date>2012-01-10 10:26:25 -0800</date>
            <delta_ts>2012-01-16 06:56:41 -0800</delta_ts>
            <desc>FFTFrameGStreamer implementation</desc>
            <filename>FFTFrameGStreamer-implementation.patch</filename>
            <type>text/plain</type>
            <size>13352</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0NmEyMWFiN2ExZWM0ZGU5Mzk0ZGQxYjAxOTE5ZTNhYjA0NGQ5ZmUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDI5IE5vdiAyMDExIDE4OjQxOjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RkZURnJhbWVHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24KCi0tLQogQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysKIFNvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTggKysK
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAg
NCArLQogLi4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAg
fCAgMjE4ICsrKysrKysrKysrKysrKysrKysrCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjgxIGlu
c2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMThmNDUwMS4uZTFmYTE4NCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEyLTAxLTEwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzogRW5hYmxlIHRo
ZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4uCisKIDIwMTItMDEtMDkgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFtBQ10gU2ltcGxpZnkgYWNj
ZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnVpbGQgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQzNTlmNjUu
LjM0MWJkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0xMCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0g
RkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRkZURnJhbWUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gR1N0cmVhbWVy
J3MgRkZUIHByb2Nlc3NpbmcKKyAgICAgICAgbGlicmFyeS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGV4aXN0aW5nIFdlYkF1ZGlvIHRlc3RzIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRG
cmFtZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6Y2xlYW51cCk6
CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6fkZGVEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZGVEZyYW1lOjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9G
RlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvSW52ZXJzZUZGVCk6CisgICAgICAg
IChXZWJDb3JlOjpGRlRGcmFtZTo6Z2V0VXBUb0RhdGVDb21wbGV4RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGRlRGcmFtZTo6cmVhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6
OmltYWdEYXRhKToKKwogMjAxMi0wMS0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkzMjg2ODQ+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDY0ODY4OTcuLjJmOTMxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNTM1Niw2ICs1MzU2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmgKaW5kZXggYjI1ZDI3OS4uYTQyZmJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZS5oCkBAIC00Nyw2ICs0NywxNCBAQAogI2luY2x1ZGUgIm1rbF9kZnRpLmgi
CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX01LTCkKIAorI2lmIFVTRShHU1RSRUFNRVIpCisjaW5j
bHVkZSA8Z2xpYi5oPgorR19CRUdJTl9ERUNMUworI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0Lmg+
CisjaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KK0dfRU5EX0RFQ0xTCisjZW5kaWYgLy8g
VVNFKEdTVFJFQU1FUikKKwogI2lmIFVTRShXRUJBVURJT19GRk1QRUcpCiBzdHJ1Y3QgUkRGVENv
bnRleHQ7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKQEAgLTE0Niw2ICsxNTQsMTYg
QEAgcHJpdmF0ZToKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBV
U0UoV0VCQVVESU9fRkZNUEVHKQogCisjaWYgVVNFKEdTVFJFQU1FUikKKyAgICBHc3RGRlRGMzIq
IG1fZmZ0OworICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OworICAgIEdzdEZGVEYzMkNvbXBs
ZXgqIG1fZm9yd2FyZFBsYW47CisgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CisgICAg
QXVkaW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CisKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBnZXRV
cFRvRGF0ZUNvbXBsZXhEYXRhKCk7CisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKKwogI2VuZGlm
IC8vICFVU0VfQUNDRUxFUkFURV9GRlQKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCmluZGV4IGRmYzUyYTIuLjhjMDhkYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcApAQCAtMjksNyAr
MjksNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKIAotI2lmICFPUyhEQVJXSU4pICYmICFV
U0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElPX0ZGTVBFRykKKyNpZiAhT1MoREFSV0lO
KSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19GRk1QRUcpICYmICFVU0Uo
R1NUUkVBTUVSKQogCiAjaW5jbHVkZSAiRkZURnJhbWUuaCIKIApAQCAtMTAyLDYgKzEwMiw2IEBA
IGZsb2F0KiBGRlRGcmFtZTo6aW1hZ0RhdGEoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKLSNlbmRpZiAvLyAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkKKyNlbmRp
ZiAvLyAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShHU1RSRUFNRVIp
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzZThkYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdT
dHJlYW1lci5jcHAKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEx
IElnYWxpYSBTLkwKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKy8vIEZGVEZyYW1l
IGltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBHU3RyZWFtZXIgRkZUIGxpYnJhcnkuCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfQVVESU8pCisKKyNpbmNsdWRlICJGRlRG
cmFtZS5oIgorCituYW1lc3BhY2UgeworCit1bnNpZ25lZCB1bnBhY2tlZEZGVERhdGFTaXplKHVu
c2lnbmVkIGZmdFNpemUpCit7CisgICAgcmV0dXJuIGZmdFNpemUgLyAyICsgMTsKK30KKworfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTm9ybWFs
IGNvbnN0cnVjdG9yOiBhbGxvY2F0ZXMgZm9yIGEgZ2l2ZW4gZmZ0U2l6ZS4KK0ZGVEZyYW1lOjpG
RlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQorICAgIDogbV9GRlRTaXplKGZmdFNpemUpCisgICAg
LCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGZmdFNpemUpKSkKKyAg
ICAsIG1fZmZ0KDApCisgICAgLCBtX2ZvcndhcmRQbGFuKDApCisgICAgLCBtX3JlYWxEYXRhKGZm
dFNpemUgLyAyKQorICAgICwgbV9pbWFnRGF0YShmZnRTaXplIC8gMikKK3sKKyAgICAvLyBXZSBv
bmx5IGFsbG93IHBvd2VyIG9mIHR3by4KKyAgICBBU1NFUlQoMVVMIDw8IG1fbG9nMkZGVFNpemUg
PT0gbV9GRlRTaXplKTsKKworICAgIG1fZm9yd2FyZFBsYW4gPSBnX25ldyhHc3RGRlRGMzJDb21w
bGV4LCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworCisgICAgaW50IGZmdExlbmd0
aCA9IGdzdF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOworICAgIG1fZmZ0ID0gZ3N0
X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52ZXJzZUZmdCA9IGdzdF9m
ZnRfZjMyX25ldyhmZnRMZW5ndGgsIFRSVUUpOworCit9CisKKy8vIENyZWF0ZXMgYSBibGFuay9l
bXB0eSBmcmFtZSAoaW50ZXJwb2xhdGUoKSBtdXN0IGxhdGVyIGJlIGNhbGxlZCkuCitGRlRGcmFt
ZTo6RkZURnJhbWUoKQorICAgIDogbV9GRlRTaXplKDApCisgICAgLCBtX2xvZzJGRlRTaXplKDAp
CisgICAgLCBtX2ZvcndhcmRQbGFuKDApCit7CisgICAgbV9mb3J3YXJkUGxhbiA9IGdfbmV3KEdz
dEZGVEYzMkNvbXBsZXgsIHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7CisKKyAgICBp
bnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAg
bV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNl
RmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7Cit9CisKKy8vIENvcHkgY29u
c3RydWN0b3IuCitGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQorICAg
IDogbV9GRlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUu
bV9sb2cyRkZUU2l6ZSkKKyAgICAsIG1fZm9yd2FyZFBsYW4oMCkKKyAgICAsIG1fcmVhbERhdGEo
ZnJhbWUubV9GRlRTaXplIC8gMikKKyAgICAsIG1faW1hZ0RhdGEoZnJhbWUubV9GRlRTaXplIC8g
MikKK3sKKyAgICBtX2ZvcndhcmRQbGFuID0gZ19uZXcoR3N0RkZURjMyQ29tcGxleCwgdW5wYWNr
ZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIC8vIENvcHkvc2V0dXAgZnJhbWUgZGF0
YS4KKyAgICB1bnNpZ25lZCBuYnl0ZXMgPSBzaXplb2YoZmxvYXQpICogbV9GRlRTaXplOworICAg
IG1lbWNweShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0YSgpLCBuYnl0ZXMpOworICAgIG1lbWNw
eShpbWFnRGF0YSgpLCBmcmFtZS5pbWFnRGF0YSgpLCBuYnl0ZXMpOworfQorCit2b2lkIEZGVEZy
YW1lOjppbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBGRlRGcmFtZTo6Y2xlYW51cCgpCit7Cit9
CisKK0ZGVEZyYW1lOjp+RkZURnJhbWUoKQoreworICAgIGlmICghbV9mZnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGdzdF9mZnRfZjMyX2ZyZWUobV9mZnQpOworICAgIG1fZmZ0ID0gMDsKKwor
ICAgIGdzdF9mZnRfZjMyX2ZyZWUobV9pbnZlcnNlRmZ0KTsKKyAgICBtX2ludmVyc2VGZnQgPSAw
OworCisgICAgZ19mcmVlKG1fZm9yd2FyZFBsYW4pOworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0
aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCit7CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0
aGlzOworICAgIEZGVEZyYW1lJiBmcmFtZTIgPSBjb25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUp
OworCisgICAgZmxvYXQqIHJlYWxQMSA9IGZyYW1lMS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBp
bWFnUDEgPSBmcmFtZTEuaW1hZ0RhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJh
bWUyLnJlYWxEYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0
YSgpOworCisgICAgLy8gU2NhbGUgYWNjb3VudHMgdGhlIHBlY3VsaWFyIHNjYWxpbmcgb2YgdmVj
TGliIG9uIHRoZSBNYWMuCisgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSByaWdodCBzY2FsaW5nIGFs
bCB0aGUgd2F5IGJhY2sgdG8gaW52ZXJzZSBGRlQuCisgICAgLy8gRklYTUU6IGlmIHdlIGNoYW5n
ZSB0aGUgc2NhbGluZyBvbiB0aGUgTWFjIHRoZW4gdGhpcyBzY2FsZQorICAgIC8vIGZhY3RvciB3
aWxsIG5lZWQgdG8gY2hhbmdlIHRvby4KKyAgICBmbG9hdCBzY2FsZSA9IDAuNWY7CisKKyAgICAv
LyBNdWx0aXBseSB0aGUgcGFja2VkIERDL255cXVpc3QgY29tcG9uZW50CisgICAgcmVhbFAxWzBd
ICo9IHNjYWxlICogcmVhbFAyWzBdOworICAgIGltYWdQMVswXSAqPSBzY2FsZSAqIGltYWdQMlsw
XTsKKworICAgIC8vIENvbXBsZXggbXVsdGlwbGljYXRpb24uIElmIHRoaXMgbG9vcCB0dXJucyBv
dXQgdG8gYmUgaG90IHRoZW4KKyAgICAvLyB3ZSBzaG91bGQgdXNlIFNTRSBvciBvdGhlciBpbnRy
aW5zaWNzIHRvIGFjY2VsZXJhdGUgaXQuCisgICAgdW5zaWduZWQgaGFsZlNpemUgPSBmZnRTaXpl
KCkgLyAyOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGhhbGZTaXplOyArK2kpIHsK
KyAgICAgICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGltYWdQ
MVtpXSAqIGltYWdQMltpXTsKKyAgICAgICAgZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtpXSAq
IGltYWdQMltpXSArIGltYWdQMVtpXSAqIHJlYWxQMltpXTsKKworICAgICAgICByZWFsUDFbaV0g
PSBzY2FsZSAqIHJlYWxSZXN1bHQ7CisgICAgICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1hZ1Jl
c3VsdDsKKyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQorewor
ICAgIGdzdF9mZnRfZjMyX2ZmdChtX2ZmdCwgZGF0YSwgbV9mb3J3YXJkUGxhbik7CisKKyAgICAv
LyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidzIHNjYWxl
IGZhY3RvcgorICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIGRlZmlu
aXRpb24gb2YgRkZURnJhbWUgdG8KKyAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBmYWN0b3Ig
dGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KKyAgICAvLyBBbHNvLCBpZiB0aGlz
IGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NFCisgICAgLy8g
b3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gMjsKKworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworICAg
IGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IHVucGFja2VkRkZURGF0YVNpemUoZmZ0U2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2ZvcndhcmRQ
bGFuW2ldLmkgKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgcmVhbERhdGFbaV0gPSBtX2ZvcndhcmRQ
bGFuW2ldLnIgKiBzY2FsZUZhY3RvcjsKKyAgICB9CisKKyAgICAvLyBNb3ZlIHRoZSBOeXF1aXN0
IGNvbXBvbmVudCB0byB0aGUgbG9jYXRpb24gZXhwZWN0ZWQgYnkgdGhlCisgICAgLy8gRkZURnJh
bWUgQVBJLgorICAgIGltYWdEYXRhWzBdID0gcmVhbERhdGFbbGVuZ3RoIC0gMV07Cit9CisKK3Zv
aWQgRkZURnJhbWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKK3sKKyAgICBHc3RGRlRGMzJD
b21wbGV4KiBwbGFuID0gZ2V0VXBUb0RhdGVDb21wbGV4RGF0YSgpOworICAgIGdzdF9mZnRfZjMy
X2ludmVyc2VfZmZ0KG1faW52ZXJzZUZmdCwgcGxhbiwgZGF0YSk7CisgICAgZ19mcmVlKHBsYW4p
OworCisgICAgLy8gU2NhbGUgc28gdGhhdCBhIGZvcndhcmQgdGhlbiBpbnZlcnNlIEZGVCB5aWVs
ZHMgZXhhY3RseSB0aGUgb3JpZ2luYWwgZGF0YS4KKyAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEuMCAvICgyICogZmZ0U2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmZ0U2l6ZSgpOyArK2kpCisgICAgICAgIGRhdGFbaV0gKj0gc2NhbGVGYWN0b3I7CisKKyAgICAv
LyBNb3ZlIHRoZSBOeXF1aXN0IGNvbXBvbmVudCBiYWNrIHRvIHRoZSBsb2NhdGlvbiBleHBlY3Rl
ZCBieSB0aGUKKyAgICAvLyBGRlRGcmFtZSBBUEkuCisgICAgZmxvYXQqIHJlYWxEYXRhID0gbV9y
ZWFsRGF0YS5kYXRhKCk7CisgICAgZmxvYXQqIGltYWdEYXRhID0gbV9pbWFnRGF0YS5kYXRhKCk7
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdW5wYWNrZWRGRlREYXRhU2l6ZShmZnRTaXplKCkpOwor
ICAgIGltYWdEYXRhWzBdID0gcmVhbERhdGFbbGVuZ3RoIC0gMV07Cit9CisKK0dzdEZGVEYzMkNv
bXBsZXgqIEZGVEZyYW1lOjpnZXRVcFRvRGF0ZUNvbXBsZXhEYXRhKCkKK3sKKyAgICAvLyBNZXJn
ZSB0aGUgcmVhbCBhbmQgaW1hZ2ltYXJ5IHZlY3RvcnMgdG8gY29tcGxleCB2ZWN0b3IuCisgICAg
ZmxvYXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7CisgICAgZmxvYXQqIGltYWdEYXRh
ID0gbV9pbWFnRGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gdW5wYWNrZWRGRlRE
YXRhU2l6ZShmZnRTaXplKCkpOworCisgICAgLy8gTW92ZSB0aGUgTnlxdWlzdCBjb21wb25lbnQg
dG8gdGhlIGxvY2F0aW9uIGV4cGVjdGVkIGJ5IEZGVFcuCisgICAgcmVhbERhdGFbbGVuZ3RoIC0g
MV0gPSBpbWFnRGF0YVswXTsKKyAgICBpbWFnRGF0YVtsZW5ndGggLSAxXSA9IDA7CisgICAgaW1h
Z0RhdGFbMF0gPSAwOworCisgICAgdW5zaWduZWQgc2l6ZSA9IHVucGFja2VkRkZURGF0YVNpemUo
bV9GRlRTaXplKTsKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBwbGFuID0gZ19uZXcoR3N0RkZURjMy
Q29tcGxleCwgc2l6ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykg
eworICAgICAgICBwbGFuW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgcGxhbltpXS5yID0g
cmVhbERhdGFbaV07CisgICAgfQorICAgIHJldHVybiBwbGFuOworfQorCitmbG9hdCogRkZURnJh
bWU6OnJlYWxEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1f
cmVhbERhdGEuZGF0YSgpKTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8p
CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjgxMzQ4Ny4u
MGFhYzMxMyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAt
NzQ1LDcgKzc0NSwxMSBAQCBBQ19BUkdfRU5BQkxFKHdlYl9zb2NrZXRzLAogQUNfTVNHX1JFU1VM
VChbJGVuYWJsZV93ZWJfc29ja2V0c10pCiAKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgV2Vi
IEF1ZGlvIHN1cHBvcnQKLWVuYWJsZV93ZWJfYXVkaW89bm8KK0FDX01TR19DSEVDS0lORyhbd2hl
dGhlciB0byBlbmFibGUgV2ViIEF1ZGlvIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRSh3ZWJfYXVk
aW8sCisgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS13ZWItYXVkaW9dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHN1cHBvcnQgZm9yIFdlYiBBdWRp
byBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2VuYWJsZV93ZWJfYXVkaW89Im5v
Il0pCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3dlYl9hdWRpb10pCiAKICMgY2hlY2sgd2hldGhl
ciB0byBlbmFibGUgV2ViIFRpbWluZyBzdXBwb3J0CkBAIC0xMDI2LDYgKzEwMzAsNyBAQCBpZiB0
ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9
ICJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICBbZ3N0cmVhbWVyLTAuMTAgPj0gJEdT
VFJFQU1FUl9SRVFVSVJFRF9WRVJTSU9OCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXIt
YXBwLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hdWRpby0wLjEwCisgICAg
ICAgICAgICAgICAgICAgICBnc3RyZWFtZXItZmZ0LTAuMTAKICAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1iYXNlLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1pbnRl
cmZhY2VzLTAuMTAKICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1wYnV0aWxzLTAuMTAK
QEAgLTEwMzcsMTcgKzEwNDIsNiBAQCBpZiB0ZXN0ICIkZW5hYmxlX3ZpZGVvIiA9ICJ5ZXMiIHx8
IHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCiAgICBBQ19TVUJTVChbR1NU
UkVBTUVSX0xJQlNdKQogZmkKIAotIyBjaGVjayBpZiBsaWJmZnR3IGlzIGF2YWlsYWJsZQotaWYg
dGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KLSAgIFBLR19DSEVDS19NT0RV
TEVTKFtMSUJGRlRXXSwKLSAgICAgICAgICAgICAgICAgICAgIFtmZnR3MyA+PSAkTElCRkZUV19S
RVFVSVJFRF9WRVJTSU9OCi0gICAgICAgICAgICAgICAgICAgICBmZnR3M2YgPj0gJExJQkZGVFdf
UkVRVUlSRURfVkVSU0lPTl0sCi0gICAgICAgICAgICAgICAgICAgICBbaGF2ZV9mZnR3PXllc10p
Ci0KLSAgICBBQ19TVUJTVChbTElCRkZUV19DRkxBR1NdKQotICAgIEFDX1NVQlNUKFtMSUJGRlRX
X0xJQlNdKQotZmkKLQogIyBjaGVjayBmb3IgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CiBpZiB0ZXN0
ICIkZW5hYmxlX2NvdmVyYWdlIiA9ICJ5ZXMiOyB0aGVuCiAgICBDT1ZFUkFHRV9DRkxBR1M9Ii1N
RCIKLS0gCjEuNy44LjM=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122627</attachid>
            <date>2012-01-16 06:56:41 -0800</date>
            <delta_ts>2012-01-17 00:35:19 -0800</delta_ts>
            <desc>FFTFrameGStreamer implementation</desc>
            <filename>FFTFrameGStreamer-implementation.patch</filename>
            <type>text/plain</type>
            <size>15163</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0YzQyNWMwODYwNzI1NGUxYjdiZWYzOWVmNDI5ZWNkM2Q0NGMzNmFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDI5IE5vdiAyMDExIDE4OjQxOjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RkZURnJhbWVHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24KCi0tLQogQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiAuLi4vd2ViYXVk
aW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgICAgICB8ICAgIDQgKy0KIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NCArCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8
ICAgIDEgKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCAgICAgICAg
ICAgfCAgIDE1ICsrCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIu
Y3BwICAgICB8ICAgIDQgKy0KIC4uLi9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVH
U3RyZWFtZXIuY3BwIHwgIDE5MiArKysrKysrKysrKysrKysrKysrKwogY29uZmlndXJlLmFjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE5ICstLQogMTAgZmlsZXMg
Y2hhbmdlZCwgMjcwIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg
MTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdT
dHJlYW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZGIy
ODM1OC4uNDhiYzBlOCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEyLTAxLTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3Vy
ZS5hYzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4uCisKIDIwMTItMDEtMTIgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDQ4MDUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmExNDRjNS4uNWI5NjM0YSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
YmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzOgorICAgICAgICAoY2hlY2tU
YWlsMSk6IEFkYXB0IGNvbnZvbHV0aW9uIHRocmVzaG9sZCBmb3IgR1N0cmVhbWVyRkZURnJhbWUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24sIGFzIGFkdmlzZWQgYnkgQ2hyaXMgUm9nZXJzLgorCiAy
MDEyLTAxLTEyICBNaWtlIExhd3RoZXIgIDxtaWtlbGF3dGhlckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgbG9zc2xlc3NseSBvcHRpbWlzZSBmaWxlIHNpemUgb2YgdGVzdCByZXNvdXJjZSBwbmdz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24t
dGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10
ZXN0aW5nLmpzCmluZGV4IDAxZDI3MTQuLmQ3ZWY4ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzCisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzCkBAIC0xMjcsMTMg
KzEyNywxMyBAQCBmdW5jdGlvbiBjaGVja1RhaWwxKGRhdGEsIHJlZmVyZW5jZSwgYnJlYWtwb2lu
dCkgewogCiAgICAgLy8gVGhpcyB0aHJlc2hvbGQgaXMgZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5l
ZCBieSBleGFtaW5pbmcgdGhlCiAgICAgLy8gdmFsdWUgb2YgdGFpbDFNYXhEZWNpYmVscy4KLSAg
ICB2YXIgdGhyZXNob2xkMSA9IC0xNDYuNzsKKyAgICB2YXIgdGhyZXNob2xkMSA9IC0xMjkuNzsK
IAogICAgIHZhciB0YWlsMU1heERlY2liZWxzID0gbGluZWFyVG9EZWNpYmVsKHRhaWwxTWF4L3Jl
Zk1heCk7CiAgICAgaWYgKHRhaWwxTWF4RGVjaWJlbHMgPD0gdGhyZXNob2xkMSkgewogICAgICAg
ICB0ZXN0UGFzc2VkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgc3VmZmlj
aWVudGx5IHNtYWxsLiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0
IHBhcnQgb2YgdGFpbCBvZiBjb252b2x1dGlvbiBpcyBub3Qgc3VmZmljaWVudGx5IHNtYWxsOiAi
ICsgdGFpbDFNYXggKyAiIGRCIik7CisgICAgICAgIHRlc3RGYWlsZWQoIkZpcnN0IHBhcnQgb2Yg
dGFpbCBvZiBjb252b2x1dGlvbiBpcyBub3Qgc3VmZmljaWVudGx5IHNtYWxsOiAiICsgdGFpbDFN
YXhEZWNpYmVscyArICIgZEIiKTsKICAgICAgICAgaXNaZXJvID0gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNzhjYmRkMC4uNjgwODdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEyLTAxLTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGRlRGcmFtZSBpbXBsZW1lbnRhdGlv
biBiYXNlZCBvbiBHU3RyZWFtZXIncyBGRlQgcHJvY2Vzc2luZworICAgICAgICBsaWJyYXJ5Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgV2ViQXVkaW8gdGVzdHMgY292ZXIgdGhp
cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjppbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpjbGVhbnVwKToKKyAgICAgICAg
KFdlYkNvcmU6OkZGVEZyYW1lOjp+RkZURnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJh
bWU6Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKToKKyAgICAgICAgKFdlYkNvcmU6
OkZGVEZyYW1lOjpyZWFsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6aW1hZ0Rh
dGEpOgorCiAyMDEyLTAxLTEyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBwdXREaXJlY3QgKHBhcnQgMikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KaW5kZXggMDk0M2U3MC4uNjJhYjIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTUw
Miw2ICs1MDIsMTAgQEAgRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9XRUJfQVVESU89MQogd2Vi
Y29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9XRUJfQVVESU89MQogZW5kaWYKIAoraWYgVVNFX1dF
QkFVRElPX0dTVFJFQU1FUgord2ViY29yZV9jcHBmbGFncyArPSAtRFdURl9VU0VfV0VCQVVESU9f
R1NUUkVBTUVSPTEKK2VuZGlmCisKICMgLS0tLQogIyBXZWIgU29ja2V0cyBTdXBwb3J0CiAjIC0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDU1YmQ2MzQuLmRiNGU2MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTM2NCw2ICs1MzY0LDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVH
U3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggYjI1ZDI3OS4uZDkyMzExYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC00Nyw2ICs0Nywx
MyBAQAogI2luY2x1ZGUgIm1rbF9kZnRpLmgiCiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX01LTCkK
IAorI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisjaW5jbHVkZSA8Z2xpYi5oPgorR19CRUdJ
Tl9ERUNMUworI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMyLmg+CitHX0VORF9ERUNMUworI2Vu
ZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKICNpZiBVU0UoV0VCQVVESU9fRkZNUEVH
KQogc3RydWN0IFJERlRDb250ZXh0OwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCkBA
IC0xNDYsNiArMTUzLDE0IEBAIHByaXZhdGU6CiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW1hZ0Rh
dGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKIAorI2lmIFVTRShXRUJBVURJT19H
U1RSRUFNRVIpCisgICAgR3N0RkZURjMyKiBtX2ZmdDsKKyAgICBHc3RGRlRGMzIqIG1faW52ZXJz
ZUZmdDsKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBtX2NvbXBsZXhEYXRhOworICAgIEF1ZGlvRmxv
YXRBcnJheSBtX3JlYWxEYXRhOworICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOworI2Vu
ZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKICNlbmRpZiAvLyAhVVNFX0FDQ0VMRVJB
VEVfRkZUCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZVN0dWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVT
dHViLmNwcAppbmRleCBkZmM1MmEyLi5hYTI2ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAKLSNpZiAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkg
JiYgIVVTRShXRUJBVURJT19GRk1QRUcpCisjaWYgIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJ
T19NS0wpICYmICFVU0UoV0VCQVVESU9fRkZNUEVHKSAmJiAhVVNFKFdFQkFVRElPX0dTVFJFQU1F
UikKIAogI2luY2x1ZGUgIkZGVEZyYW1lLmgiCiAKQEAgLTEwMiw2ICsxMDIsNiBAQCBmbG9hdCog
RkZURnJhbWU6OmltYWdEYXRhKCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0j
ZW5kaWYgLy8gIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpCisjZW5kaWYgLy8gIU9T
KERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9fR1NUUkVBTUVS
KQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NjExZDcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVH
U3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMTkyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAx
MiBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisvLyBGRlRGcmFt
ZSBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgR1N0cmVhbWVyIEZGVCBsaWJyYXJ5LgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorCisjaW5jbHVk
ZSAiRkZURnJhbWUuaCIKKworbmFtZXNwYWNlIHsKKwordW5zaWduZWQgdW5wYWNrZWRGRlREYXRh
U2l6ZSh1bnNpZ25lZCBmZnRTaXplKQoreworICAgIHJldHVybiBmZnRTaXplIC8gMiArIDE7Cit9
CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IE5vcm1hbCBjb25zdHJ1Y3RvcjogYWxsb2NhdGVzIGZvciBhIGdpdmVuIGZmdFNpemUuCitGRlRG
cmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKKyAgICA6IG1fRkZUU2l6ZShmZnRTaXpl
KQorICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihmZnRTaXpl
KSkpCisgICAgLCBtX2ZmdCgwKQorICAgICwgbV9jb21wbGV4RGF0YSgwKQorICAgICwgbV9yZWFs
RGF0YShmZnRTaXplIC8gMikKKyAgICAsIG1faW1hZ0RhdGEoZmZ0U2l6ZSAvIDIpCit7CisgICAg
Ly8gV2Ugb25seSBhbGxvdyBwb3dlciBvZiB0d28uCisgICAgQVNTRVJUKDFVTCA8PCBtX2xvZzJG
RlRTaXplID09IG1fRkZUU2l6ZSk7CisKKyAgICBtX2NvbXBsZXhEYXRhID0gZ19uZXcoR3N0RkZU
RjMyQ29tcGxleCwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBm
ZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2Zm
dCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQg
PSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKworLy8gQ3JlYXRlcyBhIGJs
YW5rL2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3QgbGF0ZXIgYmUgY2FsbGVkKS4KK0ZG
VEZyYW1lOjpGRlRGcmFtZSgpCisgICAgOiBtX0ZGVFNpemUoMCkKKyAgICAsIG1fbG9nMkZGVFNp
emUoMCkKKyAgICAsIG1fY29tcGxleERhdGEoMCkKK3sKKyAgICBtX2NvbXBsZXhEYXRhID0gZ19u
ZXcoR3N0RkZURjMyQ29tcGxleCwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKwor
ICAgIGludCBmZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsK
KyAgICBtX2ZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2lu
dmVyc2VGZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKworLy8gQ29w
eSBjb25zdHJ1Y3Rvci4KK0ZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUp
CisgICAgOiBtX0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQorICAgICwgbV9sb2cyRkZUU2l6ZShm
cmFtZS5tX2xvZzJGRlRTaXplKQorICAgICwgbV9jb21wbGV4RGF0YSgwKQorICAgICwgbV9yZWFs
RGF0YShmcmFtZS5tX0ZGVFNpemUgLyAyKQorICAgICwgbV9pbWFnRGF0YShmcmFtZS5tX0ZGVFNp
emUgLyAyKQoreworICAgIG1fY29tcGxleERhdGEgPSBnX25ldyhHc3RGRlRGMzJDb21wbGV4LCB1
bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworCisgICAgaW50IGZmdExlbmd0aCA9IGdz
dF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOworICAgIG1fZmZ0ID0gZ3N0X2ZmdF9m
MzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52ZXJzZUZmdCA9IGdzdF9mZnRfZjMy
X25ldyhmZnRMZW5ndGgsIFRSVUUpOworCisgICAgLy8gQ29weS9zZXR1cCBmcmFtZSBkYXRhLgor
ICAgIG1lbWNweShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0YSgpLCBzaXplb2YoZmxvYXQpICog
bV9GRlRTaXplKTsKKyAgICBtZW1jcHkoaW1hZ0RhdGEoKSwgZnJhbWUuaW1hZ0RhdGEoKSwgc2l6
ZW9mKGZsb2F0KSAqIG1fRkZUU2l6ZSk7Cit9CisKK3ZvaWQgRkZURnJhbWU6OmluaXRpYWxpemUo
KQoreworfQorCit2b2lkIEZGVEZyYW1lOjpjbGVhbnVwKCkKK3sKK30KKworRkZURnJhbWU6On5G
RlRGcmFtZSgpCit7CisgICAgaWYgKCFtX2ZmdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3N0
X2ZmdF9mMzJfZnJlZShtX2ZmdCk7CisgICAgbV9mZnQgPSAwOworCisgICAgZ3N0X2ZmdF9mMzJf
ZnJlZShtX2ludmVyc2VGZnQpOworICAgIG1faW52ZXJzZUZmdCA9IDA7CisKKyAgICBnX2ZyZWUo
bV9jb21wbGV4RGF0YSk7Cit9CisKK3ZvaWQgRkZURnJhbWU6Om11bHRpcGx5KGNvbnN0IEZGVEZy
YW1lJiBmcmFtZSkKK3sKKyAgICBGRlRGcmFtZSYgZnJhbWUxID0gKnRoaXM7CisgICAgRkZURnJh
bWUmIGZyYW1lMiA9IGNvbnN0X2Nhc3Q8RkZURnJhbWUmPihmcmFtZSk7CisKKyAgICBmbG9hdCog
cmVhbFAxID0gZnJhbWUxLnJlYWxEYXRhKCk7CisgICAgZmxvYXQqIGltYWdQMSA9IGZyYW1lMS5p
bWFnRGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiByZWFsUDIgPSBmcmFtZTIucmVhbERhdGEoKTsK
KyAgICBjb25zdCBmbG9hdCogaW1hZ1AyID0gZnJhbWUyLmltYWdEYXRhKCk7CisKKyAgICAvLyBT
Y2FsZSBhY2NvdW50cyB0aGUgcGVjdWxpYXIgc2NhbGluZyBvZiB2ZWNMaWIgb24gdGhlIE1hYy4K
KyAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIHJpZ2h0IHNjYWxpbmcgYWxsIHRoZSB3YXkgYmFjayB0
byBpbnZlcnNlIEZGVC4KKyAgICAvLyBGSVhNRTogaWYgd2UgY2hhbmdlIHRoZSBzY2FsaW5nIG9u
IHRoZSBNYWMgdGhlbiB0aGlzIHNjYWxlCisgICAgLy8gZmFjdG9yIHdpbGwgbmVlZCB0byBjaGFu
Z2UgdG9vLgorICAgIGZsb2F0IHNjYWxlID0gMC41ZjsKKworICAgIC8vIENvbXBsZXggbXVsdGlw
bGljYXRpb24uIElmIHRoaXMgbG9vcCB0dXJucyBvdXQgdG8gYmUgaG90IHRoZW4KKyAgICAvLyB3
ZSBzaG91bGQgdXNlIFNTRSBvciBvdGhlciBpbnRyaW5zaWNzIHRvIGFjY2VsZXJhdGUgaXQuCisg
ICAgdW5zaWduZWQgaGFsZlNpemUgPSBmZnRTaXplKCkgLyAyOworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGhhbGZTaXplOyArK2kpIHsKKyAgICAgICAgZmxvYXQgcmVhbFJlc3VsdCA9
IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGltYWdQMVtpXSAqIGltYWdQMltpXTsKKyAgICAgICAg
ZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtpXSAqIGltYWdQMltpXSArIGltYWdQMVtpXSAqIHJl
YWxQMltpXTsKKworICAgICAgICByZWFsUDFbaV0gPSBzY2FsZSAqIHJlYWxSZXN1bHQ7CisgICAg
ICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1hZ1Jlc3VsdDsKKyAgICB9Cit9CisKK3ZvaWQgRkZU
RnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQoreworICAgIGdzdF9mZnRfZjMyX2ZmdChtX2ZmdCwg
ZGF0YSwgbV9jb21wbGV4RGF0YSk7CisKKyAgICAvLyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFp
biBkYXRhIHRvIG1hdGNoIHZlY0xpYidzIHNjYWxlIGZhY3RvcgorICAgIC8vIG9uIHRoZSBNYWMu
IEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIGRlZmluaXRpb24gb2YgRkZURnJhbWUgdG8KKyAgICAv
LyBlbGltaW5hdGUgdGhpcyBzY2FsZSBmYWN0b3IgdGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRv
IGNoYW5nZS4KKyAgICAvLyBBbHNvLCBpZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0
aGVuIHdlIHNob3VsZCB1c2UgU1NFCisgICAgLy8gb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2Nl
bGVyYXRlIGl0LgorICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMjsKKworICAgIGZsb2F0KiBpbWFn
RGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERh
dGEuZGF0YSgpOworICAgIHVuc2lnbmVkIGhhbGZTaXplID0gbV9GRlRTaXplIC8gMjsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaGFsZlNpemU7IGkrKykgeworICAgICAgICBpbWFnRGF0
YVtpXSA9IG1fY29tcGxleERhdGFbaV0uaSAqIHNjYWxlRmFjdG9yOworICAgICAgICByZWFsRGF0
YVtpXSA9IG1fY29tcGxleERhdGFbaV0uciAqIHNjYWxlRmFjdG9yOworICAgIH0KK30KKwordm9p
ZCBGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKGZsb2F0KiBkYXRhKQoreworICAgIC8vICBNZXJnZSB0
aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHZlY3RvcnMgdG8gY29tcGxleCB2ZWN0b3IuCisgICAgZmxv
YXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7CisgICAgZmxvYXQqIGltYWdEYXRhID0g
bV9pbWFnRGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgc2l6ZSA9IG1fRkZUU2l6ZSAvIDI7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIG1fY29t
cGxleERhdGFbaV0uaSA9IGltYWdEYXRhW2ldOworICAgICAgICBtX2NvbXBsZXhEYXRhW2ldLnIg
PSByZWFsRGF0YVtpXTsKKyAgICB9CisKKyAgICBnc3RfZmZ0X2YzMl9pbnZlcnNlX2ZmdChtX2lu
dmVyc2VGZnQsIG1fY29tcGxleERhdGEsIGRhdGEpOworCisgICAgLy8gU2NhbGUgc28gdGhhdCBh
IGZvcndhcmQgdGhlbiBpbnZlcnNlIEZGVCB5aWVsZHMgZXhhY3RseSB0aGUgb3JpZ2luYWwgZGF0
YS4KKyAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMCAvICgyICogbV9GRlRTaXplKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9GRlRTaXplOyArK2kpCisgICAgICAgIGRh
dGFbaV0gKj0gc2NhbGVGYWN0b3I7Cit9CisKK2Zsb2F0KiBGRlRGcmFtZTo6cmVhbERhdGEoKSBj
b25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PGZsb2F0Kj4obV9yZWFsRGF0YS5kYXRhKCkp
OworfQorCitmbG9hdCogRkZURnJhbWU6OmltYWdEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y29uc3RfY2FzdDxmbG9hdCo+KG1faW1hZ0RhdGEuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKZGlmZiAtLWdp
dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAyODEzNDg3Li40NDZiMzI0IDEw
MDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC03NDUsNyArNzQ1
LDExIEBAIEFDX0FSR19FTkFCTEUod2ViX3NvY2tldHMsCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxl
X3dlYl9zb2NrZXRzXSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3Vw
cG9ydAotZW5hYmxlX3dlYl9hdWRpbz1ubworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVu
YWJsZSBXZWIgQXVkaW8gc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKHdlYl9hdWRpbywKKyAgICAg
ICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdlYi1hdWRpb10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgV2ViIEF1ZGlvIFtkZWZhdWx0
PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dlYl9hdWRpbz0ibm8iXSkKIEFDX01T
R19SRVNVTFQoWyRlbmFibGVfd2ViX2F1ZGlvXSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJs
ZSBXZWIgVGltaW5nIHN1cHBvcnQKQEAgLTEwMjYsNiArMTAzMCw3IEBAIGlmIHRlc3QgIiRlbmFi
bGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRo
ZW4KICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JF
UVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hcHAtMC4xMAog
ICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWF1ZGlvLTAuMTAKKyAgICAgICAgICAgICAg
ICAgICAgIGdzdHJlYW1lci1mZnQtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVy
LWJhc2UtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4x
MAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTAzNywx
NyArMTA0Miw2IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVu
YWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNUKFtHU1RSRUFNRVJfTElC
U10pCiBmaQogCi0jIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxlCi1pZiB0ZXN0ICIkZW5h
YmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgotICAgUEtHX0NIRUNLX01PRFVMRVMoW0xJQkZG
VFddLAotICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJGRlRXX1JFUVVJUkVEX1ZF
UlNJT04KLSAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElCRkZUV19SRVFVSVJFRF9W
RVJTSU9OXSwKLSAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9eWVzXSkKLQotICAgIEFD
X1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCi0gICAgQUNfU1VCU1QoW0xJQkZGVFdfTElCU10pCi1m
aQotCiAjIGNoZWNrIGZvciBjb2RlIGNvdmVyYWdlIHN1cHBvcnQKIGlmIHRlc3QgIiRlbmFibGVf
Y292ZXJhZ2UiID0gInllcyI7IHRoZW4KICAgIENPVkVSQUdFX0NGTEFHUz0iLU1EIgpAQCAtMTEy
MCw2ICsxMTE0LDcgQEAgQU1fQ09ORElUSU9OQUwoW1VTRV9QQU5HT10sIFt0ZXN0ICIkd2l0aF9m
b250X2JhY2tlbmQiID0gInBhbmdvIl0pCiAKICMgR1N0cmVhbWVyIGZlYXR1cmUgY29uZGl0aW9u
YWwKIEFNX0NPTkRJVElPTkFMKFtVU0VfR1NUUkVBTUVSXSwgW3Rlc3QgIiRoYXZlX2dzdHJlYW1l
ciIgPSAieWVzIl0pCitBTV9DT05ESVRJT05BTChbVVNFX1dFQkFVRElPX0dTVFJFQU1FUl0sIFt0
ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIl0pCiAKICMgQWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgY29uZGl0aW9uYWwKIEFNX0NPTkRJVElPTkFMKFtVU0VfQUNDRUxFUkFURURfQ09NUE9T
SVRJTkddLCBbdGVzdCAiJHdpdGhfYWNjZWxlcmF0ZWRfY29tcG9zaXRpbmciID0gImNhaXJvIiB8
fCB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAib3BlbmdsIiB8fCB0ZXN0
ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAiY2x1dHRlciJdKQotLSAKMS43Ljgu
Mw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122727</attachid>
            <date>2012-01-17 00:35:19 -0800</date>
            <delta_ts>2012-01-23 04:33:56 -0800</delta_ts>
            <desc>FFTFrameGStreamer implementation</desc>
            <filename>FFTFrameGStreamer-implementation.patch</filename>
            <type>text/plain</type>
            <size>17862</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2NDI4MmY4OWJkOGE0NTI1OTg5NzNjOTRlZDkwYzE0YzRlMDAxZTRmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDI5IE5vdiAyMDExIDE4OjQxOjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
RkZURnJhbWVHU3RyZWFtZXIgaW1wbGVtZW50YXRpb24KCi0tLQogQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiAuLi4vd2ViYXVk
aW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgICAgICB8ICAgIDQgKy0KIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysK
IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NSArLQogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAg
fCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggICAgICAg
ICAgIHwgICAxNSArKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHVi
LmNwcCAgICAgfCAgICA0ICstCiAuLi4vcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1l
R1N0cmVhbWVyLmNwcCB8ICAxOTIgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICB8ICAgIDIgLQogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIFNv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAt
CiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTkgKy0tCiAxNCBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA3NmM5NTViLi4yNTU0ZWJmIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMTYgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1l
IGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogY29uZmlndXJlLmFjOiBFbmFibGUgdGhlIFdlYkF1ZGlvIG9wdGlvbiBhZ2FpbiBh
bmQgcmVtb3ZlCisgICAgICAgIGxpYmZmdHcgY2hlY2tzLgorCiAyMDEyLTAxLTE2ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRh
dGUgTkVXUyBhbmQgY29uZmlndXJlLmFjIGZvciAxLjcuNCByZWxlYXNlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2MxY2I0
YS4uZGJmYzNhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAxLTE2ICBQaGlsaXBwZSBO
b3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRG
cmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzOgor
ICAgICAgICAoY2hlY2tUYWlsMSk6IEFkYXB0IGNvbnZvbHV0aW9uIHRocmVzaG9sZCBmb3IgR1N0
cmVhbWVyRkZURnJhbWUKKyAgICAgICAgaW1wbGVtZW50YXRpb24sIGFzIGFkdmlzZWQgYnkgQ2hy
aXMgUm9nZXJzLgorCiAyMDEyLTAxLTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBmYXN0L2RvbS9jb25zdHJ1Y3RlZC1vYmplY3RzLXBy
b3RvdHlwZXMuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVz
b3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNv
dXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwppbmRleCAwMWQyNzE0Li5kN2VmOGVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGlu
Zy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVz
dGluZy5qcwpAQCAtMTI3LDEzICsxMjcsMTMgQEAgZnVuY3Rpb24gY2hlY2tUYWlsMShkYXRhLCBy
ZWZlcmVuY2UsIGJyZWFrcG9pbnQpIHsKIAogICAgIC8vIFRoaXMgdGhyZXNob2xkIGlzIGV4cGVy
aW1lbnRhbGx5IGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZQogICAgIC8vIHZhbHVlIG9mIHRh
aWwxTWF4RGVjaWJlbHMuCi0gICAgdmFyIHRocmVzaG9sZDEgPSAtMTQ2Ljc7CisgICAgdmFyIHRo
cmVzaG9sZDEgPSAtMTI5Ljc7CiAKICAgICB2YXIgdGFpbDFNYXhEZWNpYmVscyA9IGxpbmVhclRv
RGVjaWJlbCh0YWlsMU1heC9yZWZNYXgpOwogICAgIGlmICh0YWlsMU1heERlY2liZWxzIDw9IHRo
cmVzaG9sZDEpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNv
bnZvbHV0aW9uIGlzIHN1ZmZpY2llbnRseSBzbWFsbC4iKTsKICAgICB9IGVsc2UgewotICAgICAg
ICB0ZXN0RmFpbGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1
ZmZpY2llbnRseSBzbWFsbDogIiArIHRhaWwxTWF4ICsgIiBkQiIpOworICAgICAgICB0ZXN0RmFp
bGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2llbnRs
eSBzbWFsbDogIiArIHRhaWwxTWF4RGVjaWJlbHMgKyAiIGRCIik7CiAgICAgICAgIGlzWmVybyA9
IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNjODUyMTkuLjJjZTIzNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0xNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3Jt
YW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRkZU
RnJhbWUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gR1N0cmVhbWVyJ3MgRkZUIHByb2Nlc3NpbmcK
KyAgICAgICAgbGlicmFyeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIFdlYkF1
ZGlvIHRlc3RzIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpGRlRGcmFtZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6
Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6fkZGVEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZGVEZyYW1lOjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRG
cmFtZTo6ZG9GRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvSW52ZXJzZUZGVCk6
CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6cmVhbERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6RkZURnJhbWU6OmltYWdEYXRhKToKKwogMjAxMi0wMS0xNiAgSGFqaW1lIE1vcnJpdGEgIDxt
b3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJuYWxzXSBtZW1iZXIgdmFyYWli
bGVzIHNob3VsZCBmb2xsb3cgbmFtaW5nIGNvbnZlbnRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IDA5NDNlNzAuLmQ1MTA1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC01MDIsNiArNTAy
LDEwIEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVfV0VCX0FVRElPPTEKIHdlYmNvcmVfY3Bw
ZmxhZ3MgKz0gLURFTkFCTEVfV0VCX0FVRElPPTEKIGVuZGlmCiAKK2lmIFVTRV9XRUJBVURJT19H
U1RSRUFNRVIKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURXVEZfVVNFX1dFQkFVRElPX0dTVFJFQU1F
Uj0xCitlbmRpZgorCiAjIC0tLS0KICMgV2ViIFNvY2tldHMgU3VwcG9ydAogIyAtLS0tCkBAIC04
NTcsNyArODYxLDYgQEAgbGliV2ViQ29yZUd0a19sYV9DUFBGTEFHUyA9IFwKIAkkKEdTVFJFQU1F
Ul9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1MpIFwKIAkkKEhJTERPTl9DRkxBR1MpIFwKLQkkKExJ
QkZGVFdfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFHUykg
XAogCSQoTElCWFNMVF9DRkxBR1MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGNlNjdmNTEuLjhkOTVjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTM2
OCw2ICs1MzY4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9T
b3VyY2VHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1
ZGlvQnVzR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5k
ZXggYjI1ZDI3OS4uZDkyMzExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZS5oCkBAIC00Nyw2ICs0NywxMyBAQAogI2luY2x1ZGUgIm1rbF9kZnRpLmgiCiAjZW5kaWYg
Ly8gVVNFKFdFQkFVRElPX01LTCkKIAorI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisjaW5j
bHVkZSA8Z2xpYi5oPgorR19CRUdJTl9ERUNMUworI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMy
Lmg+CitHX0VORF9ERUNMUworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKICNp
ZiBVU0UoV0VCQVVESU9fRkZNUEVHKQogc3RydWN0IFJERlRDb250ZXh0OwogI2VuZGlmIC8vIFVT
RShXRUJBVURJT19GRk1QRUcpCkBAIC0xNDYsNiArMTUzLDE0IEBAIHByaXZhdGU6CiAgICAgQXVk
aW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykK
IAorI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisgICAgR3N0RkZURjMyKiBtX2ZmdDsKKyAg
ICBHc3RGRlRGMzIqIG1faW52ZXJzZUZmdDsKKyAgICBHc3RGRlRGMzJDb21wbGV4KiBtX2NvbXBs
ZXhEYXRhOworICAgIEF1ZGlvRmxvYXRBcnJheSBtX3JlYWxEYXRhOworICAgIEF1ZGlvRmxvYXRB
cnJheSBtX2ltYWdEYXRhOworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKICNl
bmRpZiAvLyAhVVNFX0FDQ0VMRVJBVEVfRkZUCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcAppbmRleCBkZmM1MmEyLi5hYTI2ZWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKQEAgLTI5
LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAKLSNpZiAhT1MoREFSV0lOKSAm
JiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19GRk1QRUcpCisjaWYgIU9TKERB
UldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9fRkZNUEVHKSAmJiAh
VVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2luY2x1ZGUgIkZGVEZyYW1lLmgiCiAKQEAgLTEw
Miw2ICsxMDIsNiBAQCBmbG9hdCogRkZURnJhbWU6OmltYWdEYXRhKCkgY29uc3QKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJ
T19NS0wpCisjZW5kaWYgLy8gIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFV
U0UoV0VCQVVESU9fR1NUUkVBTUVSKQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFt
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjM0NjExZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC0wLDAgKzEsMTkyIEBACisvKgor
ICogIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisvLyBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgR1N0cmVhbWVy
IEZGVCBsaWJyYXJ5LgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoV0VCQVVESU9f
R1NUUkVBTUVSKQorCisjaW5jbHVkZSAiRkZURnJhbWUuaCIKKworbmFtZXNwYWNlIHsKKwordW5z
aWduZWQgdW5wYWNrZWRGRlREYXRhU2l6ZSh1bnNpZ25lZCBmZnRTaXplKQoreworICAgIHJldHVy
biBmZnRTaXplIC8gMiArIDE7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIE5vcm1hbCBjb25zdHJ1Y3RvcjogYWxsb2NhdGVzIGZvciBh
IGdpdmVuIGZmdFNpemUuCitGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKKyAg
ICA6IG1fRkZUU2l6ZShmZnRTaXplKQorICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obG9nMihmZnRTaXplKSkpCisgICAgLCBtX2ZmdCgwKQorICAgICwgbV9jb21wbGV4
RGF0YSgwKQorICAgICwgbV9yZWFsRGF0YShmZnRTaXplIC8gMikKKyAgICAsIG1faW1hZ0RhdGEo
ZmZ0U2l6ZSAvIDIpCit7CisgICAgLy8gV2Ugb25seSBhbGxvdyBwb3dlciBvZiB0d28uCisgICAg
QVNTRVJUKDFVTCA8PCBtX2xvZzJGRlRTaXplID09IG1fRkZUU2l6ZSk7CisKKyAgICBtX2NvbXBs
ZXhEYXRhID0gZ19uZXcoR3N0RkZURjMyQ29tcGxleCwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZG
VFNpemUpKTsKKworICAgIGludCBmZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgo
bV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNF
KTsKKyAgICBtX2ludmVyc2VGZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsK
K30KKworLy8gQ3JlYXRlcyBhIGJsYW5rL2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3Qg
bGF0ZXIgYmUgY2FsbGVkKS4KK0ZGVEZyYW1lOjpGRlRGcmFtZSgpCisgICAgOiBtX0ZGVFNpemUo
MCkKKyAgICAsIG1fbG9nMkZGVFNpemUoMCkKKyAgICAsIG1fY29tcGxleERhdGEoMCkKK3sKKyAg
ICBtX2NvbXBsZXhEYXRhID0gZ19uZXcoR3N0RkZURjMyQ29tcGxleCwgdW5wYWNrZWRGRlREYXRh
U2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBmZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFz
dF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5n
dGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3Ro
LCBUUlVFKTsKK30KKworLy8gQ29weSBjb25zdHJ1Y3Rvci4KK0ZGVEZyYW1lOjpGRlRGcmFtZShj
b25zdCBGRlRGcmFtZSYgZnJhbWUpCisgICAgOiBtX0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQor
ICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRTaXplKQorICAgICwgbV9jb21wbGV4
RGF0YSgwKQorICAgICwgbV9yZWFsRGF0YShmcmFtZS5tX0ZGVFNpemUgLyAyKQorICAgICwgbV9p
bWFnRGF0YShmcmFtZS5tX0ZGVFNpemUgLyAyKQoreworICAgIG1fY29tcGxleERhdGEgPSBnX25l
dyhHc3RGRlRGMzJDb21wbGV4LCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworCisg
ICAgaW50IGZmdExlbmd0aCA9IGdzdF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOwor
ICAgIG1fZmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52
ZXJzZUZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIFRSVUUpOworCisgICAgLy8gQ29w
eS9zZXR1cCBmcmFtZSBkYXRhLgorICAgIG1lbWNweShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0
YSgpLCBzaXplb2YoZmxvYXQpICogbV9GRlRTaXplKTsKKyAgICBtZW1jcHkoaW1hZ0RhdGEoKSwg
ZnJhbWUuaW1hZ0RhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIG1fRkZUU2l6ZSk7Cit9CisKK3ZvaWQg
RkZURnJhbWU6OmluaXRpYWxpemUoKQoreworfQorCit2b2lkIEZGVEZyYW1lOjpjbGVhbnVwKCkK
K3sKK30KKworRkZURnJhbWU6On5GRlRGcmFtZSgpCit7CisgICAgaWYgKCFtX2ZmdCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ3N0X2ZmdF9mMzJfZnJlZShtX2ZmdCk7CisgICAgbV9mZnQgPSAw
OworCisgICAgZ3N0X2ZmdF9mMzJfZnJlZShtX2ludmVyc2VGZnQpOworICAgIG1faW52ZXJzZUZm
dCA9IDA7CisKKyAgICBnX2ZyZWUobV9jb21wbGV4RGF0YSk7Cit9CisKK3ZvaWQgRkZURnJhbWU6
Om11bHRpcGx5KGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKK3sKKyAgICBGRlRGcmFtZSYgZnJhbWUx
ID0gKnRoaXM7CisgICAgRkZURnJhbWUmIGZyYW1lMiA9IGNvbnN0X2Nhc3Q8RkZURnJhbWUmPihm
cmFtZSk7CisKKyAgICBmbG9hdCogcmVhbFAxID0gZnJhbWUxLnJlYWxEYXRhKCk7CisgICAgZmxv
YXQqIGltYWdQMSA9IGZyYW1lMS5pbWFnRGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiByZWFsUDIg
PSBmcmFtZTIucmVhbERhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogaW1hZ1AyID0gZnJhbWUyLmlt
YWdEYXRhKCk7CisKKyAgICAvLyBTY2FsZSBhY2NvdW50cyB0aGUgcGVjdWxpYXIgc2NhbGluZyBv
ZiB2ZWNMaWIgb24gdGhlIE1hYy4KKyAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIHJpZ2h0IHNjYWxp
bmcgYWxsIHRoZSB3YXkgYmFjayB0byBpbnZlcnNlIEZGVC4KKyAgICAvLyBGSVhNRTogaWYgd2Ug
Y2hhbmdlIHRoZSBzY2FsaW5nIG9uIHRoZSBNYWMgdGhlbiB0aGlzIHNjYWxlCisgICAgLy8gZmFj
dG9yIHdpbGwgbmVlZCB0byBjaGFuZ2UgdG9vLgorICAgIGZsb2F0IHNjYWxlID0gMC41ZjsKKwor
ICAgIC8vIENvbXBsZXggbXVsdGlwbGljYXRpb24uIElmIHRoaXMgbG9vcCB0dXJucyBvdXQgdG8g
YmUgaG90IHRoZW4KKyAgICAvLyB3ZSBzaG91bGQgdXNlIFNTRSBvciBvdGhlciBpbnRyaW5zaWNz
IHRvIGFjY2VsZXJhdGUgaXQuCisgICAgdW5zaWduZWQgaGFsZlNpemUgPSBmZnRTaXplKCkgLyAy
OworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhhbGZTaXplOyArK2kpIHsKKyAgICAg
ICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGltYWdQMVtpXSAq
IGltYWdQMltpXTsKKyAgICAgICAgZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtpXSAqIGltYWdQ
MltpXSArIGltYWdQMVtpXSAqIHJlYWxQMltpXTsKKworICAgICAgICByZWFsUDFbaV0gPSBzY2Fs
ZSAqIHJlYWxSZXN1bHQ7CisgICAgICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1hZ1Jlc3VsdDsK
KyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGZsb2F0KiBkYXRhKQoreworICAgIGdz
dF9mZnRfZjMyX2ZmdChtX2ZmdCwgZGF0YSwgbV9jb21wbGV4RGF0YSk7CisKKyAgICAvLyBTY2Fs
ZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidzIHNjYWxlIGZhY3Rv
cgorICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIGRlZmluaXRpb24g
b2YgRkZURnJhbWUgdG8KKyAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBmYWN0b3IgdGhlbiB0
aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KKyAgICAvLyBBbHNvLCBpZiB0aGlzIGxvb3Ag
dHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NFCisgICAgLy8gb3Igb3Ro
ZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
MjsKKworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworICAgIGZsb2F0
KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIHVuc2lnbmVkIGhhbGZTaXplID0g
bV9GRlRTaXplIC8gMjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaGFsZlNpemU7IGkr
KykgeworICAgICAgICBpbWFnRGF0YVtpXSA9IG1fY29tcGxleERhdGFbaV0uaSAqIHNjYWxlRmFj
dG9yOworICAgICAgICByZWFsRGF0YVtpXSA9IG1fY29tcGxleERhdGFbaV0uciAqIHNjYWxlRmFj
dG9yOworICAgIH0KK30KKwordm9pZCBGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKGZsb2F0KiBkYXRh
KQoreworICAgIC8vICBNZXJnZSB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHZlY3RvcnMgdG8gY29t
cGxleCB2ZWN0b3IuCisgICAgZmxvYXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7Cisg
ICAgZmxvYXQqIGltYWdEYXRhID0gbV9pbWFnRGF0YS5kYXRhKCk7CisgICAgdW5zaWduZWQgc2l6
ZSA9IG1fRkZUU2l6ZSAvIDI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
aSsrKSB7CisgICAgICAgIG1fY29tcGxleERhdGFbaV0uaSA9IGltYWdEYXRhW2ldOworICAgICAg
ICBtX2NvbXBsZXhEYXRhW2ldLnIgPSByZWFsRGF0YVtpXTsKKyAgICB9CisKKyAgICBnc3RfZmZ0
X2YzMl9pbnZlcnNlX2ZmdChtX2ludmVyc2VGZnQsIG1fY29tcGxleERhdGEsIGRhdGEpOworCisg
ICAgLy8gU2NhbGUgc28gdGhhdCBhIGZvcndhcmQgdGhlbiBpbnZlcnNlIEZGVCB5aWVsZHMgZXhh
Y3RseSB0aGUgb3JpZ2luYWwgZGF0YS4KKyAgICBjb25zdCBmbG9hdCBzY2FsZUZhY3RvciA9IDEu
MCAvICgyICogbV9GRlRTaXplKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9GRlRT
aXplOyArK2kpCisgICAgICAgIGRhdGFbaV0gKj0gc2NhbGVGYWN0b3I7Cit9CisKK2Zsb2F0KiBG
RlRGcmFtZTo6cmVhbERhdGEoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9jYXN0PGZsb2F0
Kj4obV9yZWFsRGF0YS5kYXRhKCkpOworfQorCitmbG9hdCogRkZURnJhbWU6OmltYWdEYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1faW1hZ0RhdGEuZGF0YSgp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFdFQkFVRElP
X0dTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBlNThmMmE3Li4wOWVjYWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTcgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1lIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSBsaWJmZnR3IGNvbXBpbGF0aW9uIGZsYWdzLgor
CiAyMDEyLTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBVcGRhdGUgTkVXUyBhbmQgY29uZmlndXJlLmFjIGZvciAxLjcuNCBy
ZWxlYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDBhMzM0ODYuLjFlMjRkODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC02OCw3ICs2OCw2IEBAIGxpYndlYmtpdGd0a19A
V0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9O
QF9sYV9DUFBGCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChI
SUxET05fQ0ZMQUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1Mp
IFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC0xMDEsNyAr
MTAwLDYgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJTKSBcCiAJJChISUxE
T05fTElCUykgXAogCSQoSlBFR19MSUJTKSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKExJQlNP
VVBfTElCUykgXAogCSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElCUykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDc0M2I5M2EuLjkyZWYzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
Mi0wMS0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIGxp
YmZmdHcgY29tcGlsYXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMTYgIERhbiBCZXJuc3RlaW4gIDxt
aXR6QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA3MDI3NTg+IFJFR1JF
U1NJT046IEV2ZXJ5IFNhZmFyaSBSZWFkZXIgV0tWaWV3IGxlYWtzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGE3NzFiOWQuLmIzODdkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xNDU1LDcg
KzE0NTUsNiBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQUREID0gXAogCSQoWFJF
TkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChXSU5NTV9MSUJTKSBcCi0JJChMSUJGRlRX
X0xJQlMpIFwKIAkkKFpMSUJfTElCUykKIAogUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19M
REZMQUdTID0gXApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4
IGNmMzc3MDYuLjZmMWM4ZTQgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1
cmUuYWMKQEAgLTc0NSw3ICs3NDUsMTEgQEAgQUNfQVJHX0VOQUJMRSh3ZWJfc29ja2V0cywKIEFD
X01TR19SRVNVTFQoWyRlbmFibGVfd2ViX3NvY2tldHNdKQogCiAjIGNoZWNrIHdoZXRoZXIgdG8g
ZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0Ci1lbmFibGVfd2ViX2F1ZGlvPW5vCitBQ19NU0dfQ0hF
Q0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0XSkKK0FDX0FSR19FTkFC
TEUod2ViX2F1ZGlvLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtd2Vi
LWF1ZGlvXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZv
ciBXZWIgQXVkaW8gW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVfd2Vi
X2F1ZGlvPSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV93ZWJfYXVkaW9dKQogCiAjIGNo
ZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBUaW1pbmcgc3VwcG9ydApAQCAtMTAyNiw2ICsxMDMw
LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0ICIkZW5hYmxlX3dl
Yl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgW2dzdHJlYW1lci0w
LjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAg
Z3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXVkaW8t
MC4xMAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWZmdC0wLjEwCiAgICAgICAgICAg
ICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3Ry
ZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1
dGlscy0wLjEwCkBAIC0xMDM3LDE3ICsxMDQyLDYgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIg
PSAieWVzIiB8fCB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgQUNf
U1VCU1QoW0dTVFJFQU1FUl9MSUJTXSkKIGZpCiAKLSMgY2hlY2sgaWYgbGliZmZ0dyBpcyBhdmFp
bGFibGUKLWlmIHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCi0gICBQS0df
Q0hFQ0tfTU9EVUxFUyhbTElCRkZUV10sCi0gICAgICAgICAgICAgICAgICAgICBbZmZ0dzMgPj0g
JExJQkZGVFdfUkVRVUlSRURfVkVSU0lPTgotICAgICAgICAgICAgICAgICAgICAgZmZ0dzNmID49
ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT05dLAotICAgICAgICAgICAgICAgICAgICAgW2hhdmVf
ZmZ0dz15ZXNdKQotCi0gICAgQUNfU1VCU1QoW0xJQkZGVFdfQ0ZMQUdTXSkKLSAgICBBQ19TVUJT
VChbTElCRkZUV19MSUJTXSkKLWZpCi0KICMgY2hlY2sgZm9yIGNvZGUgY292ZXJhZ2Ugc3VwcG9y
dAogaWYgdGVzdCAiJGVuYWJsZV9jb3ZlcmFnZSIgPSAieWVzIjsgdGhlbgogICAgQ09WRVJBR0Vf
Q0ZMQUdTPSItTUQiCkBAIC0xMTIwLDYgKzExMTQsNyBAQCBBTV9DT05ESVRJT05BTChbVVNFX1BB
TkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAicGFuZ28iXSkKIAogIyBHU3RyZWFt
ZXIgZmVhdHVyZSBjb25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBb
dGVzdCAiJGhhdmVfZ3N0cmVhbWVyIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtVU0VfV0VC
QVVESU9fR1NUUkVBTUVSXSwgW3Rlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiXSkKIAog
IyBBY2NlbGVyYXRlZCBjb21wb3NpdGluZyBjb25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VT
RV9BQ0NFTEVSQVRFRF9DT01QT1NJVElOR10sIFt0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21w
b3NpdGluZyIgPSAiY2Fpcm8iIHx8IHRlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5n
IiA9ICJvcGVuZ2wiIHx8IHRlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJj
bHV0dGVyIl0pCi0tIAoxLjcuOC4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123540</attachid>
            <date>2012-01-23 04:33:56 -0800</date>
            <delta_ts>2012-01-25 09:11:20 -0800</delta_ts>
            <desc>GstFFTFrame</desc>
            <filename>GstFFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17560</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmNDJiOTE4MjM0OWJhMzM2NDBiZDgyMmQ0Njc2MDliNjc3ZTJlMDk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDE5IEphbiAyMDEyIDE1OjAwOjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
R3N0RkZURnJhbWUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKwogLi4uL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1
dGlvbi10ZXN0aW5nLmpzICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTUgKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAgNCArLQog
Li4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgfCAgMTgw
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstLQogMTQgZmlsZXMgY2hh
bmdlZCwgMjc3IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJl
YW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZjhiYTdm
My4uZThjOWJmZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTAxLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4gYW5kIHJlbW92ZQorICAgICAgICBs
aWJmZnR3IGNoZWNrcy4KKwogMjAxMi0wMS0yMSAgUHJpaXQgTGFlcyAgPHBsYWVzQHBsYWVzLm9y
Zz4KIAogICAgICAgICBbR1RLXVtQQVRDSF0gRW5hYmxlIE1hdGhNTCBzdXBwb3J0IGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAxZjZmNDExLi40OThmZTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDEtMTkgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHU3RyZWFtZXJdIEZGVEZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0
aW9uLXRlc3RpbmcuanM6CisgICAgICAgIChjaGVja1RhaWwxKTogQWRhcHQgY29udm9sdXRpb24g
dGhyZXNob2xkIGZvciBHU3RyZWFtZXJGRlRGcmFtZQorICAgICAgICBpbXBsZW1lbnRhdGlvbiwg
YXMgYWR2aXNlZCBieSBDaHJpcyBSb2dlcnMuCisKIDIwMTItMDEtMjMgIEFuZHJleSBLb3N5YWtv
diAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZvbGxvdy11cCB0
byByMTA1NTk2LCBhZGRlZCBtaXNzaW5nIHRlc3QgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwppbmRleCAw
MWQyNzE0Li5kN2VmOGVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJj
ZXMvY29udm9sdXRpb24tdGVzdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNv
dXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwpAQCAtMTI3LDEzICsxMjcsMTMgQEAgZnVuY3Rp
b24gY2hlY2tUYWlsMShkYXRhLCByZWZlcmVuY2UsIGJyZWFrcG9pbnQpIHsKIAogICAgIC8vIFRo
aXMgdGhyZXNob2xkIGlzIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRo
ZQogICAgIC8vIHZhbHVlIG9mIHRhaWwxTWF4RGVjaWJlbHMuCi0gICAgdmFyIHRocmVzaG9sZDEg
PSAtMTQ2Ljc7CisgICAgdmFyIHRocmVzaG9sZDEgPSAtMTI5Ljc7CiAKICAgICB2YXIgdGFpbDFN
YXhEZWNpYmVscyA9IGxpbmVhclRvRGVjaWJlbCh0YWlsMU1heC9yZWZNYXgpOwogICAgIGlmICh0
YWlsMU1heERlY2liZWxzIDw9IHRocmVzaG9sZDEpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRmly
c3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlzIHN1ZmZpY2llbnRseSBzbWFsbC4iKTsK
ICAgICB9IGVsc2UgewotICAgICAgICB0ZXN0RmFpbGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2Yg
Y29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2llbnRseSBzbWFsbDogIiArIHRhaWwxTWF4ICsgIiBk
QiIpOworICAgICAgICB0ZXN0RmFpbGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRp
b24gaXMgbm90IHN1ZmZpY2llbnRseSBzbWFsbDogIiArIHRhaWwxTWF4RGVjaWJlbHMgKyAiIGRC
Iik7CiAgICAgICAgIGlzWmVybyA9IGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJhYmUx
ZjUuLjhjZDc1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMS0xOSAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRkZURnJhbWUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gR1N0cmVh
bWVyJ3MgRkZUIHByb2Nlc3NpbmcKKyAgICAgICAgbGlicmFyeS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIGV4aXN0aW5nIFdlYkF1ZGlvIHRlc3RzIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWVTdHViLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJh
bWVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGRlRGcmFtZTo6Y2xlYW51cCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFt
ZTo6fkZGVEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjptdWx0aXBseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9GRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZU
RnJhbWU6OmRvSW52ZXJzZUZGVCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6cmVhbERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmltYWdEYXRhKToKKwogMjAxMi0wMS0y
MiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gUmVmYWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1
bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDA5NDNlNzAuLmQ1MTA1ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC01MDIsNiArNTAyLDEwIEBAIEZFQVRVUkVfREVGSU5FUyArPSBFTkFCTEVf
V0VCX0FVRElPPTEKIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfV0VCX0FVRElPPTEKIGVu
ZGlmCiAKK2lmIFVTRV9XRUJBVURJT19HU1RSRUFNRVIKK3dlYmNvcmVfY3BwZmxhZ3MgKz0gLURX
VEZfVVNFX1dFQkFVRElPX0dTVFJFQU1FUj0xCitlbmRpZgorCiAjIC0tLS0KICMgV2ViIFNvY2tl
dHMgU3VwcG9ydAogIyAtLS0tCkBAIC04NTcsNyArODYxLDYgQEAgbGliV2ViQ29yZUd0a19sYV9D
UFBGTEFHUyA9IFwKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1MpIFwKIAkk
KEhJTERPTl9DRkxBR1MpIFwKLQkkKExJQkZGVFdfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFH
UykgXAogCSQoTElCWE1MX0NGTEFHUykgXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDQzMjFiOTMuLjQyM2UxYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNTM4Miw2ICs1MzgyLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0ZpbGVSZWFkZXJHU3RyZWFtZXIuY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVk
aW9Tb3VyY2VHU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3RrL0F1ZGlvQnVzR3RrLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggMDQyNjMzYy4uZGIxZDA0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC00Nyw2ICs0NywxMyBAQAogI2luY2x1
ZGUgIm1rbF9kZnRpLmgiCiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX01LTCkKIAorI2lmIFVTRShX
RUJBVURJT19HU1RSRUFNRVIpCisjaW5jbHVkZSA8Z2xpYi5oPgorR19CRUdJTl9ERUNMUworI2lu
Y2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMyLmg+CitHX0VORF9ERUNMUworI2VuZGlmIC8vIFVTRShX
RUJBVURJT19HU1RSRUFNRVIpCisKICNpZiBVU0UoV0VCQVVESU9fRkZNUEVHKQogc3RydWN0IFJE
RlRDb250ZXh0OwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCkBAIC0xNDYsNiArMTUz
LDE0IEBAIHByaXZhdGU6CiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYg
Ly8gVVNFKFdFQkFVRElPX0ZGTVBFRykKIAorI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisg
ICAgR3N0RkZURjMyKiBtX2ZmdDsKKyAgICBHc3RGRlRGMzIqIG1faW52ZXJzZUZmdDsKKyAgICBH
c3RGRlRGMzJDb21wbGV4KiBtX2NvbXBsZXhEYXRhOworICAgIEF1ZGlvRmxvYXRBcnJheSBtX3Jl
YWxEYXRhOworICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOworI2VuZGlmIC8vIFVTRShX
RUJBVURJT19HU1RSRUFNRVIpCisKICNlbmRpZiAvLyAhVVNFX0FDQ0VMRVJBVEVfRkZUCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcAppbmRl
eCBkZmM1MmEyLi5hYTI2ZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZVN0dWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lU3R1Yi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVE
SU8pCiAKLSNpZiAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJB
VURJT19GRk1QRUcpCisjaWYgIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFV
U0UoV0VCQVVESU9fRkZNUEVHKSAmJiAhVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2luY2x1
ZGUgIkZGVEZyYW1lLmgiCiAKQEAgLTEwMiw2ICsxMDIsNiBAQCBmbG9hdCogRkZURnJhbWU6Omlt
YWdEYXRhKCkgY29uc3QKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gIU9T
KERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpCisjZW5kaWYgLy8gIU9TKERBUldJTikgJiYg
IVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOTM2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
CkBAIC0wLDAgKzEsMTgwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5M
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisvLyBGRlRGcmFtZSBpbXBsZW1lbnRh
dGlvbiB1c2luZyB0aGUgR1N0cmVhbWVyIEZGVCBsaWJyYXJ5LgorCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorCisjaW5jbHVkZSAiRkZURnJhbWUu
aCIKKworbmFtZXNwYWNlIHsKKwordW5zaWduZWQgdW5wYWNrZWRGRlREYXRhU2l6ZSh1bnNpZ25l
ZCBmZnRTaXplKQoreworICAgIHJldHVybiBmZnRTaXplIC8gMiArIDE7Cit9CisKK30gLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIE5vcm1hbCBjb25z
dHJ1Y3RvcjogYWxsb2NhdGVzIGZvciBhIGdpdmVuIGZmdFNpemUuCitGRlRGcmFtZTo6RkZURnJh
bWUodW5zaWduZWQgZmZ0U2l6ZSkKKyAgICA6IG1fRkZUU2l6ZShmZnRTaXplKQorICAgICwgbV9s
b2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihmZnRTaXplKSkpCisgICAgLCBt
X3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkKKyAgICAsIG1faW1hZ0Rh
dGEodW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKQoreworICAgIG1fY29tcGxleERhdGEg
PSBnX25ldyhHc3RGRlRGMzJDb21wbGV4LCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkp
OworCisgICAgaW50IGZmdExlbmd0aCA9IGdzdF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNp
emUpOworICAgIG1fZmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAg
IG1faW52ZXJzZUZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIFRSVUUpOworfQorCisv
LyBDcmVhdGVzIGEgYmxhbmsvZW1wdHkgZnJhbWUgKGludGVycG9sYXRlKCkgbXVzdCBsYXRlciBi
ZSBjYWxsZWQpLgorRkZURnJhbWU6OkZGVEZyYW1lKCkKKyAgICA6IG1fRkZUU2l6ZSgwKQorICAg
ICwgbV9sb2cyRkZUU2l6ZSgwKQorICAgICwgbV9jb21wbGV4RGF0YSgwKQoreworICAgIGludCBm
ZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2Zm
dCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQg
PSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKworLy8gQ29weSBjb25zdHJ1
Y3Rvci4KK0ZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCisgICAgOiBt
X0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQorICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xv
ZzJGRlRTaXplKQorICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1f
RkZUU2l6ZSkpCisgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9G
RlRTaXplKSkKK3sKKyAgICBtX2NvbXBsZXhEYXRhID0gZ19uZXcoR3N0RkZURjMyQ29tcGxleCwg
dW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBmZnRMZW5ndGggPSBn
c3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9IGdzdF9mZnRf
ZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQgPSBnc3RfZmZ0X2Yz
Ml9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKKworICAgIC8vIENvcHkvc2V0dXAgZnJhbWUgZGF0YS4K
KyAgICBtZW1jcHkocmVhbERhdGEoKSwgZnJhbWUucmVhbERhdGEoKSwgc2l6ZW9mKGZsb2F0KSAq
IHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7CisgICAgbWVtY3B5KGltYWdEYXRhKCks
IGZyYW1lLmltYWdEYXRhKCksIHNpemVvZihmbG9hdCkgKiB1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpOworfQorCit2b2lkIEZGVEZyYW1lOjppbml0aWFsaXplKCkKK3sKK30KKwordm9p
ZCBGRlRGcmFtZTo6Y2xlYW51cCgpCit7Cit9CisKK0ZGVEZyYW1lOjp+RkZURnJhbWUoKQorewor
ICAgIGlmICghbV9mZnQpCisgICAgICAgIHJldHVybjsKKworICAgIGdzdF9mZnRfZjMyX2ZyZWUo
bV9mZnQpOworICAgIG1fZmZ0ID0gMDsKKworICAgIGdzdF9mZnRfZjMyX2ZyZWUobV9pbnZlcnNl
RmZ0KTsKKyAgICBtX2ludmVyc2VGZnQgPSAwOworCisgICAgZ19mcmVlKG1fY29tcGxleERhdGEp
OworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCit7
CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0aGlzOworICAgIEZGVEZyYW1lJiBmcmFtZTIgPSBj
b25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUpOworCisgICAgZmxvYXQqIHJlYWxQMSA9IGZyYW1l
MS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBpbWFnUDEgPSBmcmFtZTEuaW1hZ0RhdGEoKTsKKyAg
ICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUyLnJlYWxEYXRhKCk7CisgICAgY29uc3QgZmxv
YXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0YSgpOworCisgICAgLy8gU2NhbGUgYWNjb3VudHMg
dGhlIHBlY3VsaWFyIHNjYWxpbmcgb2YgdmVjTGliIG9uIHRoZSBNYWMuCisgICAgLy8gVGhpcyBl
bnN1cmVzIHRoZSByaWdodCBzY2FsaW5nIGFsbCB0aGUgd2F5IGJhY2sgdG8gaW52ZXJzZSBGRlQu
CisgICAgLy8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgc2NhbGluZyBvbiB0aGUgTWFjIHRoZW4g
dGhpcyBzY2FsZQorICAgIC8vIGZhY3RvciB3aWxsIG5lZWQgdG8gY2hhbmdlIHRvby4KKyAgICBm
bG9hdCBzY2FsZSA9IDAuNWY7CisKKyAgICAvLyBDb21wbGV4IG11bHRpcGxpY2F0aW9uLiBJZiB0
aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuCisgICAgLy8gd2Ugc2hvdWxkIHVzZSBT
U0Ugb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsraSkgeworICAg
ICAgICBmbG9hdCByZWFsUmVzdWx0ID0gcmVhbFAxW2ldICogcmVhbFAyW2ldIC0gaW1hZ1AxW2ld
ICogaW1hZ1AyW2ldOworICAgICAgICBmbG9hdCBpbWFnUmVzdWx0ID0gcmVhbFAxW2ldICogaW1h
Z1AyW2ldICsgaW1hZ1AxW2ldICogcmVhbFAyW2ldOworCisgICAgICAgIHJlYWxQMVtpXSA9IHNj
YWxlICogcmVhbFJlc3VsdDsKKyAgICAgICAgaW1hZ1AxW2ldID0gc2NhbGUgKiBpbWFnUmVzdWx0
OworICAgIH0KK30KKwordm9pZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxvYXQqIGRhdGEpCit7
CisgICAgZ3N0X2ZmdF9mMzJfZmZ0KG1fZmZ0LCBkYXRhLCBtX2NvbXBsZXhEYXRhKTsKKworICAg
IC8vIFNjYWxlIHRoZSBmcmVxdWVuY3kgZG9tYWluIGRhdGEgdG8gbWF0Y2ggdmVjTGliJ3Mgc2Nh
bGUgZmFjdG9yCisgICAgLy8gb24gdGhlIE1hYy4gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgZGVm
aW5pdGlvbiBvZiBGRlRGcmFtZSB0bworICAgIC8vIGVsaW1pbmF0ZSB0aGlzIHNjYWxlIGZhY3Rv
ciB0aGVuIHRoaXMgY29kZSB3aWxsIG5lZWQgdG8gY2hhbmdlLgorICAgIC8vIEFsc28sIGlmIHRo
aXMgbG9vcCB0dXJucyBvdXQgdG8gYmUgaG90IHRoZW4gd2Ugc2hvdWxkIHVzZSBTU0UKKyAgICAv
LyBvciBvdGhlciBpbnRyaW5zaWNzIHRvIGFjY2VsZXJhdGUgaXQuCisgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSAyOworCisgICAgZmxvYXQqIGltYWdEYXRhID0gbV9pbWFnRGF0YS5kYXRhKCk7Cisg
ICAgZmxvYXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKTsgKytpKSB7CisgICAg
ICAgIGltYWdEYXRhW2ldID0gbV9jb21wbGV4RGF0YVtpXS5pICogc2NhbGVGYWN0b3I7CisgICAg
ICAgIHJlYWxEYXRhW2ldID0gbV9jb21wbGV4RGF0YVtpXS5yICogc2NhbGVGYWN0b3I7CisgICAg
fQorfQorCit2b2lkIEZGVEZyYW1lOjpkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpCit7CisgICAg
Ly8gIE1lcmdlIHRoZSByZWFsIGFuZCBpbWFnaW5hcnkgdmVjdG9ycyB0byBjb21wbGV4IHZlY3Rv
ci4KKyAgICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEoKTsKKyAgICBmbG9hdCog
aW1hZ0RhdGEgPSBtX2ltYWdEYXRhLmRhdGEoKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsraSkgeworICAgICAgICBtX2Nv
bXBsZXhEYXRhW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgbV9jb21wbGV4RGF0YVtpXS5y
ID0gcmVhbERhdGFbaV07CisgICAgfQorCisgICAgZ3N0X2ZmdF9mMzJfaW52ZXJzZV9mZnQobV9p
bnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLCBkYXRhKTsKKworICAgIC8vIFNjYWxlIHNvIHRoYXQg
YSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0bHkgdGhlIG9yaWdpbmFsIGRh
dGEuCisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAgLyAoMiAqIG1fRkZUU2l6ZSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fRkZUU2l6ZTsgKytpKQorICAgICAgICBk
YXRhW2ldICo9IHNjYWxlRmFjdG9yOworfQorCitmbG9hdCogRkZURnJhbWU6OnJlYWxEYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERhdGEuZGF0YSgp
KTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggZWRiYzAwMi4uYWJjMDNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTAxLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBSZW1vdmUgbGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKwogMjAxMi0wMS0yMiAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVm
YWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU3NjhkYjcuLjI0NzIyMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCkBAIC02OCw3ICs2OCw2IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJ
JChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdT
KSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhN
TF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC0xMDEsNyArMTAwLDYgQEAgbGli
d2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJTKSBcCiAJJChISUxET05fTElCUykgXAog
CSQoSlBFR19MSUJTKSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKExJQlNPVVBfTElCUykgXAog
CSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGIxMWNm
ZmMuLjQyZDlkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0xOSAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIGxpYmZmdHcgY29tcGls
YXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIE1ha2UgV2ViS2l0MiByZW1lbWJlciB0aGUgaGVpZ2h0IG9mIHRo
ZSBXZWIgSW5zcGVjdG9yIHdoZW4gaXQgaXMgZG9ja2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRl
eCAyY2IxY2U3Li5kZjE4MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTQ1NCw3ICsxNDU0
LDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9IFwKIAkkKFhSRU5ERVJf
TElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAotCSQoTElCRkZUV19MSUJT
KSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERGTEFH
UyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiMDI1
NmYzLi5mMjdjNjU1IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFj
CkBAIC03NDYsNyArNzQ2LDExIEBAIEFDX0FSR19FTkFCTEUod2ViX3NvY2tldHMsCiBBQ19NU0df
UkVTVUxUKFskZW5hYmxlX3dlYl9zb2NrZXRzXSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJs
ZSBXZWIgQXVkaW8gc3VwcG9ydAotZW5hYmxlX3dlYl9hdWRpbz1ubworQUNfTVNHX0NIRUNLSU5H
KFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKHdl
Yl9hdWRpbywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdlYi1hdWRp
b10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgV2Vi
IEF1ZGlvIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dlYl9hdWRp
bz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2ViX2F1ZGlvXSkKIAogIyBjaGVjayB3
aGV0aGVyIHRvIGVuYWJsZSBXZWIgVGltaW5nIHN1cHBvcnQKQEAgLTEwMjcsNiArMTAzMSw3IEBA
IGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVk
aW8iID0gInllcyI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXItMC4xMCA+
PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJl
YW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWF1ZGlvLTAuMTAK
KyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1mZnQtMC4xMAogICAgICAgICAgICAgICAg
ICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVy
LWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMt
MC4xMApAQCAtMTAzOCwxNiArMTA0Myw2IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInll
cyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNU
KFtHU1RSRUFNRVJfTElCU10pCiBmaQogCi0jIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxl
Ci1pZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgotICAgUEtHX0NIRUNL
X01PRFVMRVMoW0xJQkZGVFddLAotICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJG
RlRXX1JFUVVJUkVEX1ZFUlNJT04KLSAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElC
RkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKLSAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9
eWVzXSkKLQotICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCi0gICAgQUNfU1VCU1QoW0xJ
QkZGVFdfTElCU10pCi1maQogCiBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGlu
ZyIgPSAiY2x1dHRlciI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKENMVVRURVIsIGNsdXR0
ZXItMS4wID49ICRDTFVUVEVSX1JFUVVJUkVEX1ZFUlNJT04pCkBAIC0xMTQyLDYgKzExMzcsNyBA
QCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIg
PSAicGFuZ28iXSkKIAogIyBHU3RyZWFtZXIgZmVhdHVyZSBjb25kaXRpb25hbAogQU1fQ09ORElU
SU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVfZ3N0cmVhbWVyIiA9ICJ5ZXMiXSkK
K0FNX0NPTkRJVElPTkFMKFtVU0VfV0VCQVVESU9fR1NUUkVBTUVSXSwgW3Rlc3QgIiRlbmFibGVf
d2ViX2F1ZGlvIiA9ICJ5ZXMiXSkKIAogIyBBVFNQSTIgY29uZGl0aW9uYWwKIEFNX0NPTkRJVElP
TkFMKFtIQVZFX0FUU1BJMl0sIFt0ZXN0ICIkaGF2ZV9hdHNwaTIiID0gInllcyJdKQotLSAKMS43
LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123952</attachid>
            <date>2012-01-25 09:11:20 -0800</date>
            <delta_ts>2012-01-25 09:48:42 -0800</delta_ts>
            <desc>GstFFTFrame</desc>
            <filename>GstFFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17695</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA3MWRjMjBhOTY5ODVmY2UxNWU3NGQxNGE3ODVhY2MzZTg0OGE0MDc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI1IEphbiAyMDEyIDE3OjE3OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
R3N0RkZURnJhbWUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKwogLi4uL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1
dGlvbi10ZXN0aW5nLmpzICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTUgKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAgNCArLQog
Li4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgfCAgMTgx
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstLQogMTQgZmlsZXMgY2hh
bmdlZCwgMjc4IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJl
YW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTZmMzZk
ZS4uYTcxMjgzNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTAxLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4gYW5kIHJlbW92ZQorICAgICAgICBs
aWJmZnR3IGNoZWNrcy4KKwogMjAxMi0wMS0yNSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVp
bmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50IHJl
Z2lzdGVyaW5nIG9mIDxzdHlsZSBzY29wZWQ+IHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDY4OTIzMzIuLjVhYzI3OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0yNSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJl
YW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVz
dGluZy5qczoKKyAgICAgICAgKGNoZWNrVGFpbDEpOiBBZGFwdCBjb252b2x1dGlvbiB0aHJlc2hv
bGQgZm9yIEdTdHJlYW1lckZGVEZyYW1lCisgICAgICAgIGltcGxlbWVudGF0aW9uLCBhcyBhZHZp
c2VkIGJ5IENocmlzIFJvZ2Vycy4KKwogMjAxMi0wMS0yNSAgWmFuIERvYmVyc2VrICA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFtHdGtdIFVwZGF0ZSBleHBlY3RlZCBsYXlvdXQg
dGVzdCByZXN1bHRzIGFmdGVyIHIxMDU2ODYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMKaW5kZXggMDFkMjcxNC4uZDdlZjhl
YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9u
LXRlc3RpbmcuanMKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0
aW9uLXRlc3RpbmcuanMKQEAgLTEyNywxMyArMTI3LDEzIEBAIGZ1bmN0aW9uIGNoZWNrVGFpbDEo
ZGF0YSwgcmVmZXJlbmNlLCBicmVha3BvaW50KSB7CiAKICAgICAvLyBUaGlzIHRocmVzaG9sZCBp
cyBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyB0aGUKICAgICAvLyB2YWx1
ZSBvZiB0YWlsMU1heERlY2liZWxzLgotICAgIHZhciB0aHJlc2hvbGQxID0gLTE0Ni43OworICAg
IHZhciB0aHJlc2hvbGQxID0gLTEyOS43OwogCiAgICAgdmFyIHRhaWwxTWF4RGVjaWJlbHMgPSBs
aW5lYXJUb0RlY2liZWwodGFpbDFNYXgvcmVmTWF4KTsKICAgICBpZiAodGFpbDFNYXhEZWNpYmVs
cyA8PSB0aHJlc2hvbGQxKSB7CiAgICAgICAgIHRlc3RQYXNzZWQoIkZpcnN0IHBhcnQgb2YgdGFp
bCBvZiBjb252b2x1dGlvbiBpcyBzdWZmaWNpZW50bHkgc21hbGwuIik7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgdGVzdEZhaWxlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlz
IG5vdCBzdWZmaWNpZW50bHkgc21hbGw6ICIgKyB0YWlsMU1heCArICIgZEIiKTsKKyAgICAgICAg
dGVzdEZhaWxlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlzIG5vdCBzdWZm
aWNpZW50bHkgc21hbGw6ICIgKyB0YWlsMU1heERlY2liZWxzICsgIiBkQiIpOwogICAgICAgICBp
c1plcm8gPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOWMyYzhiLi41MTU4NjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMjUgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1lIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZGVEZyYW1lIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEdTdHJlYW1lcidzIEZGVCBwcm9j
ZXNzaW5nCisgICAgICAgIGxpYnJhcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGlu
ZyBXZWJBdWRpbyB0ZXN0cyBjb3ZlciB0aGlzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRp
by9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6RkZURnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkZURnJhbWU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6RkZU
RnJhbWU6OmNsZWFudXApOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6On5GRlRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RkZURnJhbWU6OmRvRkZUKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ludmVy
c2VGRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OnJlYWxEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkZGVEZyYW1lOjppbWFnRGF0YSk6CisKIDIwMTItMDEtMjUgIFNhbWkgS3lvc3Rp
bGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xpcHBpbmcgb2YgcmVuZGVy
IGxheWVyIGJvdW5kYXJpZXMgZG9lcyBub3QgdGFrZSBwYWdlIHNjYWxlIGludG8gYWNjb3VudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyNGU5ZGUyLi5iYmU3NzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQpAQCAtNTAzLDYgKzUwMywxMCBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9B
VURJTz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCiBlbmRpZgog
CitpZiBVU0VfV0VCQVVESU9fR1NUUkVBTUVSCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EV1RGX1VT
RV9XRUJBVURJT19HU1RSRUFNRVI9MQorZW5kaWYKKwogIyAtLS0tCiAjIFdlYiBTb2NrZXRzIFN1
cHBvcnQKICMgLS0tLQpAQCAtODY0LDcgKzg2OCw2IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxB
R1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxE
T05fQ0ZMQUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwK
IAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCAyMTk1ODZmLi5kYWNjZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTU0MDQsNiArNTQwNCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291
cmNlR1N0cmVhbWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZS5oCmluZGV4IDA0MjYzM2MuLmRiMWQwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApAQCAtNDcsNiArNDcsMTMgQEAKICNpbmNsdWRlICJt
a2xfZGZ0aS5oIgogI2VuZGlmIC8vIFVTRShXRUJBVURJT19NS0wpCiAKKyNpZiBVU0UoV0VCQVVE
SU9fR1NUUkVBTUVSKQorI2luY2x1ZGUgPGdsaWIuaD4KK0dfQkVHSU5fREVDTFMKKyNpbmNsdWRl
IDxnc3QvZmZ0L2dzdGZmdGYzMi5oPgorR19FTkRfREVDTFMKKyNlbmRpZiAvLyBVU0UoV0VCQVVE
SU9fR1NUUkVBTUVSKQorCiAjaWYgVVNFKFdFQkFVRElPX0ZGTVBFRykKIHN0cnVjdCBSREZUQ29u
dGV4dDsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fRkZNUEVHKQpAQCAtMTQ2LDYgKzE1MywxNCBA
QCBwcml2YXRlOgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOwogI2VuZGlmIC8vIFVT
RShXRUJBVURJT19GRk1QRUcpCiAKKyNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorICAgIEdz
dEZGVEYzMiogbV9mZnQ7CisgICAgR3N0RkZURjMyKiBtX2ludmVyc2VGZnQ7CisgICAgR3N0RkZU
RjMyQ29tcGxleCogbV9jb21wbGV4RGF0YTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0
YTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKKyNlbmRpZiAvLyBVU0UoV0VCQVVE
SU9fR1NUUkVBTUVSKQorCiAjZW5kaWYgLy8gIVVTRV9BQ0NFTEVSQVRFX0ZGVAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKaW5kZXggZGZj
NTJhMi4uYWEyNmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWVTdHViLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRG
cmFtZVN0dWIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQog
Ci0jaWYgIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9f
RkZNUEVHKQorI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdF
QkFVRElPX0ZGTVBFRykgJiYgIVVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAKICNpbmNsdWRlICJG
RlRGcmFtZS5oIgogCkBAIC0xMDIsNiArMTAyLDYgQEAgZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0
YSgpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFPUyhEQVJX
SU4pICYmICFVU0UoV0VCQVVESU9fTUtMKQorI2VuZGlmIC8vICFPUyhEQVJXSU4pICYmICFVU0Uo
V0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iZWFlYWNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAt
MCwwICsxLDE4MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTAorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworLy8gRkZURnJhbWUgaW1wbGVtZW50YXRpb24g
dXNpbmcgdGhlIEdTdHJlYW1lciBGRlQgbGlicmFyeS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKKworI2luY2x1ZGUgIkZGVEZyYW1lLmgiCisj
aW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKworbmFtZXNwYWNlIHsKKworc2l6ZV90IHVu
cGFja2VkRkZURGF0YVNpemUodW5zaWduZWQgZmZ0U2l6ZSkKK3sKKyAgICByZXR1cm4gZmZ0U2l6
ZSAvIDIgKyAxOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBOb3JtYWwgY29uc3RydWN0b3I6IGFsbG9jYXRlcyBmb3IgYSBnaXZlbiBm
ZnRTaXplLgorRkZURnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVkIGZmdFNpemUpCisgICAgOiBtX0ZG
VFNpemUoZmZ0U2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxvZzIoZmZ0U2l6ZSkpKQorICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpCisgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXpl
KSkKK3sKKyAgICBtX2NvbXBsZXhEYXRhID0gV1RGOjpmYXN0TmV3QXJyYXk8R3N0RkZURjMyQ29t
cGxleD4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBmZnRMZW5n
dGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9IGdz
dF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQgPSBnc3Rf
ZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKworLy8gQ3JlYXRlcyBhIGJsYW5rL2Vt
cHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3QgbGF0ZXIgYmUgY2FsbGVkKS4KK0ZGVEZyYW1l
OjpGRlRGcmFtZSgpCisgICAgOiBtX0ZGVFNpemUoMCkKKyAgICAsIG1fbG9nMkZGVFNpemUoMCkK
KyAgICAsIG1fY29tcGxleERhdGEoMCkKK3sKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9u
ZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXco
ZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZm
dExlbmd0aCwgVFJVRSk7Cit9CisKKy8vIENvcHkgY29uc3RydWN0b3IuCitGRlRGcmFtZTo6RkZU
RnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQorICAgIDogbV9GRlRTaXplKGZyYW1lLm1fRkZU
U2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKKyAgICAsIG1f
cmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQorICAgICwgbV9p
bWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCit7CisgICAgbV9j
b21wbGV4RGF0YSA9IFdURjo6ZmFzdE5ld0FycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSk7CisKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9u
ZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXco
ZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZm
dExlbmd0aCwgVFJVRSk7CisKKyAgICAvLyBDb3B5L3NldHVwIGZyYW1lIGRhdGEuCisgICAgbWVt
Y3B5KHJlYWxEYXRhKCksIGZyYW1lLnJlYWxEYXRhKCksIHNpemVvZihmbG9hdCkgKiB1bnBhY2tl
ZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworICAgIG1lbWNweShpbWFnRGF0YSgpLCBmcmFtZS5p
bWFnRGF0YSgpLCBzaXplb2YoZmxvYXQpICogdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUp
KTsKK30KKwordm9pZCBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgRkZURnJh
bWU6OmNsZWFudXAoKQoreworfQorCitGRlRGcmFtZTo6fkZGVEZyYW1lKCkKK3sKKyAgICBpZiAo
IW1fZmZ0KQorICAgICAgICByZXR1cm47CisKKyAgICBnc3RfZmZ0X2YzMl9mcmVlKG1fZmZ0KTsK
KyAgICBtX2ZmdCA9IDA7CisKKyAgICBnc3RfZmZ0X2YzMl9mcmVlKG1faW52ZXJzZUZmdCk7Cisg
ICAgbV9pbnZlcnNlRmZ0ID0gMDsKKworICAgIFdURjo6ZmFzdERlbGV0ZUFycmF5KG1fY29tcGxl
eERhdGEpOworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJh
bWUpCit7CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0aGlzOworICAgIEZGVEZyYW1lJiBmcmFt
ZTIgPSBjb25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUpOworCisgICAgZmxvYXQqIHJlYWxQMSA9
IGZyYW1lMS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBpbWFnUDEgPSBmcmFtZTEuaW1hZ0RhdGEo
KTsKKyAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUyLnJlYWxEYXRhKCk7CisgICAgY29u
c3QgZmxvYXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0YSgpOworCisgICAgLy8gU2NhbGUgYWNj
b3VudHMgdGhlIHBlY3VsaWFyIHNjYWxpbmcgb2YgdmVjTGliIG9uIHRoZSBNYWMuCisgICAgLy8g
VGhpcyBlbnN1cmVzIHRoZSByaWdodCBzY2FsaW5nIGFsbCB0aGUgd2F5IGJhY2sgdG8gaW52ZXJz
ZSBGRlQuCisgICAgLy8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgc2NhbGluZyBvbiB0aGUgTWFj
IHRoZW4gdGhpcyBzY2FsZQorICAgIC8vIGZhY3RvciB3aWxsIG5lZWQgdG8gY2hhbmdlIHRvby4K
KyAgICBmbG9hdCBzY2FsZSA9IDAuNWY7CisKKyAgICAvLyBDb21wbGV4IG11bHRpcGxpY2F0aW9u
LiBJZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuCisgICAgLy8gd2Ugc2hvdWxk
IHVzZSBTU0Ugb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsK
KyAgICAgICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGltYWdQ
MVtpXSAqIGltYWdQMltpXTsKKyAgICAgICAgZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtpXSAq
IGltYWdQMltpXSArIGltYWdQMVtpXSAqIHJlYWxQMltpXTsKKworICAgICAgICByZWFsUDFbaV0g
PSBzY2FsZSAqIHJlYWxSZXN1bHQ7CisgICAgICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1hZ1Jl
c3VsdDsKKyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBkYXRh
KQoreworICAgIGdzdF9mZnRfZjMyX2ZmdChtX2ZmdCwgZGF0YSwgbV9jb21wbGV4RGF0YSk7CisK
KyAgICAvLyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidz
IHNjYWxlIGZhY3RvcgorICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhl
IGRlZmluaXRpb24gb2YgRkZURnJhbWUgdG8KKyAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBm
YWN0b3IgdGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KKyAgICAvLyBBbHNvLCBp
ZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NFCisg
ICAgLy8gb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gMjsKKworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgp
OworICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsKKyAg
ICAgICAgaW1hZ0RhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLmkgKiBzY2FsZUZhY3RvcjsKKyAg
ICAgICAgcmVhbERhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLnIgKiBzY2FsZUZhY3RvcjsKKyAg
ICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKK3sKKyAg
ICAvLyAgTWVyZ2UgdGhlIHJlYWwgYW5kIGltYWdpbmFyeSB2ZWN0b3JzIHRvIGNvbXBsZXggdmVj
dG9yLgorICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIGZsb2F0
KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsraSkgeworICAgICAgICBtX2Nv
bXBsZXhEYXRhW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgbV9jb21wbGV4RGF0YVtpXS5y
ID0gcmVhbERhdGFbaV07CisgICAgfQorCisgICAgZ3N0X2ZmdF9mMzJfaW52ZXJzZV9mZnQobV9p
bnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLCBkYXRhKTsKKworICAgIC8vIFNjYWxlIHNvIHRoYXQg
YSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0bHkgdGhlIG9yaWdpbmFsIGRh
dGEuCisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAgLyAoMiAqIG1fRkZUU2l6ZSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fRkZUU2l6ZTsgKytpKQorICAgICAgICBk
YXRhW2ldICo9IHNjYWxlRmFjdG9yOworfQorCitmbG9hdCogRkZURnJhbWU6OnJlYWxEYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERhdGEuZGF0YSgp
KTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggZDQ0OTQ2NC4uZGRiZGExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDEyLTAxLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBSZW1vdmUgbGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKwogMjAxMi0wMS0yMyAgTWFyaW8g
U2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVm
YWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU3NjhkYjcuLjI0NzIyMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCkBAIC02OCw3ICs2OCw2IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RLX0FQ
SV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBGCiAJ
JChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdT
KSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhN
TF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC0xMDEsNyArMTAwLDYgQEAgbGli
d2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01J
Tk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJTKSBcCiAJJChISUxET05fTElCUykgXAog
CSQoSlBFR19MSUJTKSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKExJQlNPVVBfTElCUykgXAog
CSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI3MDg0
YWMuLjM1OTQxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0yNSAgUGhp
bGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1l
cl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIGxpYmZmdHcgY29tcGls
YXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMjQgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl0gRmluZENvbnRyb2xsZXIgc2hvdWxkIG5vdCBh
c3N1bWUgdGhhdCBwb3J0cyBkbyBub3Qgd2FudCB0byBoaWdobGlnaHQgdGV4dCBtYXRjaGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDgwMTk4NDc2Li4yNjI3NDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQpAQCAtMTQ2MCw3ICsxNDYwLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19M
REFERCA9IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lOTU1fTElC
UykgXAotCSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1zX1dlYktp
dFBsdWdpblByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2Nv
bmZpZ3VyZS5hYwppbmRleCBiMDI1NmYzLi5mMjdjNjU1IDEwMDY0NAotLS0gYS9jb25maWd1cmUu
YWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC03NDYsNyArNzQ2LDExIEBAIEFDX0FSR19FTkFCTEUo
d2ViX3NvY2tldHMsCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3dlYl9zb2NrZXRzXSkKIAogIyBj
aGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9ydAotZW5hYmxlX3dlYl9hdWRp
bz1ubworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9y
dF0pCitBQ19BUkdfRU5BQkxFKHdlYl9hdWRpbywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJ
TkcoWy0tZW5hYmxlLXdlYi1hdWRpb10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtl
bmFibGUgc3VwcG9ydCBmb3IgV2ViIEF1ZGlvIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAg
ICBbXSxbZW5hYmxlX3dlYl9hdWRpbz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2Vi
X2F1ZGlvXSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgVGltaW5nIHN1cHBvcnQK
QEAgLTEwMjcsNiArMTAzMSw3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwg
dGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgICAgICAgICAgICAgICAg
ICAgIFtnc3RyZWFtZXItMC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAg
ICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAg
Z3N0cmVhbWVyLWF1ZGlvLTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1mZnQt
MC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAogICAgICAgICAg
ICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAgICAg
ICAgZ3N0cmVhbWVyLXBidXRpbHMtMC4xMApAQCAtMTAzOCwxNiArMTA0Myw2IEBAIGlmIHRlc3Qg
IiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInll
cyI7IHRoZW4KICAgIEFDX1NVQlNUKFtHU1RSRUFNRVJfTElCU10pCiBmaQogCi0jIGNoZWNrIGlm
IGxpYmZmdHcgaXMgYXZhaWxhYmxlCi1pZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVz
IjsgdGhlbgotICAgUEtHX0NIRUNLX01PRFVMRVMoW0xJQkZGVFddLAotICAgICAgICAgICAgICAg
ICAgICAgW2ZmdHczID49ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT04KLSAgICAgICAgICAgICAg
ICAgICAgIGZmdHczZiA+PSAkTElCRkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKLSAgICAgICAgICAg
ICAgICAgICAgIFtoYXZlX2ZmdHc9eWVzXSkKLQotICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFH
U10pCi0gICAgQUNfU1VCU1QoW0xJQkZGVFdfTElCU10pCi1maQogCiBpZiB0ZXN0ICIkd2l0aF9h
Y2NlbGVyYXRlZF9jb21wb3NpdGluZyIgPSAiY2x1dHRlciI7IHRoZW4KICAgIFBLR19DSEVDS19N
T0RVTEVTKENMVVRURVIsIGNsdXR0ZXItMS4wID49ICRDTFVUVEVSX1JFUVVJUkVEX1ZFUlNJT04p
CkBAIC0xMTQyLDYgKzExMzcsNyBAQCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3Qg
IiR3aXRoX2ZvbnRfYmFja2VuZCIgPSAicGFuZ28iXSkKIAogIyBHU3RyZWFtZXIgZmVhdHVyZSBj
b25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVf
Z3N0cmVhbWVyIiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtVU0VfV0VCQVVESU9fR1NUUkVB
TUVSXSwgW3Rlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiXSkKIAogIyBBVFNQSTIgY29u
ZGl0aW9uYWwKIEFNX0NPTkRJVElPTkFMKFtIQVZFX0FUU1BJMl0sIFt0ZXN0ICIkaGF2ZV9hdHNw
aTIiID0gInllcyJdKQotLSAKMS43LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123962</attachid>
            <date>2012-01-25 09:48:42 -0800</date>
            <delta_ts>2012-01-26 02:51:22 -0800</delta_ts>
            <desc>GstFFTFrame</desc>
            <filename>GstFFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17691</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBjZTQzNmU2MjFjYjAwZDIzYmNiNDQxNzQyZDdjOTg5ODM5ZWVkYmY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI1IEphbiAyMDEyIDE3OjE3OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
R3N0RkZURnJhbWUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKwogLi4uL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1
dGlvbi10ZXN0aW5nLmpzICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTUgKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAgNCArLQog
Li4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgfCAgMTgy
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstLQogMTQgZmlsZXMgY2hh
bmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJl
YW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTZmMzZk
ZS4uYTcxMjgzNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTAxLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4gYW5kIHJlbW92ZQorICAgICAgICBs
aWJmZnR3IGNoZWNrcy4KKwogMjAxMi0wMS0yNSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVp
bmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50IHJl
Z2lzdGVyaW5nIG9mIDxzdHlsZSBzY29wZWQ+IHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDgyMjQxMmEuLjFmNWY4MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMi0wMS0yNSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dTdHJl
YW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVz
dGluZy5qczoKKyAgICAgICAgKGNoZWNrVGFpbDEpOiBBZGFwdCBjb252b2x1dGlvbiB0aHJlc2hv
bGQgZm9yIEdTdHJlYW1lckZGVEZyYW1lCisgICAgICAgIGltcGxlbWVudGF0aW9uLCBhcyBhZHZp
c2VkIGJ5IENocmlzIFJvZ2Vycy4KKworMjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUg
YW5kIHNraXAgbmV3IHRpbWluZy1vdXQgbWVkaWEgdGVzdC4KIAogICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2Vz
L2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMv
Y29udm9sdXRpb24tdGVzdGluZy5qcwppbmRleCAwMWQyNzE0Li5kN2VmOGVhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5q
cwpAQCAtMTI3LDEzICsxMjcsMTMgQEAgZnVuY3Rpb24gY2hlY2tUYWlsMShkYXRhLCByZWZlcmVu
Y2UsIGJyZWFrcG9pbnQpIHsKIAogICAgIC8vIFRoaXMgdGhyZXNob2xkIGlzIGV4cGVyaW1lbnRh
bGx5IGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZQogICAgIC8vIHZhbHVlIG9mIHRhaWwxTWF4
RGVjaWJlbHMuCi0gICAgdmFyIHRocmVzaG9sZDEgPSAtMTQ2Ljc7CisgICAgdmFyIHRocmVzaG9s
ZDEgPSAtMTI5Ljc7CiAKICAgICB2YXIgdGFpbDFNYXhEZWNpYmVscyA9IGxpbmVhclRvRGVjaWJl
bCh0YWlsMU1heC9yZWZNYXgpOwogICAgIGlmICh0YWlsMU1heERlY2liZWxzIDw9IHRocmVzaG9s
ZDEpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0
aW9uIGlzIHN1ZmZpY2llbnRseSBzbWFsbC4iKTsKICAgICB9IGVsc2UgewotICAgICAgICB0ZXN0
RmFpbGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2ll
bnRseSBzbWFsbDogIiArIHRhaWwxTWF4ICsgIiBkQiIpOworICAgICAgICB0ZXN0RmFpbGVkKCJG
aXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2llbnRseSBzbWFs
bDogIiArIHRhaWwxTWF4RGVjaWJlbHMgKyAiIGRCIik7CiAgICAgICAgIGlzWmVybyA9IGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFhNDIzYWQuLjFkMjdiN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRkZURnJhbWUg
aW1wbGVtZW50YXRpb24gYmFzZWQgb24gR1N0cmVhbWVyJ3MgRkZUIHByb2Nlc3NpbmcKKyAgICAg
ICAgbGlicmFyeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIFdlYkF1ZGlvIHRl
c3RzIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RlRGcmFtZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6Y2xlYW51
cCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6fkZGVEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkZGVEZyYW1lOjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6
ZG9GRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvSW52ZXJzZUZGVCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6cmVhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RkZU
RnJhbWU6OmltYWdEYXRhKToKKwogMjAxMi0wMS0yNSAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4K
IAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzNzcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjRlOWRlMi4uYmJlNzc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTUwMyw2ICs1MDMsMTAgQEAgRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9XRUJf
QVVESU89MQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9XRUJfQVVESU89MQogZW5kaWYK
IAoraWYgVVNFX1dFQkFVRElPX0dTVFJFQU1FUgord2ViY29yZV9jcHBmbGFncyArPSAtRFdURl9V
U0VfV0VCQVVESU9fR1NUUkVBTUVSPTEKK2VuZGlmCisKICMgLS0tLQogIyBXZWIgU29ja2V0cyBT
dXBwb3J0CiAjIC0tLS0KQEAgLTg2NCw3ICs4NjgsNiBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZM
QUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoSElM
RE9OX0NGTEFHUykgXAotCSQoTElCRkZUV19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBc
CiAJJChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggMjE5NTg2Zi4uZGFjY2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC01NDA0LDYgKzU0MDQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWUuaAppbmRleCAwNDI2MzNjLi5kYjFkMDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ3LDYgKzQ3LDEzIEBACiAjaW5jbHVkZSAi
bWtsX2RmdGkuaCIKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fTUtMKQogCisjaWYgVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKyNpbmNsdWRlIDxnbGliLmg+CitHX0JFR0lOX0RFQ0xTCisjaW5jbHVk
ZSA8Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KK0dfRU5EX0RFQ0xTCisjZW5kaWYgLy8gVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKwogI2lmIFVTRShXRUJBVURJT19GRk1QRUcpCiBzdHJ1Y3QgUkRGVENv
bnRleHQ7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKQEAgLTE0Niw2ICsxNTMsMTQg
QEAgcHJpdmF0ZToKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBV
U0UoV0VCQVVESU9fRkZNUEVHKQogCisjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKKyAgICBH
c3RGRlRGMzIqIG1fZmZ0OworICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OworICAgIEdzdEZG
VEYzMkNvbXBsZXgqIG1fY29tcGxleERhdGE7CisgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERh
dGE7CisgICAgQXVkaW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CisjZW5kaWYgLy8gVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKwogI2VuZGlmIC8vICFVU0VfQUNDRUxFUkFURV9GRlQKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCmluZGV4IGRm
YzUyYTIuLmFhMjZlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lU3R1Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWVTdHViLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAotI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElP
X0ZGTVBFRykKKyNpZiAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShX
RUJBVURJT19GRk1QRUcpICYmICFVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAi
RkZURnJhbWUuaCIKIApAQCAtMTAyLDYgKzEwMiw2IEBAIGZsb2F0KiBGRlRGcmFtZTo6aW1hZ0Rh
dGEoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhT1MoREFS
V0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkKKyNlbmRpZiAvLyAhT1MoREFSV0lOKSAmJiAhVVNF
KFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uODk4NmQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKQEAg
LTAsMCArMSwxODIgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKy8vIEZGVEZyYW1lIGltcGxlbWVudGF0aW9u
IHVzaW5nIHRoZSBHU3RyZWFtZXIgRkZUIGxpYnJhcnkuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgor
CisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKworbmFtZXNwYWNlIHsKKworc2l6ZV90
IHVucGFja2VkRkZURGF0YVNpemUodW5zaWduZWQgZmZ0U2l6ZSkKK3sKKyAgICByZXR1cm4gZmZ0
U2l6ZSAvIDIgKyAxOworfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBOb3JtYWwgY29uc3RydWN0b3I6IGFsbG9jYXRlcyBmb3IgYSBnaXZl
biBmZnRTaXplLgorRkZURnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVkIGZmdFNpemUpCisgICAgOiBt
X0ZGVFNpemUoZmZ0U2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGxvZzIoZmZ0U2l6ZSkpKQorICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXpl
KG1fRkZUU2l6ZSkpCisgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRT
aXplKSkKK3sKKyAgICBtX2NvbXBsZXhEYXRhID0gV1RGOjpmYXN0TmV3QXJyYXk8R3N0RkZURjMy
Q29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBmZnRM
ZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9
IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQgPSBn
c3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKworLy8gQ3JlYXRlcyBhIGJsYW5r
L2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3QgbGF0ZXIgYmUgY2FsbGVkKS4KK0ZGVEZy
YW1lOjpGRlRGcmFtZSgpCisgICAgOiBtX0ZGVFNpemUoMCkKKyAgICAsIG1fbG9nMkZGVFNpemUo
MCkKKyAgICAsIG1fY29tcGxleERhdGEoMCkKK3sKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2Zm
dF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9u
ZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3
KGZmdExlbmd0aCwgVFJVRSk7Cit9CisKKy8vIENvcHkgY29uc3RydWN0b3IuCitGRlRGcmFtZTo6
RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQorICAgIDogbV9GRlRTaXplKGZyYW1lLm1f
RkZUU2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKKyAgICAs
IG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQorICAgICwg
bV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCit7CisgICAg
bV9jb21wbGV4RGF0YSA9IFdURjo6ZmFzdE5ld0FycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFj
a2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7CisKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2Zm
dF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9u
ZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3
KGZmdExlbmd0aCwgVFJVRSk7CisKKyAgICAvLyBDb3B5L3NldHVwIGZyYW1lIGRhdGEuCisgICAg
bWVtY3B5KHJlYWxEYXRhKCksIGZyYW1lLnJlYWxEYXRhKCksIHNpemVvZihmbG9hdCkgKiB1bnBh
Y2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworICAgIG1lbWNweShpbWFnRGF0YSgpLCBmcmFt
ZS5pbWFnRGF0YSgpLCBzaXplb2YoZmxvYXQpICogdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNp
emUpKTsKK30KKwordm9pZCBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgRkZU
RnJhbWU6OmNsZWFudXAoKQoreworfQorCitGRlRGcmFtZTo6fkZGVEZyYW1lKCkKK3sKKyAgICBp
ZiAoIW1fZmZ0KQorICAgICAgICByZXR1cm47CisKKyAgICBnc3RfZmZ0X2YzMl9mcmVlKG1fZmZ0
KTsKKyAgICBtX2ZmdCA9IDA7CisKKyAgICBnc3RfZmZ0X2YzMl9mcmVlKG1faW52ZXJzZUZmdCk7
CisgICAgbV9pbnZlcnNlRmZ0ID0gMDsKKworICAgIFdURjo6ZmFzdERlbGV0ZUFycmF5KG1fY29t
cGxleERhdGEpOworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYg
ZnJhbWUpCit7CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0aGlzOworICAgIEZGVEZyYW1lJiBm
cmFtZTIgPSBjb25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUpOworCisgICAgZmxvYXQqIHJlYWxQ
MSA9IGZyYW1lMS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBpbWFnUDEgPSBmcmFtZTEuaW1hZ0Rh
dGEoKTsKKyAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUyLnJlYWxEYXRhKCk7CisgICAg
Y29uc3QgZmxvYXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0YSgpOworCisgICAgLy8gU2NhbGUg
YWNjb3VudHMgdGhlIHBlY3VsaWFyIHNjYWxpbmcgb2YgdmVjTGliIG9uIHRoZSBNYWMuCisgICAg
Ly8gVGhpcyBlbnN1cmVzIHRoZSByaWdodCBzY2FsaW5nIGFsbCB0aGUgd2F5IGJhY2sgdG8gaW52
ZXJzZSBGRlQuCisgICAgLy8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgc2NhbGluZyBvbiB0aGUg
TWFjIHRoZW4gdGhpcyBzY2FsZQorICAgIC8vIGZhY3RvciB3aWxsIG5lZWQgdG8gY2hhbmdlIHRv
by4KKyAgICBmbG9hdCBzY2FsZSA9IDAuNWY7CisKKyAgICAvLyBDb21wbGV4IG11bHRpcGxpY2F0
aW9uLiBJZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuCisgICAgLy8gd2Ugc2hv
dWxkIHVzZSBTU0Ugb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kp
IHsKKyAgICAgICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxQMVtpXSAqIHJlYWxQMltpXSAtIGlt
YWdQMVtpXSAqIGltYWdQMltpXTsKKyAgICAgICAgZmxvYXQgaW1hZ1Jlc3VsdCA9IHJlYWxQMVtp
XSAqIGltYWdQMltpXSArIGltYWdQMVtpXSAqIHJlYWxQMltpXTsKKworICAgICAgICByZWFsUDFb
aV0gPSBzY2FsZSAqIHJlYWxSZXN1bHQ7CisgICAgICAgIGltYWdQMVtpXSA9IHNjYWxlICogaW1h
Z1Jlc3VsdDsKKyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvRkZUKGNvbnN0IGZsb2F0KiBk
YXRhKQoreworICAgIGdzdF9mZnRfZjMyX2ZmdChtX2ZmdCwgZGF0YSwgbV9jb21wbGV4RGF0YSk7
CisKKyAgICAvLyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xp
YidzIHNjYWxlIGZhY3RvcgorICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2Ug
dGhlIGRlZmluaXRpb24gb2YgRkZURnJhbWUgdG8KKyAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2Fs
ZSBmYWN0b3IgdGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KKyAgICAvLyBBbHNv
LCBpZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NF
CisgICAgLy8gb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgorICAgIGZsb2F0
IHNjYWxlRmFjdG9yID0gMjsKKworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0
YSgpOworICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsK
KyAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLmkgKiBzY2FsZUZhY3RvcjsK
KyAgICAgICAgcmVhbERhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLnIgKiBzY2FsZUZhY3RvcjsK
KyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKK3sK
KyAgICAvLyAgTWVyZ2UgdGhlIHJlYWwgYW5kIGltYWdpbmFyeSB2ZWN0b3JzIHRvIGNvbXBsZXgg
dmVjdG9yLgorICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIGZs
b2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsraSkgeworICAgICAgICBt
X2NvbXBsZXhEYXRhW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgbV9jb21wbGV4RGF0YVtp
XS5yID0gcmVhbERhdGFbaV07CisgICAgfQorCisgICAgZ3N0X2ZmdF9mMzJfaW52ZXJzZV9mZnQo
bV9pbnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLCBkYXRhKTsKKworICAgIC8vIFNjYWxlIHNvIHRo
YXQgYSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0bHkgdGhlIG9yaWdpbmFs
IGRhdGEuCisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAgLyAoMiAqIG1fRkZUU2l6
ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fRkZUU2l6ZTsgKytpKQorICAgICAg
ICBkYXRhW2ldICo9IHNjYWxlRmFjdG9yOworfQorCitmbG9hdCogRkZURnJhbWU6OnJlYWxEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERhdGEuZGF0
YSgpKTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggZDQ0OTQ2NC4uZGRiZGExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTAxLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBSZW1vdmUgbGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKwogMjAxMi0wMS0yMyAgTWFy
aW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
UmVmYWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU3NjhkYjcuLjI0NzIyMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L0dOVW1ha2VmaWxlLmFtCkBAIC02OCw3ICs2OCw2IEBAIGxpYndlYmtpdGd0a19AV0VCS0lUR1RL
X0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFBG
CiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZM
QUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJ
QlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC0xMDEsNyArMTAwLDYgQEAg
bGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJTKSBcCiAJJChISUxET05fTElCUykg
XAogCSQoSlBFR19MSUJTKSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKExJQlNPVVBfTElCUykg
XAogCSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElCUykgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYy
MTRkZGQuLmY1ZjRkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0yNSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJl
YW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIGxpYmZmdHcgY29t
cGlsYXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMjUgIE7DoW5kb3IgSHVzemthICA8aHVzemthLm5h
bmRvckBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtXSzJdIFdlYktpdFRlc3RSdW5uZXIg
bmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0KaW5kZXggODAxOTg0NzYuLjI2Mjc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CkBAIC0xNDYwLDcgKzE0NjAsNiBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQURE
ID0gXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChXSU5NTV9MSUJTKSBc
Ci0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKFpMSUJfTElCUykKIAogUHJvZ3JhbXNfV2ViS2l0UGx1
Z2luUHJvY2Vzc19MREZMQUdTID0gXApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IGIwMjU2ZjMuLmYyN2M2NTUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTc0Niw3ICs3NDYsMTEgQEAgQUNfQVJHX0VOQUJMRSh3ZWJf
c29ja2V0cywKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2ViX3NvY2tldHNdKQogCiAjIGNoZWNr
IHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0Ci1lbmFibGVfd2ViX2F1ZGlvPW5v
CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0XSkK
K0FDX0FSR19FTkFCTEUod2ViX2F1ZGlvLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhb
LS1lbmFibGUtd2ViLWF1ZGlvXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJs
ZSBzdXBwb3J0IGZvciBXZWIgQXVkaW8gW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAgIFtd
LFtlbmFibGVfd2ViX2F1ZGlvPSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV93ZWJfYXVk
aW9dKQogCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBUaW1pbmcgc3VwcG9ydApAQCAt
MTAyNyw2ICsxMDMxLDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0
ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAg
W2dzdHJlYW1lci0wLjEwID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVSU0lPTgogICAgICAgICAg
ICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBnc3Ry
ZWFtZXItYXVkaW8tMC4xMAorICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWZmdC0wLjEw
CiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0wLjEwCiAgICAgICAgICAgICAg
ICAgICAgICBnc3RyZWFtZXItaW50ZXJmYWNlcy0wLjEwCiAgICAgICAgICAgICAgICAgICAgICBn
c3RyZWFtZXItcGJ1dGlscy0wLjEwCkBAIC0xMDM4LDE2ICsxMDQzLDYgQEAgaWYgdGVzdCAiJGVu
YWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsg
dGhlbgogICAgQUNfU1VCU1QoW0dTVFJFQU1FUl9MSUJTXSkKIGZpCiAKLSMgY2hlY2sgaWYgbGli
ZmZ0dyBpcyBhdmFpbGFibGUKLWlmIHRlc3QgIiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0
aGVuCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhbTElCRkZUV10sCi0gICAgICAgICAgICAgICAgICAg
ICBbZmZ0dzMgPj0gJExJQkZGVFdfUkVRVUlSRURfVkVSU0lPTgotICAgICAgICAgICAgICAgICAg
ICAgZmZ0dzNmID49ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT05dLAotICAgICAgICAgICAgICAg
ICAgICAgW2hhdmVfZmZ0dz15ZXNdKQotCi0gICAgQUNfU1VCU1QoW0xJQkZGVFdfQ0ZMQUdTXSkK
LSAgICBBQ19TVUJTVChbTElCRkZUV19MSUJTXSkKLWZpCiAKIGlmIHRlc3QgIiR3aXRoX2FjY2Vs
ZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJjbHV0dGVyIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVM
RVMoQ0xVVFRFUiwgY2x1dHRlci0xLjAgPj0gJENMVVRURVJfUkVRVUlSRURfVkVSU0lPTikKQEAg
LTExNDIsNiArMTEzNyw3IEBAIEFNX0NPTkRJVElPTkFMKFtVU0VfUEFOR09dLCBbdGVzdCAiJHdp
dGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJdKQogCiAjIEdTdHJlYW1lciBmZWF0dXJlIGNvbmRp
dGlvbmFsCiBBTV9DT05ESVRJT05BTChbVVNFX0dTVFJFQU1FUl0sIFt0ZXN0ICIkaGF2ZV9nc3Ry
ZWFtZXIiID0gInllcyJdKQorQU1fQ09ORElUSU9OQUwoW1VTRV9XRUJBVURJT19HU1RSRUFNRVJd
LCBbdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyJdKQogCiAjIEFUU1BJMiBjb25kaXRp
b25hbAogQU1fQ09ORElUSU9OQUwoW0hBVkVfQVRTUEkyXSwgW3Rlc3QgIiRoYXZlX2F0c3BpMiIg
PSAieWVzIl0pCi0tIAoxLjcuOC4z
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124088</attachid>
            <date>2012-01-26 02:51:22 -0800</date>
            <delta_ts>2012-01-31 03:17:20 -0800</delta_ts>
            <desc>GstFFTFrame</desc>
            <filename>GstFFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17794</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAyNTk5NjYzNWY3YjJkNmVjZjcwZGVjMDZlOWY2ZjFhYzBkNTNiZDZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI1IEphbiAyMDEyIDE3OjE3OjUzICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
R3N0RkZURnJhbWUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKwogLi4uL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1
dGlvbi10ZXN0aW5nLmpzICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTUgKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAgNCArLQog
Li4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgfCAgMTg0
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstLQogMTQgZmlsZXMgY2hh
bmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJl
YW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTZmMzZk
ZS4uYTcxMjgzNiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTAxLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4gYW5kIHJlbW92ZQorICAgICAgICBs
aWJmZnR3IGNoZWNrcy4KKwogMjAxMi0wMS0yNSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVp
bmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50IHJl
Z2lzdGVyaW5nIG9mIDxzdHlsZSBzY29wZWQ+IHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDgyMjQxMmEuLjFmNWY4MmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMi0wMS0yNSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dTdHJl
YW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVz
dGluZy5qczoKKyAgICAgICAgKGNoZWNrVGFpbDEpOiBBZGFwdCBjb252b2x1dGlvbiB0aHJlc2hv
bGQgZm9yIEdTdHJlYW1lckZGVEZyYW1lCisgICAgICAgIGltcGxlbWVudGF0aW9uLCBhcyBhZHZp
c2VkIGJ5IENocmlzIFJvZ2Vycy4KKworMjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBu
b3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUg
YW5kIHNraXAgbmV3IHRpbWluZy1vdXQgbWVkaWEgdGVzdC4KIAogICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9Ta2lwcGVkOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2Vz
L2NvbnZvbHV0aW9uLXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMv
Y29udm9sdXRpb24tdGVzdGluZy5qcwppbmRleCAwMWQyNzE0Li5kN2VmOGVhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcwor
KysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5q
cwpAQCAtMTI3LDEzICsxMjcsMTMgQEAgZnVuY3Rpb24gY2hlY2tUYWlsMShkYXRhLCByZWZlcmVu
Y2UsIGJyZWFrcG9pbnQpIHsKIAogICAgIC8vIFRoaXMgdGhyZXNob2xkIGlzIGV4cGVyaW1lbnRh
bGx5IGRldGVybWluZWQgYnkgZXhhbWluaW5nIHRoZQogICAgIC8vIHZhbHVlIG9mIHRhaWwxTWF4
RGVjaWJlbHMuCi0gICAgdmFyIHRocmVzaG9sZDEgPSAtMTQ2Ljc7CisgICAgdmFyIHRocmVzaG9s
ZDEgPSAtMTI5Ljc7CiAKICAgICB2YXIgdGFpbDFNYXhEZWNpYmVscyA9IGxpbmVhclRvRGVjaWJl
bCh0YWlsMU1heC9yZWZNYXgpOwogICAgIGlmICh0YWlsMU1heERlY2liZWxzIDw9IHRocmVzaG9s
ZDEpIHsKICAgICAgICAgdGVzdFBhc3NlZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0
aW9uIGlzIHN1ZmZpY2llbnRseSBzbWFsbC4iKTsKICAgICB9IGVsc2UgewotICAgICAgICB0ZXN0
RmFpbGVkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2ll
bnRseSBzbWFsbDogIiArIHRhaWwxTWF4ICsgIiBkQiIpOworICAgICAgICB0ZXN0RmFpbGVkKCJG
aXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29udm9sdXRpb24gaXMgbm90IHN1ZmZpY2llbnRseSBzbWFs
bDogIiArIHRhaWwxTWF4RGVjaWJlbHMgKyAiIGRCIik7CiAgICAgICAgIGlzWmVybyA9IGZhbHNl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFhNDIzYWQuLjFkMjdiN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRkZURnJhbWUg
aW1wbGVtZW50YXRpb24gYmFzZWQgb24gR1N0cmVhbWVyJ3MgRkZUIHByb2Nlc3NpbmcKKyAgICAg
ICAgbGlicmFyeS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGV4aXN0aW5nIFdlYkF1ZGlvIHRl
c3RzIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
RlRGcmFtZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6Y2xlYW51
cCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6fkZGVEZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkZGVEZyYW1lOjptdWx0aXBseSk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6
ZG9GRlQpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvSW52ZXJzZUZGVCk6CisgICAg
ICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6cmVhbERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RkZU
RnJhbWU6OmltYWdEYXRhKToKKwogMjAxMi0wMS0yNSAgWW9uZyBMaSAgPHlvbGlAcmltLmNvbT4K
IAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzNzcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMjRlOWRlMi4uYmJlNzc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KQEAgLTUwMyw2ICs1MDMsMTAgQEAgRkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9XRUJf
QVVESU89MQogd2ViY29yZV9jcHBmbGFncyArPSAtREVOQUJMRV9XRUJfQVVESU89MQogZW5kaWYK
IAoraWYgVVNFX1dFQkFVRElPX0dTVFJFQU1FUgord2ViY29yZV9jcHBmbGFncyArPSAtRFdURl9V
U0VfV0VCQVVESU9fR1NUUkVBTUVSPTEKK2VuZGlmCisKICMgLS0tLQogIyBXZWIgU29ja2V0cyBT
dXBwb3J0CiAjIC0tLS0KQEAgLTg2NCw3ICs4NjgsNiBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZM
QUdTID0gXAogCSQoR1NUUkVBTUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoSElM
RE9OX0NGTEFHUykgXAotCSQoTElCRkZUV19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBc
CiAJJChMSUJYTUxfQ0ZMQUdTKSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggMjE5NTg2Zi4uZGFjY2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC01NDA0LDYgKzU0MDQsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRmlsZVJlYWRlckdTdHJlYW1lci5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1Nv
dXJjZUdTdHJlYW1lci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9ndGsvQXVkaW9CdXNHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRkZURnJhbWUuaAppbmRleCAwNDI2MzNjLi5kYjFkMDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ3LDYgKzQ3LDEzIEBACiAjaW5jbHVkZSAi
bWtsX2RmdGkuaCIKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fTUtMKQogCisjaWYgVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKyNpbmNsdWRlIDxnbGliLmg+CitHX0JFR0lOX0RFQ0xTCisjaW5jbHVk
ZSA8Z3N0L2ZmdC9nc3RmZnRmMzIuaD4KK0dfRU5EX0RFQ0xTCisjZW5kaWYgLy8gVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKwogI2lmIFVTRShXRUJBVURJT19GRk1QRUcpCiBzdHJ1Y3QgUkRGVENv
bnRleHQ7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKQEAgLTE0Niw2ICsxNTMsMTQg
QEAgcHJpdmF0ZToKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBV
U0UoV0VCQVVESU9fRkZNUEVHKQogCisjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKKyAgICBH
c3RGRlRGMzIqIG1fZmZ0OworICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OworICAgIEdzdEZG
VEYzMkNvbXBsZXgqIG1fY29tcGxleERhdGE7CisgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERh
dGE7CisgICAgQXVkaW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CisjZW5kaWYgLy8gVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKKwogI2VuZGlmIC8vICFVU0VfQUNDRUxFUkFURV9GRlQKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCmluZGV4IGRm
YzUyYTIuLmFhMjZlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lU3R1Yi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWVTdHViLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
IAotI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElP
X0ZGTVBFRykKKyNpZiAhT1MoREFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShX
RUJBVURJT19GRk1QRUcpICYmICFVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogCiAjaW5jbHVkZSAi
RkZURnJhbWUuaCIKIApAQCAtMTAyLDYgKzEwMiw2IEBAIGZsb2F0KiBGRlRGcmFtZTo6aW1hZ0Rh
dGEoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhT1MoREFS
V0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkKKyNlbmRpZiAvLyAhT1MoREFSV0lOKSAmJiAhVVNF
KFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNmZkYWM5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKQEAg
LTAsMCArMSwxODQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwKKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKy8vIEZGVEZyYW1lIGltcGxlbWVudGF0aW9u
IHVzaW5nIHRoZSBHU3RyZWFtZXIgRkZUIGxpYnJhcnkuCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCisKKyNpbmNsdWRlICJGRlRGcmFtZS5oIgor
CisjaW5jbHVkZSAiVmVjdG9yTWF0aC5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+
CisKK25hbWVzcGFjZSB7CisKK3NpemVfdCB1bnBhY2tlZEZGVERhdGFTaXplKHVuc2lnbmVkIGZm
dFNpemUpCit7CisgICAgcmV0dXJuIGZmdFNpemUgLyAyICsgMTsKK30KKworfSAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gTm9ybWFsIGNvbnN0cnVj
dG9yOiBhbGxvY2F0ZXMgZm9yIGEgZ2l2ZW4gZmZ0U2l6ZS4KK0ZGVEZyYW1lOjpGRlRGcmFtZSh1
bnNpZ25lZCBmZnRTaXplKQorICAgIDogbV9GRlRTaXplKGZmdFNpemUpCisgICAgLCBtX2xvZzJG
RlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGZmdFNpemUpKSkKKyAgICAsIG1fcmVh
bERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKQorICAgICwgbV9pbWFnRGF0YSh1
bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCit7CisgICAgbV9jb21wbGV4RGF0YSA9IFdU
Rjo6ZmFzdE5ld0FycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9G
RlRTaXplKSk7CisKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3Ro
KG1fRkZUU2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxT
RSk7CisgICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7
Cit9CisKKy8vIENyZWF0ZXMgYSBibGFuay9lbXB0eSBmcmFtZSAoaW50ZXJwb2xhdGUoKSBtdXN0
IGxhdGVyIGJlIGNhbGxlZCkuCitGRlRGcmFtZTo6RkZURnJhbWUoKQorICAgIDogbV9GRlRTaXpl
KDApCisgICAgLCBtX2xvZzJGRlRTaXplKDApCisgICAgLCBtX2NvbXBsZXhEYXRhKDApCit7Cisg
ICAgaW50IGZmdExlbmd0aCA9IGdzdF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOwor
ICAgIG1fZmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52
ZXJzZUZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIFRSVUUpOworfQorCisvLyBDb3B5
IGNvbnN0cnVjdG9yLgorRkZURnJhbWU6OkZGVEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkK
KyAgICA6IG1fRkZUU2l6ZShmcmFtZS5tX0ZGVFNpemUpCisgICAgLCBtX2xvZzJGRlRTaXplKGZy
YW1lLm1fbG9nMkZGVFNpemUpCisgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUo
ZnJhbWUubV9GRlRTaXplKSkKKyAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShm
cmFtZS5tX0ZGVFNpemUpKQoreworICAgIG1fY29tcGxleERhdGEgPSBXVEY6OmZhc3ROZXdBcnJh
eTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworCisg
ICAgaW50IGZmdExlbmd0aCA9IGdzdF9mZnRfbmV4dF9mYXN0X2xlbmd0aChtX0ZGVFNpemUpOwor
ICAgIG1fZmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgRkFMU0UpOworICAgIG1faW52
ZXJzZUZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIFRSVUUpOworCisgICAgLy8gQ29w
eS9zZXR1cCBmcmFtZSBkYXRhLgorICAgIG1lbWNweShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0
YSgpLCBzaXplb2YoZmxvYXQpICogdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKKyAg
ICBtZW1jcHkoaW1hZ0RhdGEoKSwgZnJhbWUuaW1hZ0RhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIHVu
cGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7Cit9CisKK3ZvaWQgRkZURnJhbWU6OmluaXRp
YWxpemUoKQoreworfQorCit2b2lkIEZGVEZyYW1lOjpjbGVhbnVwKCkKK3sKK30KKworRkZURnJh
bWU6On5GRlRGcmFtZSgpCit7CisgICAgaWYgKCFtX2ZmdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZ3N0X2ZmdF9mMzJfZnJlZShtX2ZmdCk7CisgICAgbV9mZnQgPSAwOworCisgICAgZ3N0X2Zm
dF9mMzJfZnJlZShtX2ludmVyc2VGZnQpOworICAgIG1faW52ZXJzZUZmdCA9IDA7CisKKyAgICBX
VEY6OmZhc3REZWxldGVBcnJheShtX2NvbXBsZXhEYXRhKTsKK30KKwordm9pZCBGRlRGcmFtZTo6
bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQoreworICAgIEZGVEZyYW1lJiBmcmFtZTEg
PSAqdGhpczsKKyAgICBGRlRGcmFtZSYgZnJhbWUyID0gY29uc3RfY2FzdDxGRlRGcmFtZSY+KGZy
YW1lKTsKKworICAgIGZsb2F0KiByZWFsUDEgPSBmcmFtZTEucmVhbERhdGEoKTsKKyAgICBmbG9h
dCogaW1hZ1AxID0gZnJhbWUxLmltYWdEYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIHJlYWxQMiA9
IGZyYW1lMi5yZWFsRGF0YSgpOworICAgIGNvbnN0IGZsb2F0KiBpbWFnUDIgPSBmcmFtZTIuaW1h
Z0RhdGEoKTsKKworICAgIHNpemVfdCBzaXplID0gdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNp
emUpOworICAgIFZlY3Rvck1hdGg6Onp2bXVsKHJlYWxQMSwgaW1hZ1AxLCByZWFsUDIsIGltYWdQ
MiwgcmVhbFAxLCBpbWFnUDEsIHNpemUpOworCisgICAgLy8gU2NhbGUgYWNjb3VudHMgdGhlIHBl
Y3VsaWFyIHNjYWxpbmcgb2YgdmVjTGliIG9uIHRoZSBNYWMuCisgICAgLy8gVGhpcyBlbnN1cmVz
IHRoZSByaWdodCBzY2FsaW5nIGFsbCB0aGUgd2F5IGJhY2sgdG8gaW52ZXJzZSBGRlQuCisgICAg
Ly8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgc2NhbGluZyBvbiB0aGUgTWFjIHRoZW4gdGhpcyBz
Y2FsZQorICAgIC8vIGZhY3RvciB3aWxsIG5lZWQgdG8gY2hhbmdlIHRvby4KKyAgICBmbG9hdCBz
Y2FsZSA9IDAuNWY7CisKKyAgICBWZWN0b3JNYXRoOjp2c211bChyZWFsUDEsIDEsICZzY2FsZSwg
cmVhbFAxLCAxLCBzaXplKTsKKyAgICBWZWN0b3JNYXRoOjp2c211bChpbWFnUDEsIDEsICZzY2Fs
ZSwgaW1hZ1AxLCAxLCBzaXplKTsKK30KKwordm9pZCBGRlRGcmFtZTo6ZG9GRlQoY29uc3QgZmxv
YXQqIGRhdGEpCit7CisgICAgZ3N0X2ZmdF9mMzJfZmZ0KG1fZmZ0LCBkYXRhLCBtX2NvbXBsZXhE
YXRhKTsKKworICAgIC8vIFNjYWxlIHRoZSBmcmVxdWVuY3kgZG9tYWluIGRhdGEgdG8gbWF0Y2gg
dmVjTGliJ3Mgc2NhbGUgZmFjdG9yCisgICAgLy8gb24gdGhlIE1hYy4gRklYTUU6IGlmIHdlIGNo
YW5nZSB0aGUgZGVmaW5pdGlvbiBvZiBGRlRGcmFtZSB0bworICAgIC8vIGVsaW1pbmF0ZSB0aGlz
IHNjYWxlIGZhY3RvciB0aGVuIHRoaXMgY29kZSB3aWxsIG5lZWQgdG8gY2hhbmdlLgorICAgIC8v
IEFsc28sIGlmIHRoaXMgbG9vcCB0dXJucyBvdXQgdG8gYmUgaG90IHRoZW4gd2Ugc2hvdWxkIHVz
ZSBTU0UKKyAgICAvLyBvciBvdGhlciBpbnRyaW5zaWNzIHRvIGFjY2VsZXJhdGUgaXQuCisgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSAyOworCisgICAgZmxvYXQqIGltYWdEYXRhID0gbV9pbWFnRGF0
YS5kYXRhKCk7CisgICAgZmxvYXQqIHJlYWxEYXRhID0gbV9yZWFsRGF0YS5kYXRhKCk7CisKKyAg
ICBzaXplX3Qgc2l6ZSA9IHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKTsKKyAgICBBdWRp
b0Zsb2F0QXJyYXkgcHJvY2Vzc2VkSW1hZ0RhdGEoc2l6ZSk7CisgICAgQXVkaW9GbG9hdEFycmF5
IHByb2Nlc3NlZFJlYWxEYXRhKHNpemUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIHByb2Nlc3NlZEltYWdEYXRhW2ldID0gbV9jb21wbGV4RGF0YVtp
XS5pOworICAgICAgICBwcm9jZXNzZWRSZWFsRGF0YVtpXSA9IG1fY29tcGxleERhdGFbaV0ucjsK
KyAgICB9CisgICAgVmVjdG9yTWF0aDo6dnNtdWwocHJvY2Vzc2VkSW1hZ0RhdGEuZGF0YSgpLCAx
LCAmc2NhbGVGYWN0b3IsIGltYWdEYXRhLCAxLCBzaXplKTsKKyAgICBWZWN0b3JNYXRoOjp2c211
bChwcm9jZXNzZWRSZWFsRGF0YS5kYXRhKCksIDEsICZzY2FsZUZhY3RvciwgcmVhbERhdGEsIDEs
IHNpemUpOworfQorCit2b2lkIEZGVEZyYW1lOjpkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpCit7
CisgICAgLy8gIE1lcmdlIHRoZSByZWFsIGFuZCBpbWFnaW5hcnkgdmVjdG9ycyB0byBjb21wbGV4
IHZlY3Rvci4KKyAgICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEoKTsKKyAgICBm
bG9hdCogaW1hZ0RhdGEgPSBtX2ltYWdEYXRhLmRhdGEoKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsKKyAgICAgICAg
bV9jb21wbGV4RGF0YVtpXS5pID0gaW1hZ0RhdGFbaV07CisgICAgICAgIG1fY29tcGxleERhdGFb
aV0uciA9IHJlYWxEYXRhW2ldOworICAgIH0KKworICAgIGdzdF9mZnRfZjMyX2ludmVyc2VfZmZ0
KG1faW52ZXJzZUZmdCwgbV9jb21wbGV4RGF0YSwgZGF0YSk7CisKKyAgICAvLyBTY2FsZSBzbyB0
aGF0IGEgZm9yd2FyZCB0aGVuIGludmVyc2UgRkZUIHlpZWxkcyBleGFjdGx5IHRoZSBvcmlnaW5h
bCBkYXRhLgorICAgIGNvbnN0IGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wIC8gKDIgKiBtX0ZGVFNp
emUpOworICAgIFZlY3Rvck1hdGg6OnZzbXVsKGRhdGEsIDEsICZzY2FsZUZhY3RvciwgZGF0YSwg
MSwgbV9GRlRTaXplKTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjpyZWFsRGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX3JlYWxEYXRhLmRhdGEoKSk7Cit9CisK
K2Zsb2F0KiBGRlRGcmFtZTo6aW1hZ0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdF9j
YXN0PGZsb2F0Kj4obV9pbWFnRGF0YS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmlu
ZGV4IGQ0NDk0NjQuLmRkYmRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3Zl
IGxpYmZmdHcgY29tcGlsYXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMjMgIE1hcmlvIFNhbmNoZXog
UHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlZmFjdG9yIEdU
SydzIGFjY2Vzc2liaWxpdGl0eSBjb2RlIHRvIGJlIG1vcmUgbW9kdWxhcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVt
YWtlZmlsZS5hbQppbmRleCA1NzY4ZGI3Li4yNDcyMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmls
ZS5hbQpAQCAtNjgsNyArNjgsNiBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1Jf
VkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQRgogCSQoR1NUUkVB
TUVSX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoSElMRE9OX0NGTEFHUykgXAotCSQo
TElCRkZUV19DRkxBR1MpIFwKIAkkKExJQlNPVVBfQ0ZMQUdTKSBcCiAJJChMSUJYTUxfQ0ZMQUdT
KSBcCiAJJChMSUJYU0xUX0NGTEFHUykgXApAQCAtMTAxLDcgKzEwMCw2IEBAIGxpYndlYmtpdGd0
a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQF9sYV9MSUJBCiAJJChHVEtfTElCUykgXAogCSQoSElMRE9OX0xJQlMpIFwKIAkkKEpQRUdf
TElCUykgXAotCSQoTElCRkZUV19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwKIAkkKExJQlhN
TF9MSUJTKSBcCiAJJChMSUJYU0xUX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2MjE0ZGRkLi5mNWY0
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMjUgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZy
YW1lIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MzU0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSBsaWJmZnR3IGNvbXBpbGF0aW9uIGZs
YWdzLgorCiAyMDEyLTAxLTI1ICBOw6FuZG9yIEh1c3prYSAgPGh1c3prYS5uYW5kb3JAc3R1ZC51
LXN6ZWdlZC5odT4KIAogICAgICAgICBbV0syXSBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91
dFRlc3RDb250cm9sbGVyLnNldFBvcHVwQmxvY2tpbmdFbmFibGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDgwMTk4NDc2Li4yNjI3NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTQ2MCw3
ICsxNDYwLDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCA9IFwKIAkkKFhS
RU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQoV0lOTU1fTElCUykgXAotCSQoTElCRkZU
V19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nlc3Nf
TERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRl
eCBiMDI1NmYzLi5mMjdjNjU1IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmln
dXJlLmFjCkBAIC03NDYsNyArNzQ2LDExIEBAIEFDX0FSR19FTkFCTEUod2ViX3NvY2tldHMsCiBB
Q19NU0dfUkVTVUxUKFskZW5hYmxlX3dlYl9zb2NrZXRzXSkKIAogIyBjaGVjayB3aGV0aGVyIHRv
IGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9ydAotZW5hYmxlX3dlYl9hdWRpbz1ubworQUNfTVNHX0NI
RUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9ydF0pCitBQ19BUkdfRU5B
QkxFKHdlYl9hdWRpbywKKyAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdl
Yi1hdWRpb10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBm
b3IgV2ViIEF1ZGlvIFtkZWZhdWx0PW5vXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX3dl
Yl9hdWRpbz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2ViX2F1ZGlvXSkKIAogIyBj
aGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgVGltaW5nIHN1cHBvcnQKQEAgLTEwMjcsNiArMTAz
MSw3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93
ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIFtnc3RyZWFtZXIt
MC4xMCA+PSAkR1NUUkVBTUVSX1JFUVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAg
IGdzdHJlYW1lci1hcHAtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWF1ZGlv
LTAuMTAKKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1mZnQtMC4xMAogICAgICAgICAg
ICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0
cmVhbWVyLWludGVyZmFjZXMtMC4xMAogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBi
dXRpbHMtMC4xMApAQCAtMTAzOCwxNiArMTA0Myw2IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8i
ID0gInllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIEFD
X1NVQlNUKFtHU1RSRUFNRVJfTElCU10pCiBmaQogCi0jIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZh
aWxhYmxlCi1pZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgotICAgUEtH
X0NIRUNLX01PRFVMRVMoW0xJQkZGVFddLAotICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49
ICRMSUJGRlRXX1JFUVVJUkVEX1ZFUlNJT04KLSAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+
PSAkTElCRkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKLSAgICAgICAgICAgICAgICAgICAgIFtoYXZl
X2ZmdHc9eWVzXSkKLQotICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCi0gICAgQUNfU1VC
U1QoW0xJQkZGVFdfTElCU10pCi1maQogCiBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21w
b3NpdGluZyIgPSAiY2x1dHRlciI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKENMVVRURVIs
IGNsdXR0ZXItMS4wID49ICRDTFVUVEVSX1JFUVVJUkVEX1ZFUlNJT04pCkBAIC0xMTQyLDYgKzEx
MzcsNyBAQCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFj
a2VuZCIgPSAicGFuZ28iXSkKIAogIyBHU3RyZWFtZXIgZmVhdHVyZSBjb25kaXRpb25hbAogQU1f
Q09ORElUSU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVfZ3N0cmVhbWVyIiA9ICJ5
ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtVU0VfV0VCQVVESU9fR1NUUkVBTUVSXSwgW3Rlc3QgIiRl
bmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiXSkKIAogIyBBVFNQSTIgY29uZGl0aW9uYWwKIEFNX0NP
TkRJVElPTkFMKFtIQVZFX0FUU1BJMl0sIFt0ZXN0ICIkaGF2ZV9hdHNwaTIiID0gInllcyJdKQot
LSAKMS43LjguMw==
</data>
<flag name="commit-queue"
          id="125316"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124698</attachid>
            <date>2012-01-31 03:17:20 -0800</date>
            <delta_ts>2012-02-01 11:52:06 -0800</delta_ts>
            <desc>GstFFTFrame</desc>
            <filename>GstFFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17560</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2ZDMyMDgxZmZmY2M5Y2JjMGRmYmJkNzYzZTZlMmY1YzhjMmI3YzZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUaHUsIDE5IEphbiAyMDEyIDE1OjAwOjEwICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
R3N0RkZURnJhbWUKCi0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDEwICsKIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMSArKwogLi4uL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1
dGlvbi10ZXN0aW5nLmpzICAgICAgfCAgICA0ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oICAgICAgICAgICB8ICAgMTUgKysKIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAgICAgIHwgICAgNCArLQog
Li4uL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgfCAgMTc4
ICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0gICAgICAgICAgICAgICAgICAgfCAgICAyIC0KIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgLQogY29uZmlndXJlLmFjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICstLQogMTQgZmlsZXMgY2hh
bmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJl
YW1lci5jcHAKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjkxOTcz
NC4uODA2Y2M1MSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTAxLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbmZpZ3VyZS5h
YzogRW5hYmxlIHRoZSBXZWJBdWRpbyBvcHRpb24gYWdhaW4gYW5kIHJlbW92ZQorICAgICAgICBs
aWJmZnR3IGNoZWNrcy4KKwogMjAxMi0wMS0zMSAgTmF5YW4gS3VtYXIgSyAgPG5heWFua2tAbW90
b3JvbGEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSBWOCBjb21waWxhdGlvbiBvcHRpb24u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMmQyMzc3MC4uNzFjZDE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAx
LTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlv
bi10ZXN0aW5nLmpzOgorICAgICAgICAoY2hlY2tUYWlsMSk6IEFkYXB0IGNvbnZvbHV0aW9uIHRo
cmVzaG9sZCBmb3IgR1N0cmVhbWVyRkZURnJhbWUKKyAgICAgICAgaW1wbGVtZW50YXRpb24sIGFz
IGFkdmlzZWQgYnkgQ2hyaXMgUm9nZXJzLgorCiAyMDEyLTAxLTMxICBZdXpvIEZ1amlzaGltYSAg
PHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBl
eHBlY3RhdGlvbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNv
dXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291
cmNlcy9jb252b2x1dGlvbi10ZXN0aW5nLmpzCmluZGV4IDAxZDI3MTQuLmQ3ZWY4ZWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0aW5n
LmpzCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252b2x1dGlvbi10ZXN0
aW5nLmpzCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBmdW5jdGlvbiBjaGVja1RhaWwxKGRhdGEsIHJl
ZmVyZW5jZSwgYnJlYWtwb2ludCkgewogCiAgICAgLy8gVGhpcyB0aHJlc2hvbGQgaXMgZXhwZXJp
bWVudGFsbHkgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgdGhlCiAgICAgLy8gdmFsdWUgb2YgdGFp
bDFNYXhEZWNpYmVscy4KLSAgICB2YXIgdGhyZXNob2xkMSA9IC0xNDYuNzsKKyAgICB2YXIgdGhy
ZXNob2xkMSA9IC0xMjkuNzsKIAogICAgIHZhciB0YWlsMU1heERlY2liZWxzID0gbGluZWFyVG9E
ZWNpYmVsKHRhaWwxTWF4L3JlZk1heCk7CiAgICAgaWYgKHRhaWwxTWF4RGVjaWJlbHMgPD0gdGhy
ZXNob2xkMSkgewogICAgICAgICB0ZXN0UGFzc2VkKCJGaXJzdCBwYXJ0IG9mIHRhaWwgb2YgY29u
dm9sdXRpb24gaXMgc3VmZmljaWVudGx5IHNtYWxsLiIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IHRlc3RGYWlsZWQoIkZpcnN0IHBhcnQgb2YgdGFpbCBvZiBjb252b2x1dGlvbiBpcyBub3Qgc3Vm
ZmljaWVudGx5IHNtYWxsOiAiICsgdGFpbDFNYXggKyAiIGRCIik7CisgICAgICAgIHRlc3RGYWls
ZWQoIkZpcnN0IHBhcnQgb2YgdGFpbCBvZiBjb252b2x1dGlvbiBpcyBub3Qgc3VmZmljaWVudGx5
IHNtYWxsOiAiICsgdGFpbDFNYXhEZWNpYmVscyArICIgZEIiKTsKICAgICAgICAgaXNaZXJvID0g
ZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI0MWQyOS4uMjI3YjdkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1h
bmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRh
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGRlRG
cmFtZSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBHU3RyZWFtZXIncyBGRlQgcHJvY2Vzc2luZwor
ICAgICAgICBsaWJyYXJ5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgZXhpc3RpbmcgV2ViQXVk
aW8gdGVzdHMgY292ZXIgdGhpcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkZGVEZyYW1lOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpj
bGVhbnVwKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjp+RkZURnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RkZURnJhbWU6Om11bHRpcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZy
YW1lOjpkb0ZGVCk6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKToK
KyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpyZWFsRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRlRGcmFtZTo6aW1hZ0RhdGEpOgorCiAyMDEyLTAxLTMxICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBET01EZWJ1Z2dlci5z
ZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludCBzaG91bGQgYWNjZXB0IHJlZ3VsYXIgRE9NIGV2ZW50
IG5hbWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA3MDFmYTMzLi5lZmRlZjY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQpAQCAtNTEyLDYgKzUxMiwxMCBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5B
QkxFX1dFQl9BVURJTz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0x
CiBlbmRpZgogCitpZiBVU0VfV0VCQVVESU9fR1NUUkVBTUVSCit3ZWJjb3JlX2NwcGZsYWdzICs9
IC1EV1RGX1VTRV9XRUJBVURJT19HU1RSRUFNRVI9MQorZW5kaWYKKwogIyAtLS0tCiAjIFdlYiBT
b2NrZXRzIFN1cHBvcnQKICMgLS0tLQpAQCAtODcxLDcgKzg3NSw2IEBAIGxpYldlYkNvcmVHdGtf
bGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBc
CiAJJChISUxET05fQ0ZMQUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9D
RkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2MTUwOWU1Li4yMjI5Y2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU0MjEsNiArNTQyMSw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IDA0MjYzM2MuLmRiMWQwNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApAQCAtNDcsNiArNDcsMTMgQEAKICNp
bmNsdWRlICJta2xfZGZ0aS5oIgogI2VuZGlmIC8vIFVTRShXRUJBVURJT19NS0wpCiAKKyNpZiBV
U0UoV0VCQVVESU9fR1NUUkVBTUVSKQorI2luY2x1ZGUgPGdsaWIuaD4KK0dfQkVHSU5fREVDTFMK
KyNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdGYzMi5oPgorR19FTkRfREVDTFMKKyNlbmRpZiAvLyBV
U0UoV0VCQVVESU9fR1NUUkVBTUVSKQorCiAjaWYgVVNFKFdFQkFVRElPX0ZGTVBFRykKIHN0cnVj
dCBSREZUQ29udGV4dDsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fRkZNUEVHKQpAQCAtMTQ2LDYg
KzE1MywxNCBAQCBwcml2YXRlOgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOwogI2Vu
ZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCiAKKyNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVS
KQorICAgIEdzdEZGVEYzMiogbV9mZnQ7CisgICAgR3N0RkZURjMyKiBtX2ludmVyc2VGZnQ7Cisg
ICAgR3N0RkZURjMyQ29tcGxleCogbV9jb21wbGV4RGF0YTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkg
bV9yZWFsRGF0YTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKKyNlbmRpZiAvLyBV
U0UoV0VCQVVESU9fR1NUUkVBTUVSKQorCiAjZW5kaWYgLy8gIVVTRV9BQ0NFTEVSQVRFX0ZGVAog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVT
dHViLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAK
aW5kZXggZGZjNTJhMi4uYWEyNmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZVN0dWIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV0VC
X0FVRElPKQogCi0jaWYgIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0Uo
V0VCQVVESU9fRkZNUEVHKQorI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKSAm
JiAhVVNFKFdFQkFVRElPX0ZGTVBFRykgJiYgIVVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAKICNp
bmNsdWRlICJGRlRGcmFtZS5oIgogCkBAIC0xMDIsNiArMTAyLDYgQEAgZmxvYXQqIEZGVEZyYW1l
OjppbWFnRGF0YSgpIGNvbnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
ICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKQorI2VuZGlmIC8vICFPUyhEQVJXSU4p
ICYmICFVU0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTM3NDc2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVy
LmNwcApAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlh
IFMuTAorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworLy8gRkZURnJhbWUgaW1wbGVt
ZW50YXRpb24gdXNpbmcgdGhlIEdTdHJlYW1lciBGRlQgbGlicmFyeS4KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKKworI2luY2x1ZGUgIkZGVEZy
YW1lLmgiCisKKyNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxv
Y0Jhc2UuaD4KKworbmFtZXNwYWNlIHsKKworc2l6ZV90IHVucGFja2VkRkZURGF0YVNpemUodW5z
aWduZWQgZmZ0U2l6ZSkKK3sKKyAgICByZXR1cm4gZmZ0U2l6ZSAvIDIgKyAxOworfQorCit9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBOb3JtYWwg
Y29uc3RydWN0b3I6IGFsbG9jYXRlcyBmb3IgYSBnaXZlbiBmZnRTaXplLgorRkZURnJhbWU6OkZG
VEZyYW1lKHVuc2lnbmVkIGZmdFNpemUpCisgICAgOiBtX0ZGVFNpemUoZmZ0U2l6ZSkKKyAgICAs
IG1fbG9nMkZGVFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIoZmZ0U2l6ZSkpKQorICAg
ICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCisgICAgLCBtX2lt
YWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkKK3sKKyAgICBtX2NvbXBsZXhE
YXRhID0gV1RGOjpmYXN0TmV3QXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRh
U2l6ZShtX0ZGVFNpemUpKTsKKworICAgIGludCBmZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFz
dF9sZW5ndGgobV9GRlRTaXplKTsKKyAgICBtX2ZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5n
dGgsIEZBTFNFKTsKKyAgICBtX2ludmVyc2VGZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3Ro
LCBUUlVFKTsKK30KKworLy8gQ3JlYXRlcyBhIGJsYW5rL2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0
ZSgpIG11c3QgbGF0ZXIgYmUgY2FsbGVkKS4KK0ZGVEZyYW1lOjpGRlRGcmFtZSgpCisgICAgOiBt
X0ZGVFNpemUoMCkKKyAgICAsIG1fbG9nMkZGVFNpemUoMCkKKyAgICAsIG1fY29tcGxleERhdGEo
MCkKK3sKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZU
U2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7Cisg
ICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7Cit9CisK
Ky8vIENvcHkgY29uc3RydWN0b3IuCitGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUm
IGZyYW1lKQorICAgIDogbV9GRlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkKKyAgICAsIG1fbG9nMkZG
VFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKKyAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlRE
YXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQorICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERh
dGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCit7CisgICAgbV9jb21wbGV4RGF0YSA9IFdURjo6ZmFz
dE5ld0FycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXpl
KSk7CisKKyAgICBpbnQgZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZU
U2l6ZSk7CisgICAgbV9mZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7Cisg
ICAgbV9pbnZlcnNlRmZ0ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7CisKKyAg
ICAvLyBDb3B5L3NldHVwIGZyYW1lIGRhdGEuCisgICAgbWVtY3B5KHJlYWxEYXRhKCksIGZyYW1l
LnJlYWxEYXRhKCksIHNpemVvZihmbG9hdCkgKiB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6
ZSkpOworICAgIG1lbWNweShpbWFnRGF0YSgpLCBmcmFtZS5pbWFnRGF0YSgpLCBzaXplb2YoZmxv
YXQpICogdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKK30KKwordm9pZCBGRlRGcmFt
ZTo6aW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgRkZURnJhbWU6OmNsZWFudXAoKQoreworfQor
CitGRlRGcmFtZTo6fkZGVEZyYW1lKCkKK3sKKyAgICBpZiAoIW1fZmZ0KQorICAgICAgICByZXR1
cm47CisKKyAgICBnc3RfZmZ0X2YzMl9mcmVlKG1fZmZ0KTsKKyAgICBtX2ZmdCA9IDA7CisKKyAg
ICBnc3RfZmZ0X2YzMl9mcmVlKG1faW52ZXJzZUZmdCk7CisgICAgbV9pbnZlcnNlRmZ0ID0gMDsK
KworICAgIFdURjo6ZmFzdERlbGV0ZUFycmF5KG1fY29tcGxleERhdGEpOworfQorCit2b2lkIEZG
VEZyYW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCit7CisgICAgRkZURnJhbWUm
IGZyYW1lMSA9ICp0aGlzOworICAgIEZGVEZyYW1lJiBmcmFtZTIgPSBjb25zdF9jYXN0PEZGVEZy
YW1lJj4oZnJhbWUpOworCisgICAgZmxvYXQqIHJlYWxQMSA9IGZyYW1lMS5yZWFsRGF0YSgpOwor
ICAgIGZsb2F0KiBpbWFnUDEgPSBmcmFtZTEuaW1hZ0RhdGEoKTsKKyAgICBjb25zdCBmbG9hdCog
cmVhbFAyID0gZnJhbWUyLnJlYWxEYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIGltYWdQMiA9IGZy
YW1lMi5pbWFnRGF0YSgpOworCisgICAgc2l6ZV90IHNpemUgPSB1bnBhY2tlZEZGVERhdGFTaXpl
KG1fRkZUU2l6ZSk7CisgICAgVmVjdG9yTWF0aDo6enZtdWwocmVhbFAxLCBpbWFnUDEsIHJlYWxQ
MiwgaW1hZ1AyLCByZWFsUDEsIGltYWdQMSwgc2l6ZSk7CisKKyAgICAvLyBTY2FsZSBhY2NvdW50
cyB0aGUgcGVjdWxpYXIgc2NhbGluZyBvZiB2ZWNMaWIgb24gdGhlIE1hYy4KKyAgICAvLyBUaGlz
IGVuc3VyZXMgdGhlIHJpZ2h0IHNjYWxpbmcgYWxsIHRoZSB3YXkgYmFjayB0byBpbnZlcnNlIEZG
VC4KKyAgICAvLyBGSVhNRTogaWYgd2UgY2hhbmdlIHRoZSBzY2FsaW5nIG9uIHRoZSBNYWMgdGhl
biB0aGlzIHNjYWxlCisgICAgLy8gZmFjdG9yIHdpbGwgbmVlZCB0byBjaGFuZ2UgdG9vLgorICAg
IGZsb2F0IHNjYWxlID0gMC41ZjsKKworICAgIFZlY3Rvck1hdGg6OnZzbXVsKHJlYWxQMSwgMSwg
JnNjYWxlLCByZWFsUDEsIDEsIHNpemUpOworICAgIFZlY3Rvck1hdGg6OnZzbXVsKGltYWdQMSwg
MSwgJnNjYWxlLCBpbWFnUDEsIDEsIHNpemUpOworfQorCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChj
b25zdCBmbG9hdCogZGF0YSkKK3sKKyAgICBnc3RfZmZ0X2YzMl9mZnQobV9mZnQsIGRhdGEsIG1f
Y29tcGxleERhdGEpOworCisgICAgLy8gU2NhbGUgdGhlIGZyZXF1ZW5jeSBkb21haW4gZGF0YSB0
byBtYXRjaCB2ZWNMaWIncyBzY2FsZSBmYWN0b3IKKyAgICAvLyBvbiB0aGUgTWFjLiBGSVhNRTog
aWYgd2UgY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIEZGVEZyYW1lIHRvCisgICAgLy8gZWxpbWlu
YXRlIHRoaXMgc2NhbGUgZmFjdG9yIHRoZW4gdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBjaGFuZ2Uu
CisgICAgLy8gQWxzbywgaWYgdGhpcyBsb29wIHR1cm5zIG91dCB0byBiZSBob3QgdGhlbiB3ZSBz
aG91bGQgdXNlIFNTRQorICAgIC8vIG9yIG90aGVyIGludHJpbnNpY3MgdG8gYWNjZWxlcmF0ZSBp
dC4KKyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDI7CisKKyAgICBmbG9hdCogaW1hZ0RhdGEgPSBt
X2ltYWdEYXRhLmRhdGEoKTsKKyAgICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZG
VFNpemUpOyArK2kpIHsKKyAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLmkg
KiBzY2FsZUZhY3RvcjsKKyAgICAgICAgcmVhbERhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLnIg
KiBzY2FsZUZhY3RvcjsKKyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvSW52ZXJzZUZGVChm
bG9hdCogZGF0YSkKK3sKKyAgICAvLyAgTWVyZ2UgdGhlIHJlYWwgYW5kIGltYWdpbmFyeSB2ZWN0
b3JzIHRvIGNvbXBsZXggdmVjdG9yLgorICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEu
ZGF0YSgpOworICAgIGZsb2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsr
aSkgeworICAgICAgICBtX2NvbXBsZXhEYXRhW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAg
bV9jb21wbGV4RGF0YVtpXS5yID0gcmVhbERhdGFbaV07CisgICAgfQorCisgICAgZ3N0X2ZmdF9m
MzJfaW52ZXJzZV9mZnQobV9pbnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLCBkYXRhKTsKKworICAg
IC8vIFNjYWxlIHNvIHRoYXQgYSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0
bHkgdGhlIG9yaWdpbmFsIGRhdGEuCisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAg
LyAoMiAqIG1fRkZUU2l6ZSk7CisgICAgVmVjdG9yTWF0aDo6dnNtdWwoZGF0YSwgMSwgJnNjYWxl
RmFjdG9yLCBkYXRhLCAxLCBtX0ZGVFNpemUpOworfQorCitmbG9hdCogRkZURnJhbWU6OnJlYWxE
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERhdGEu
ZGF0YSgpKTsKK30KKworZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKaW5kZXggZDQ0OTQ2NC4uZmI0YzNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDEyLTAxLTE5ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2Vm
aWxlLmFtOiBSZW1vdmUgbGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKwogMjAxMi0wMS0yMyAg
TWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gUmVmYWN0b3IgR1RLJ3MgYWNjZXNzaWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU3NjhkYjcuLjI0NzIyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0dOVW1ha2VmaWxlLmFtCkBAIC02OCw3ICs2OCw2IEBAIGxpYndlYmtpdGd0a19AV0VCS0lU
R1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9D
UFBGCiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05f
Q0ZMQUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkk
KExJQlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkBAIC0xMDEsNyArMTAwLDYg
QEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQkEKIAkkKEdUS19MSUJTKSBcCiAJJChISUxET05fTElC
UykgXAogCSQoSlBFR19MSUJTKSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKExJQlNPVVBfTElC
UykgXAogCSQoTElCWE1MX0xJQlMpIFwKIAkkKExJQlhTTFRfTElCUykgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDkyMDE2N2MuLjE4N2MwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0x
OSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVtb3ZlIGxpYmZmdHcg
Y29tcGlsYXRpb24gZmxhZ3MuCisKIDIwMTItMDEtMzAgIEpvY2VseW4gVHVyY290dGUgIDxqb2Nl
bHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIERpc2Nvbm5lY3QgdGhlIExh
eWVyVHJlZUhvc3QgZnJvbSBsYXllcnMgd2hlbiB0aGV5IGdldCByZW1vdmVkIGZyb20gdGhlaXIg
cGFyZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBiNzZiMjFmLi4xY2YxYTJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQpAQCAtMTQ3OSw3ICsxNDc5LDYgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2lu
UHJvY2Vzc19MREFERCA9IFwKIAkkKFhSRU5ERVJfTElCUykgXAogCSQoWFRfTElCUykgXAogCSQo
V0lOTU1fTElCUykgXAotCSQoTElCRkZUV19MSUJTKSBcCiAJJChaTElCX0xJQlMpCiAKIFByb2dy
YW1zX1dlYktpdFBsdWdpblByb2Nlc3NfTERGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy
ZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBiMDY3YjVlLi5lZDk1ZjA2IDEwMDY0NAotLS0gYS9j
b25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC03ODQsNyArNzg0LDExIEBAIEFDX0FS
R19FTkFCTEUod2ViX3NvY2tldHMsCiBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3dlYl9zb2NrZXRz
XSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVkaW8gc3VwcG9ydAotZW5hYmxl
X3dlYl9hdWRpbz1ubworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGVuYWJsZSBXZWIgQXVk
aW8gc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKHdlYl9hdWRpbywKKyAgICAgICAgICAgICAgQUNf
SEVMUF9TVFJJTkcoWy0tZW5hYmxlLXdlYi1hdWRpb10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgV2ViIEF1ZGlvIFtkZWZhdWx0PW5vXV0pLAorICAg
ICAgICAgICAgICBbXSxbZW5hYmxlX3dlYl9hdWRpbz0ibm8iXSkKIEFDX01TR19SRVNVTFQoWyRl
bmFibGVfd2ViX2F1ZGlvXSkKIAogIyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBXZWIgVGltaW5n
IHN1cHBvcnQKQEAgLTEwNTIsNiArMTA1Niw3IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0g
InllcyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgICAgICAg
ICAgICAgICAgICAgIFtnc3RyZWFtZXItJEdTVF9BUElfVkVSU0lPTiA+PSAkR1NUUkVBTUVSX1JF
UVVJUkVEX1ZFUlNJT04KICAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1hcHAtJEdTVF9B
UElfVkVSU0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWF1ZGlvLSRHU1RfQVBJ
X1ZFUlNJT04KKyAgICAgICAgICAgICAgICAgICAgIGdzdHJlYW1lci1mZnQtJEdTVF9BUElfVkVS
U0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWJhc2UtJEdTVF9BUElfVkVSU0lP
TgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWludGVyZmFjZXMtJEdTVF9BUElfVkVS
U0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLXBidXRpbHMtJEdTVF9BUElfVkVS
U0lPTgpAQCAtMTA2MywxNiArMTA2OCw2IEBAIGlmIHRlc3QgIiRlbmFibGVfdmlkZW8iID0gInll
cyIgfHwgdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8iID0gInllcyI7IHRoZW4KICAgIEFDX1NVQlNU
KFtHU1RSRUFNRVJfTElCU10pCiBmaQogCi0jIGNoZWNrIGlmIGxpYmZmdHcgaXMgYXZhaWxhYmxl
Ci1pZiB0ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgotICAgUEtHX0NIRUNL
X01PRFVMRVMoW0xJQkZGVFddLAotICAgICAgICAgICAgICAgICAgICAgW2ZmdHczID49ICRMSUJG
RlRXX1JFUVVJUkVEX1ZFUlNJT04KLSAgICAgICAgICAgICAgICAgICAgIGZmdHczZiA+PSAkTElC
RkZUV19SRVFVSVJFRF9WRVJTSU9OXSwKLSAgICAgICAgICAgICAgICAgICAgIFtoYXZlX2ZmdHc9
eWVzXSkKLQotICAgIEFDX1NVQlNUKFtMSUJGRlRXX0NGTEFHU10pCi0gICAgQUNfU1VCU1QoW0xJ
QkZGVFdfTElCU10pCi1maQogCiBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRlZF9jb21wb3NpdGlu
ZyIgPSAiY2x1dHRlciI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKENMVVRURVIsIGNsdXR0
ZXItMS4wID49ICRDTFVUVEVSX1JFUVVJUkVEX1ZFUlNJT04pCkBAIC0xMTc0LDYgKzExNjksNyBA
QCBBTV9DT05ESVRJT05BTChbVVNFX1BBTkdPXSwgW3Rlc3QgIiR3aXRoX2ZvbnRfYmFja2VuZCIg
PSAicGFuZ28iXSkKIAogIyBHU3RyZWFtZXIgZmVhdHVyZSBjb25kaXRpb25hbAogQU1fQ09ORElU
SU9OQUwoW1VTRV9HU1RSRUFNRVJdLCBbdGVzdCAiJGhhdmVfZ3N0cmVhbWVyIiA9ICJ5ZXMiXSkK
K0FNX0NPTkRJVElPTkFMKFtVU0VfV0VCQVVESU9fR1NUUkVBTUVSXSwgW3Rlc3QgIiRlbmFibGVf
d2ViX2F1ZGlvIiA9ICJ5ZXMiXSkKIAogIyBBVFNQSTIgY29uZGl0aW9uYWwKIEFNX0NPTkRJVElP
TkFMKFtIQVZFX0FUU1BJMl0sIFt0ZXN0ICIkaGF2ZV9hdHNwaTIiID0gInllcyJdKQotLSAKMS43
LjguMw==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124981</attachid>
            <date>2012-02-01 11:52:06 -0800</date>
            <delta_ts>2012-02-01 12:10:57 -0800</delta_ts>
            <desc>FFTFrame</desc>
            <filename>FFTFrame.patch</filename>
            <type>text/plain</type>
            <size>17605</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAxNDVkYjk2ZTI4ODc0ODZiZDU4ZWZhNWExOWM2NGNjNDE1YmNmYTE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDEgRmViIDIwMTIgMjA6NTE6MTYgKzAxMDAKU3ViamVjdDogW1BBVENIXSBG
RlRGcmFtZQoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTAgKwogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDExICsrCiAuLi4vd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9u
LXRlc3RpbmcuanMgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyNyArKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSAgICAgICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggICAgICAgICAgIHwgICAxNSArKwogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCAgICAgfCAgICA0ICstCiAuLi4v
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCB8ICAxNzggKysr
KysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgOSArCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgLQogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICsKIFNvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCiBjb25maWd1cmUuYWMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0tCiAxNCBmaWxlcyBjaGFuZ2Vk
LCAyNzUgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVy
LmNwcAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiNDZiMzhmLi4z
YjM1YzFkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMDItMDEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1lIGltcGxlbWVudGF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY29uZmlndXJlLmFjOiBF
bmFibGUgdGhlIFdlYkF1ZGlvIG9wdGlvbiBhZ2FpbiBhbmQgcmVtb3ZlCisgICAgICAgIGxpYmZm
dHcgY2hlY2tzLgorCiAyMDEyLTAxLTMxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIHdlYmtpdC1wZXJmLmFwcHNwb3QuY29tIHNob3VsZCBhY2NlcHQgdGVzdCBy
ZXN1bHRzIHdpdGhvdXQgbWVkaWFucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwMDMzMDIuLjhlZTU4NWEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wMi0wMSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gRkZURnJhbWUgaW1wbGVtZW50YXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNTQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRp
by9yZXNvdXJjZXMvY29udm9sdXRpb24tdGVzdGluZy5qczoKKyAgICAgICAgKGNoZWNrVGFpbDEp
OiBBZGFwdCBjb252b2x1dGlvbiB0aHJlc2hvbGQgZm9yIEdTdHJlYW1lckZGVEZyYW1lCisgICAg
ICAgIGltcGxlbWVudGF0aW9uLCBhcyBhZHZpc2VkIGJ5IENocmlzIFJvZ2Vycy4KKwogMjAxMi0w
Mi0wMSAgU3ppbGFyZCBMZWRhbiAgPExlZGFuLU11bnRlYW4uU3ppbGFyZEBzdHVkLnUtc3plZ2Vk
Lmh1PgogCiAgICAgICAgIEZpeGVkIHNvbWUgbGluZXMgaW4gdGhlIGRhdGUtY29uc3RydWN0b3Iu
anMgdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9jb252
b2x1dGlvbi10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZv
bHV0aW9uLXRlc3RpbmcuanMKaW5kZXggMDFkMjcxNC4uZDdlZjhlYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2NvbnZvbHV0aW9uLXRlc3RpbmcuanMKQEAg
LTEyNywxMyArMTI3LDEzIEBAIGZ1bmN0aW9uIGNoZWNrVGFpbDEoZGF0YSwgcmVmZXJlbmNlLCBi
cmVha3BvaW50KSB7CiAKICAgICAvLyBUaGlzIHRocmVzaG9sZCBpcyBleHBlcmltZW50YWxseSBk
ZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyB0aGUKICAgICAvLyB2YWx1ZSBvZiB0YWlsMU1heERlY2li
ZWxzLgotICAgIHZhciB0aHJlc2hvbGQxID0gLTE0Ni43OworICAgIHZhciB0aHJlc2hvbGQxID0g
LTEyOS43OwogCiAgICAgdmFyIHRhaWwxTWF4RGVjaWJlbHMgPSBsaW5lYXJUb0RlY2liZWwodGFp
bDFNYXgvcmVmTWF4KTsKICAgICBpZiAodGFpbDFNYXhEZWNpYmVscyA8PSB0aHJlc2hvbGQxKSB7
CiAgICAgICAgIHRlc3RQYXNzZWQoIkZpcnN0IHBhcnQgb2YgdGFpbCBvZiBjb252b2x1dGlvbiBp
cyBzdWZmaWNpZW50bHkgc21hbGwuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiRmlyc3QgcGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlzIG5vdCBzdWZmaWNpZW50bHkg
c21hbGw6ICIgKyB0YWlsMU1heCArICIgZEIiKTsKKyAgICAgICAgdGVzdEZhaWxlZCgiRmlyc3Qg
cGFydCBvZiB0YWlsIG9mIGNvbnZvbHV0aW9uIGlzIG5vdCBzdWZmaWNpZW50bHkgc21hbGw6ICIg
KyB0YWlsMU1heERlY2liZWxzICsgIiBkQiIpOwogICAgICAgICBpc1plcm8gPSBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBkZjcxZjNkLi42MTljZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTItMDItMDEgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdIEZGVEZyYW1lIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU0NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZGVEZyYW1lIGltcGxl
bWVudGF0aW9uIGJhc2VkIG9uIEdTdHJlYW1lcidzIEZGVCBwcm9jZXNzaW5nCisgICAgICAgIGxp
YnJhcnkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleGlzdGluZyBXZWJBdWRpbyB0ZXN0cyBj
b3ZlciB0aGlzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpGRlRGcmFtZTo6RkZURnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJh
bWU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmNsZWFudXApOgor
ICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6On5GRlRGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRlRGcmFtZTo6bXVsdGlwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OmRvRkZU
KToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ludmVyc2VGRlQpOgorICAgICAgICAo
V2ViQ29yZTo6RkZURnJhbWU6OnJlYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1l
OjppbWFnRGF0YSk6CisKIDIwMTItMDItMDEgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUu
Y29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBmaXhlZCBhbmQgcGVyY2VudCBtaW4td2lk
dGggb24gdGhlIHRhYmxlIGVsZW1lbnQgZm9yIHRhYmxlLWxheW91dDogYXV0byB0bwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCA3MDFmYTMzLi5lZmRlZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtNTEyLDYgKzUxMiwxMCBAQCBGRUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX1dFQl9BVURJTz0x
CiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJTz0xCiBlbmRpZgogCitpZiBV
U0VfV0VCQVVESU9fR1NUUkVBTUVSCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1EV1RGX1VTRV9XRUJB
VURJT19HU1RSRUFNRVI9MQorZW5kaWYKKwogIyAtLS0tCiAjIFdlYiBTb2NrZXRzIFN1cHBvcnQK
ICMgLS0tLQpAQCAtODcxLDcgKzg3NSw2IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBc
CiAJJChHU1RSRUFNRVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZM
QUdTKSBcCi0JJChMSUJGRlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJ
QlhNTF9DRkxBR1MpIFwKIAkkKExJQlhTTFRfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBmMzZhOTNkLi5jZmVkZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTU0MTQsNiArNTQxNCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9GaWxlUmVhZGVyR1N0cmVhbWVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dl
YktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2d0ay9BdWRpb0J1c0d0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5oCmluZGV4IDA0MjYzM2MuLmRiMWQwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vRkZURnJhbWUuaApAQCAtNDcsNiArNDcsMTMgQEAKICNpbmNsdWRlICJta2xfZGZ0
aS5oIgogI2VuZGlmIC8vIFVTRShXRUJBVURJT19NS0wpCiAKKyNpZiBVU0UoV0VCQVVESU9fR1NU
UkVBTUVSKQorI2luY2x1ZGUgPGdsaWIuaD4KK0dfQkVHSU5fREVDTFMKKyNpbmNsdWRlIDxnc3Qv
ZmZ0L2dzdGZmdGYzMi5oPgorR19FTkRfREVDTFMKKyNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NU
UkVBTUVSKQorCiAjaWYgVVNFKFdFQkFVRElPX0ZGTVBFRykKIHN0cnVjdCBSREZUQ29udGV4dDsK
ICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fRkZNUEVHKQpAQCAtMTQ2LDYgKzE1MywxNCBAQCBwcml2
YXRlOgogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOwogI2VuZGlmIC8vIFVTRShXRUJB
VURJT19GRk1QRUcpCiAKKyNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQorICAgIEdzdEZGVEYz
MiogbV9mZnQ7CisgICAgR3N0RkZURjMyKiBtX2ludmVyc2VGZnQ7CisgICAgR3N0RkZURjMyQ29t
cGxleCogbV9jb21wbGV4RGF0YTsKKyAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKKyAg
ICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKKyNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NU
UkVBTUVSKQorCiAjZW5kaWYgLy8gIVVTRV9BQ0NFTEVSQVRFX0ZGVAogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHAKaW5kZXggZGZjNTJhMi4u
YWEyNmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWVTdHViLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0
dWIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogCi0jaWYg
IU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9fRkZNUEVH
KQorI2lmICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKSAmJiAhVVNFKFdFQkFVRElP
X0ZGTVBFRykgJiYgIVVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAKICNpbmNsdWRlICJGRlRGcmFt
ZS5oIgogCkBAIC0xMDIsNiArMTAyLDYgQEAgZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNv
bnN0CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vICFPUyhEQVJXSU4pICYm
ICFVU0UoV0VCQVVESU9fTUtMKQorI2VuZGlmIC8vICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVE
SU9fTUtMKSAmJiAhVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4yOTM3NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAtMCwwICsx
LDE3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTAorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKi8KKworLy8gRkZURnJhbWUgaW1wbGVtZW50YXRpb24gdXNpbmcg
dGhlIEdTdHJlYW1lciBGRlQgbGlicmFyeS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
VVNFKFdFQkFVRElPX0dTVFJFQU1FUikKKworI2luY2x1ZGUgIkZGVEZyYW1lLmgiCisKKyNpbmNs
dWRlICJWZWN0b3JNYXRoLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKworbmFt
ZXNwYWNlIHsKKworc2l6ZV90IHVucGFja2VkRkZURGF0YVNpemUodW5zaWduZWQgZmZ0U2l6ZSkK
K3sKKyAgICByZXR1cm4gZmZ0U2l6ZSAvIDIgKyAxOworfQorCit9IC8vIGFub255bW91cyBuYW1l
c3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBOb3JtYWwgY29uc3RydWN0b3I6IGFs
bG9jYXRlcyBmb3IgYSBnaXZlbiBmZnRTaXplLgorRkZURnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVk
IGZmdFNpemUpCisgICAgOiBtX0ZGVFNpemUoZmZ0U2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIoZmZ0U2l6ZSkpKQorICAgICwgbV9yZWFsRGF0YSh1
bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCisgICAgLCBtX2ltYWdEYXRhKHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkKK3sKKyAgICBtX2NvbXBsZXhEYXRhID0gV1RGOjpmYXN0
TmV3QXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUp
KTsKKworICAgIGludCBmZnRMZW5ndGggPSBnc3RfZmZ0X25leHRfZmFzdF9sZW5ndGgobV9GRlRT
aXplKTsKKyAgICBtX2ZmdCA9IGdzdF9mZnRfZjMyX25ldyhmZnRMZW5ndGgsIEZBTFNFKTsKKyAg
ICBtX2ludmVyc2VGZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBUUlVFKTsKK30KKwor
Ly8gQ3JlYXRlcyBhIGJsYW5rL2VtcHR5IGZyYW1lIChpbnRlcnBvbGF0ZSgpIG11c3QgbGF0ZXIg
YmUgY2FsbGVkKS4KK0ZGVEZyYW1lOjpGRlRGcmFtZSgpCisgICAgOiBtX0ZGVFNpemUoMCkKKyAg
ICAsIG1fbG9nMkZGVFNpemUoMCkKKyAgICAsIG1fY29tcGxleERhdGEoMCkKK3sKKyAgICBpbnQg
ZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9m
ZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0
ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7Cit9CisKKy8vIENvcHkgY29uc3Ry
dWN0b3IuCitGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQorICAgIDog
bV9GRlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkKKyAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9s
b2cyRkZUU2l6ZSkKKyAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5t
X0ZGVFNpemUpKQorICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1f
RkZUU2l6ZSkpCit7CisgICAgbV9jb21wbGV4RGF0YSA9IFdURjo6ZmFzdE5ld0FycmF5PEdzdEZG
VEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSk7CisKKyAgICBpbnQg
ZmZ0TGVuZ3RoID0gZ3N0X2ZmdF9uZXh0X2Zhc3RfbGVuZ3RoKG1fRkZUU2l6ZSk7CisgICAgbV9m
ZnQgPSBnc3RfZmZ0X2YzMl9uZXcoZmZ0TGVuZ3RoLCBGQUxTRSk7CisgICAgbV9pbnZlcnNlRmZ0
ID0gZ3N0X2ZmdF9mMzJfbmV3KGZmdExlbmd0aCwgVFJVRSk7CisKKyAgICAvLyBDb3B5L3NldHVw
IGZyYW1lIGRhdGEuCisgICAgbWVtY3B5KHJlYWxEYXRhKCksIGZyYW1lLnJlYWxEYXRhKCksIHNp
emVvZihmbG9hdCkgKiB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpOworICAgIG1lbWNw
eShpbWFnRGF0YSgpLCBmcmFtZS5pbWFnRGF0YSgpLCBzaXplb2YoZmxvYXQpICogdW5wYWNrZWRG
RlREYXRhU2l6ZShtX0ZGVFNpemUpKTsKK30KKwordm9pZCBGRlRGcmFtZTo6aW5pdGlhbGl6ZSgp
Cit7Cit9CisKK3ZvaWQgRkZURnJhbWU6OmNsZWFudXAoKQoreworfQorCitGRlRGcmFtZTo6fkZG
VEZyYW1lKCkKK3sKKyAgICBpZiAoIW1fZmZ0KQorICAgICAgICByZXR1cm47CisKKyAgICBnc3Rf
ZmZ0X2YzMl9mcmVlKG1fZmZ0KTsKKyAgICBtX2ZmdCA9IDA7CisKKyAgICBnc3RfZmZ0X2YzMl9m
cmVlKG1faW52ZXJzZUZmdCk7CisgICAgbV9pbnZlcnNlRmZ0ID0gMDsKKworICAgIFdURjo6ZmFz
dERlbGV0ZUFycmF5KG1fY29tcGxleERhdGEpOworfQorCit2b2lkIEZGVEZyYW1lOjptdWx0aXBs
eShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCit7CisgICAgRkZURnJhbWUmIGZyYW1lMSA9ICp0aGlz
OworICAgIEZGVEZyYW1lJiBmcmFtZTIgPSBjb25zdF9jYXN0PEZGVEZyYW1lJj4oZnJhbWUpOwor
CisgICAgZmxvYXQqIHJlYWxQMSA9IGZyYW1lMS5yZWFsRGF0YSgpOworICAgIGZsb2F0KiBpbWFn
UDEgPSBmcmFtZTEuaW1hZ0RhdGEoKTsKKyAgICBjb25zdCBmbG9hdCogcmVhbFAyID0gZnJhbWUy
LnJlYWxEYXRhKCk7CisgICAgY29uc3QgZmxvYXQqIGltYWdQMiA9IGZyYW1lMi5pbWFnRGF0YSgp
OworCisgICAgc2l6ZV90IHNpemUgPSB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7Cisg
ICAgVmVjdG9yTWF0aDo6enZtdWwocmVhbFAxLCBpbWFnUDEsIHJlYWxQMiwgaW1hZ1AyLCByZWFs
UDEsIGltYWdQMSwgc2l6ZSk7CisKKyAgICAvLyBTY2FsZSBhY2NvdW50cyB0aGUgcGVjdWxpYXIg
c2NhbGluZyBvZiB2ZWNMaWIgb24gdGhlIE1hYy4KKyAgICAvLyBUaGlzIGVuc3VyZXMgdGhlIHJp
Z2h0IHNjYWxpbmcgYWxsIHRoZSB3YXkgYmFjayB0byBpbnZlcnNlIEZGVC4KKyAgICAvLyBGSVhN
RTogaWYgd2UgY2hhbmdlIHRoZSBzY2FsaW5nIG9uIHRoZSBNYWMgdGhlbiB0aGlzIHNjYWxlCisg
ICAgLy8gZmFjdG9yIHdpbGwgbmVlZCB0byBjaGFuZ2UgdG9vLgorICAgIGZsb2F0IHNjYWxlID0g
MC41ZjsKKworICAgIFZlY3Rvck1hdGg6OnZzbXVsKHJlYWxQMSwgMSwgJnNjYWxlLCByZWFsUDEs
IDEsIHNpemUpOworICAgIFZlY3Rvck1hdGg6OnZzbXVsKGltYWdQMSwgMSwgJnNjYWxlLCBpbWFn
UDEsIDEsIHNpemUpOworfQorCit2b2lkIEZGVEZyYW1lOjpkb0ZGVChjb25zdCBmbG9hdCogZGF0
YSkKK3sKKyAgICBnc3RfZmZ0X2YzMl9mZnQobV9mZnQsIGRhdGEsIG1fY29tcGxleERhdGEpOwor
CisgICAgLy8gU2NhbGUgdGhlIGZyZXF1ZW5jeSBkb21haW4gZGF0YSB0byBtYXRjaCB2ZWNMaWIn
cyBzY2FsZSBmYWN0b3IKKyAgICAvLyBvbiB0aGUgTWFjLiBGSVhNRTogaWYgd2UgY2hhbmdlIHRo
ZSBkZWZpbml0aW9uIG9mIEZGVEZyYW1lIHRvCisgICAgLy8gZWxpbWluYXRlIHRoaXMgc2NhbGUg
ZmFjdG9yIHRoZW4gdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBjaGFuZ2UuCisgICAgLy8gQWxzbywg
aWYgdGhpcyBsb29wIHR1cm5zIG91dCB0byBiZSBob3QgdGhlbiB3ZSBzaG91bGQgdXNlIFNTRQor
ICAgIC8vIG9yIG90aGVyIGludHJpbnNpY3MgdG8gYWNjZWxlcmF0ZSBpdC4KKyAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IDI7CisKKyAgICBmbG9hdCogaW1hZ0RhdGEgPSBtX2ltYWdEYXRhLmRhdGEo
KTsKKyAgICBmbG9hdCogcmVhbERhdGEgPSBtX3JlYWxEYXRhLmRhdGEoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpOyArK2kpIHsK
KyAgICAgICAgaW1hZ0RhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLmkgKiBzY2FsZUZhY3RvcjsK
KyAgICAgICAgcmVhbERhdGFbaV0gPSBtX2NvbXBsZXhEYXRhW2ldLnIgKiBzY2FsZUZhY3RvcjsK
KyAgICB9Cit9CisKK3ZvaWQgRkZURnJhbWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKK3sK
KyAgICAvLyAgTWVyZ2UgdGhlIHJlYWwgYW5kIGltYWdpbmFyeSB2ZWN0b3JzIHRvIGNvbXBsZXgg
dmVjdG9yLgorICAgIGZsb2F0KiByZWFsRGF0YSA9IG1fcmVhbERhdGEuZGF0YSgpOworICAgIGZs
b2F0KiBpbWFnRGF0YSA9IG1faW1hZ0RhdGEuZGF0YSgpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSk7ICsraSkgeworICAgICAgICBt
X2NvbXBsZXhEYXRhW2ldLmkgPSBpbWFnRGF0YVtpXTsKKyAgICAgICAgbV9jb21wbGV4RGF0YVtp
XS5yID0gcmVhbERhdGFbaV07CisgICAgfQorCisgICAgZ3N0X2ZmdF9mMzJfaW52ZXJzZV9mZnQo
bV9pbnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLCBkYXRhKTsKKworICAgIC8vIFNjYWxlIHNvIHRo
YXQgYSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0bHkgdGhlIG9yaWdpbmFs
IGRhdGEuCisgICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAgLyAoMiAqIG1fRkZUU2l6
ZSk7CisgICAgVmVjdG9yTWF0aDo6dnNtdWwoZGF0YSwgMSwgJnNjYWxlRmFjdG9yLCBkYXRhLCAx
LCBtX0ZGVFNpemUpOworfQorCitmbG9hdCogRkZURnJhbWU6OnJlYWxEYXRhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KG1fcmVhbERhdGEuZGF0YSgpKTsKK30KKwor
ZmxvYXQqIEZGVEZyYW1lOjppbWFnRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8ZmxvYXQqPihtX2ltYWdEYXRhLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggMTViNWRlZS4uMWJmYzA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAy
MDEyLTAyLTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAorICAg
ICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUg
bGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKworMjAxMi0wMi0wMSAgUGhpbGlwcGUgTm9ybWFu
ZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dUS10gdW5pdHRlc3RzL3Rlc3Rs
b2FkaW5nIGNyYXNoZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc3NTQ0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggNTc2OGRiNy4uMjQ3
MjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTY4LDcgKzY4LDYgQEAgbGlid2Vi
a2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9S
X1ZFUlNJT05AX2xhX0NQUEYKIAkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1Mp
IFwKIAkkKEhJTERPTl9DRkxBR1MpIFwKLQkkKExJQkZGVFdfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQ
X0NGTEFHUykgXAogCSQoTElCWE1MX0NGTEFHUykgXAogCSQoTElCWFNMVF9DRkxBR1MpIFwKQEAg
LTEwMSw3ICsxMDAsNiBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lP
TkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQQogCSQoR1RLX0xJQlMpIFwK
IAkkKEhJTERPTl9MSUJTKSBcCiAJJChKUEVHX0xJQlMpIFwKLQkkKExJQkZGVFdfTElCUykgXAog
CSQoTElCU09VUF9MSUJTKSBcCiAJJChMSUJYTUxfTElCUykgXAogCSQoTElCWFNMVF9MSUJTKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggYzY5YzIwZC4uMzljYzczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDEyLTAyLTAxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1N0cmVhbWVyXSBGRlRGcmFtZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1NDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBS
ZW1vdmUgbGliZmZ0dyBjb21waWxhdGlvbiBmbGFncy4KKwogMjAxMi0wMS0zMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChXZWJLaXQy
KTogZXZlbnQua2V5Q29kZSBpcyBhbHdheXMgemVybyB3aGVuIHR5cGluZyBpbiBSdXNzaWFuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQy
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGI3NmIyMWYuLjFjZjFhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxl
LmFtCkBAIC0xNDc5LDcgKzE0NzksNiBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xE
QUREID0gXAogCSQoWFJFTkRFUl9MSUJTKSBcCiAJJChYVF9MSUJTKSBcCiAJJChXSU5NTV9MSUJT
KSBcCi0JJChMSUJGRlRXX0xJQlMpIFwKIAkkKFpMSUJfTElCUykKIAogUHJvZ3JhbXNfV2ViS2l0
UGx1Z2luUHJvY2Vzc19MREZMQUdTID0gXApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u
ZmlndXJlLmFjCmluZGV4IGIwNjdiNWUuLmVkOTVmMDYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5h
YworKysgYi9jb25maWd1cmUuYWMKQEAgLTc4NCw3ICs3ODQsMTEgQEAgQUNfQVJHX0VOQUJMRSh3
ZWJfc29ja2V0cywKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2ViX3NvY2tldHNdKQogCiAjIGNo
ZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0Ci1lbmFibGVfd2ViX2F1ZGlv
PW5vCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIFdlYiBBdWRpbyBzdXBwb3J0
XSkKK0FDX0FSR19FTkFCTEUod2ViX2F1ZGlvLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklO
RyhbLS1lbmFibGUtd2ViLWF1ZGlvXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vu
YWJsZSBzdXBwb3J0IGZvciBXZWIgQXVkaW8gW2RlZmF1bHQ9bm9dXSksCisgICAgICAgICAgICAg
IFtdLFtlbmFibGVfd2ViX2F1ZGlvPSJubyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV93ZWJf
YXVkaW9dKQogCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIFdlYiBUaW1pbmcgc3VwcG9ydApA
QCAtMTA1Miw2ICsxMDU2LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0
ZXN0ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgICAgICAgICAgICAgICAg
ICAgW2dzdHJlYW1lci0kR1NUX0FQSV9WRVJTSU9OID49ICRHU1RSRUFNRVJfUkVRVUlSRURfVkVS
U0lPTgogICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWFwcC0kR1NUX0FQSV9WRVJTSU9O
CiAgICAgICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYXVkaW8tJEdTVF9BUElfVkVSU0lPTgor
ICAgICAgICAgICAgICAgICAgICAgZ3N0cmVhbWVyLWZmdC0kR1NUX0FQSV9WRVJTSU9OCiAgICAg
ICAgICAgICAgICAgICAgICBnc3RyZWFtZXItYmFzZS0kR1NUX0FQSV9WRVJTSU9OCiAgICAgICAg
ICAgICAgICAgICAgICBnc3RyZWFtZXItaW50ZXJmYWNlcy0kR1NUX0FQSV9WRVJTSU9OCiAgICAg
ICAgICAgICAgICAgICAgICBnc3RyZWFtZXItcGJ1dGlscy0kR1NUX0FQSV9WRVJTSU9OCkBAIC0x
MDYzLDE2ICsxMDY4LDYgQEAgaWYgdGVzdCAiJGVuYWJsZV92aWRlbyIgPSAieWVzIiB8fCB0ZXN0
ICIkZW5hYmxlX3dlYl9hdWRpbyIgPSAieWVzIjsgdGhlbgogICAgQUNfU1VCU1QoW0dTVFJFQU1F
Ul9MSUJTXSkKIGZpCiAKLSMgY2hlY2sgaWYgbGliZmZ0dyBpcyBhdmFpbGFibGUKLWlmIHRlc3Qg
IiRlbmFibGVfd2ViX2F1ZGlvIiA9ICJ5ZXMiOyB0aGVuCi0gICBQS0dfQ0hFQ0tfTU9EVUxFUyhb
TElCRkZUV10sCi0gICAgICAgICAgICAgICAgICAgICBbZmZ0dzMgPj0gJExJQkZGVFdfUkVRVUlS
RURfVkVSU0lPTgotICAgICAgICAgICAgICAgICAgICAgZmZ0dzNmID49ICRMSUJGRlRXX1JFUVVJ
UkVEX1ZFUlNJT05dLAotICAgICAgICAgICAgICAgICAgICAgW2hhdmVfZmZ0dz15ZXNdKQotCi0g
ICAgQUNfU1VCU1QoW0xJQkZGVFdfQ0ZMQUdTXSkKLSAgICBBQ19TVUJTVChbTElCRkZUV19MSUJT
XSkKLWZpCiAKIGlmIHRlc3QgIiR3aXRoX2FjY2VsZXJhdGVkX2NvbXBvc2l0aW5nIiA9ICJjbHV0
dGVyIjsgdGhlbgogICAgUEtHX0NIRUNLX01PRFVMRVMoQ0xVVFRFUiwgY2x1dHRlci0xLjAgPj0g
JENMVVRURVJfUkVRVUlSRURfVkVSU0lPTikKQEAgLTExNzQsNiArMTE2OSw3IEBAIEFNX0NPTkRJ
VElPTkFMKFtVU0VfUEFOR09dLCBbdGVzdCAiJHdpdGhfZm9udF9iYWNrZW5kIiA9ICJwYW5nbyJd
KQogCiAjIEdTdHJlYW1lciBmZWF0dXJlIGNvbmRpdGlvbmFsCiBBTV9DT05ESVRJT05BTChbVVNF
X0dTVFJFQU1FUl0sIFt0ZXN0ICIkaGF2ZV9nc3RyZWFtZXIiID0gInllcyJdKQorQU1fQ09ORElU
SU9OQUwoW1VTRV9XRUJBVURJT19HU1RSRUFNRVJdLCBbdGVzdCAiJGVuYWJsZV93ZWJfYXVkaW8i
ID0gInllcyJdKQogCiAjIEFUU1BJMiBjb25kaXRpb25hbAogQU1fQ09ORElUSU9OQUwoW0hBVkVf
QVRTUEkyXSwgW3Rlc3QgIiRoYXZlX2F0c3BpMiIgPSAieWVzIl0pCi0tIAoxLjcuOQ==
</data>
<flag name="review"
          id="126379"
          type_id="1"
          status="+"
          setter="crogers"
    />
          </attachment>
      

    </bug>

</bugzilla>