<?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>72155</bug_id>
          
          <creation_ts>2011-11-11 10:57:31 -0800</creation_ts>
          <short_desc>Replace Qt QThread threading back-end with pthread/Win32 threading back-ends</short_desc>
          <delta_ts>2022-02-28 03:49:28 -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>WebKit Qt</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>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrew Wason">rectalogic</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>levin+threading</cc>
    
    <cc>paroga</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>500926</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-11 10:57:31 -0800</bug_when>
    <thetext>WebWorker QThreads can outlive the QApplication instance, and even various internal Qt global static state. This leads to random SEGVs and hangs on application exit. Moving away from ThreadingQt QThread back-end to use ThreadingPthreads or ThreadingWin helps to avoid this and reduce maintenance due to more code shared with the other platforms.

See bug 71718 for a valgrind/helgrind log showing the problem, and a discussion of using POSIX/Win32 threads instead of QThreads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500993</commentid>
    <comment_count>1</comment_count>
      <attachid>114751</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-11 12:05:06 -0800</bug_when>
    <thetext>Created attachment 114751
use native threading back-end

Tested on Linux and MacOS, but not Win32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501918</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-14 07:57:21 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; WebWorker QThreads can outlive the QApplication instance, and even various internal Qt global static state. This leads to random SEGVs and hangs on application exit. Moving away from ThreadingQt QThread back-end to use ThreadingPthreads or ThreadingWin helps to avoid this and reduce maintenance due to more code shared with the other platforms.
&gt; 
&gt; See bug 71718 for a valgrind/helgrind log showing the problem, and a discussion of using POSIX/Win32 threads instead of QThreads.

I like the idea of more code sharing and while introducing the pthreads dependency on windows is painful, I clearly see benefits. But I&apos;m curious about the web workers:

Could you elaborate a bit how it is possible that web workers can outlive the QApplication instance? It doesn&apos;t sound like something &quot;intentional&quot; to me, but I might easily be missing something :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501970</commentid>
    <comment_count>3</comment_count>
      <attachid>114959</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-14 09:06:40 -0800</bug_when>
    <thetext>Created attachment 114959
gdb backtrace showing WebWorker threads active after QCoreApplication destruction

(In reply to comment #2)
&gt; 
&gt; I like the idea of more code sharing and while introducing the pthreads dependency on windows is
&gt; painful, I clearly see benefits.

I don&apos;t think this introduces a pthreads dependency on windows, ThreadingWin.cpp uses native Win32 threading APIs.

&gt; Could you elaborate a bit how it is possible that web workers can outlive the QApplication instance?
&gt; It doesn&apos;t sound like something &quot;intentional&quot; to me, but I might easily be missing something :)

There is nothing that waits for the worker threads to finish - so there is a race condition. The WorkerThread event loops are quit, but they can still be busy tearing down state after QApplication has been destroyed.

I&apos;m attaching a gdb backtrace where a breakpoint was set at the end of  QCoreApplication::~QCoreApplication - after all application state has been deleted, and you can see a number of worker threads are still active (actively shutting down, but still active). This is using the sample app attached to bug 71718. Also various JS garbage collector threads can remain active.

Threads can also remain active after global static Qt internal state has been destroyed (e.g. after various Qt QGlobalStaticDeleters have destroyed global state). e.g. Q_GLOBAL_STATIC(QInternal_CallBackTable, global_callback_table) can be destroyed, and some QThread then attempts to disconnect() a signal handler and crashes because disconnect() needs global_callback_table.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503740</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-16 03:00:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=114959) [details]
&gt; gdb backtrace showing WebWorker threads active after QCoreApplication destruction
&gt; 
&gt; (In reply to comment #2)
&gt; &gt; 
&gt; &gt; I like the idea of more code sharing and while introducing the pthreads dependency on windows is
&gt; &gt; painful, I clearly see benefits.
&gt; 
&gt; I don&apos;t think this introduces a pthreads dependency on windows, ThreadingWin.cpp uses native Win32 threading APIs.
&gt; 
&gt; &gt; Could you elaborate a bit how it is possible that web workers can outlive the QApplication instance?
&gt; &gt; It doesn&apos;t sound like something &quot;intentional&quot; to me, but I might easily be missing something :)
&gt; 
&gt; There is nothing that waits for the worker threads to finish - so there is a race condition. The WorkerThread event loops are quit, but they can still be busy tearing down state after QApplication has been destroyed.

Hm, but shouldn&apos;t there be something that waits for them?

I mean... is it really true that for example when running a worker script in say Chrome it can actually outlive the life time of the &quot;tab&quot; or even window that started it? I find that difficult to believe, especially given that without being able to post a message back, why should it be left running? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504179</commentid>
    <comment_count>5</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-16 13:14:07 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt;
&gt; Hm, but shouldn&apos;t there be something that waits for them?

Yeah, it seems like there should. I created bug 72538 for that.

Meanwhile, I think there is still value in moving away from the Qt specific threading back end, so would like to proceed with getting this patch reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505560</commentid>
    <comment_count>6</comment_count>
      <attachid>114751</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-18 00:19:22 -0800</bug_when>
    <thetext>Comment on attachment 114751
use native threading back-end

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

Patch looks good to me! Except for the initialization bit (see comment below). So r- just to clarify that, but otherwise nice cleanup! :)

&gt; Source/WebKit/qt/Api/qwebsettings.cpp:311
&gt; +    if (!global) {
&gt; +        WebCore::ScriptController::initializeThreading();
&gt;          global = new QWebSettings;
&gt; +    }

Actually we call this already in QWebPagePagePrivate. Are you sure you need it here?

If yes, then we should move all those initializations into a central function that we can call from QWebPagePrivate as well as from here. I don&apos;t like the idea of
sprinkling Foo::initializeBar() over the code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505584</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-18 00:57:25 -0800</bug_when>
    <thetext>I see one problem (paroga just pointed out on IRC): By removing the use of QThread we might be breaking callOnMainThread, which needs scheduleDispatchFunctionsOnMainThread. in qt/MainThreadQt.cpp we post a message to the main gui thread, which requires that the current thread is a QThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505828</commentid>
    <comment_count>8</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-18 08:50:52 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; in qt/MainThreadQt.cpp we post a message to the main gui thread, which requires
&gt; that the current thread is a QThread.

I don&apos;t think that&apos;s the case - the native thread automatically becomes a QAdoptedThread if needed and posting messages to the main thread from it seems to work fine.

Setting a breakpoint in WTF::MainThreadInvoker::dispatch() and WTF::scheduleDispatchFunctionsOnMainThread() dispatch() is called on the main thread for each corresponding call to WTF::scheduleDispatchFunctionsOnMainThread()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505854</commentid>
    <comment_count>9</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-18 09:22:38 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/WebKit/qt/Api/qwebsettings.cpp:311
&gt; &gt; +    if (!global) {
&gt; &gt; +        WebCore::ScriptController::initializeThreading();
&gt; &gt;          global = new QWebSettings;
&gt; &gt; +    }
&gt; 
&gt; Actually we call this already in QWebPagePagePrivate. Are you sure you need it here?

Yes, global QWebSettings can be used before any QWebPage is created - and some settings (e.g. page cache settings) rely on threading being initialized.  QtTestBrowser does this and asserts without the above.

&gt; If yes, then we should move all those initializations into a central function that we can call
&gt; from QWebPagePrivate as well as from here. I don&apos;t like the idea of sprinkling Foo::initializeBar()
&gt; over the code :)

Do you mean extract all the global webkit initialization code (e.g. the first 10 lines of QWebPagePrivate::QWebPagePrivate) into some initializeWebKit() function that is called from QWebPagePrivate and QWebSettings::globalSettings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506065</commentid>
    <comment_count>10</comment_count>
      <attachid>115874</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-18 14:31:59 -0800</bug_when>
    <thetext>Created attachment 115874
extract initialization into common function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506067</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 14:35:05 -0800</bug_when>
    <thetext>Attachment 115874 did not pass style-queue:

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

Source/WebKit/qt/WebCoreSupport/InitWebCoreQt.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506071</commentid>
    <comment_count>12</comment_count>
      <attachid>115875</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-18 14:40:40 -0800</bug_when>
    <thetext>Created attachment 115875
extract initialization into common function

Fix style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506750</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-21 00:08:32 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; in qt/MainThreadQt.cpp we post a message to the main gui thread, which requires
&gt; &gt; that the current thread is a QThread.
&gt; 
&gt; I don&apos;t think that&apos;s the case - the native thread automatically becomes a QAdoptedThread if needed and posting messages to the main thread from it seems to 
work fine.

You&apos;re right. I saw the adopted thread stuff, but my grep missed the place where we create the adopted threads :)
 
&gt; Setting a breakpoint in WTF::MainThreadInvoker::dispatch() and WTF::scheduleDispatchFunctionsOnMainThread() dispatch() is called on the main thread for each corresponding call to WTF::scheduleDispatchFunctionsOnMainThread()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506751</commentid>
    <comment_count>14</comment_count>
      <attachid>115875</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-21 00:13:15 -0800</bug_when>
    <thetext>Comment on attachment 115875
extract initialization into common function

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

r=me, but I think this should be landed manually. It&apos;s quite a core change where we should watch the Qt bots closely.

I won&apos;t get around to doing it before the end of the week, so please feel free to beat me to it :)

&gt; Source/WebKit/qt/WebCoreSupport/InitWebCoreQt.cpp:2
&gt; + * Copyright 2011 Hewlett-Packard Development Company, L.P. All rights reserved.

Out of curiosity: You&apos;re using a rectalogic.com email address. How come this file is copyright HP?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506921</commentid>
    <comment_count>15</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-21 06:51:55 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Out of curiosity: You&apos;re using a rectalogic.com email address. How come this file is copyright HP?

I work for HP, but the corporate Exchange email sucks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508489</commentid>
    <comment_count>16</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-23 16:29:54 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; I won&apos;t get around to doing it before the end of the week, so please feel free to beat me to it :)

Now I&apos;m wondering if we should hold off on this patch.
Since the patch to wait for worker threads in bug 72538 is not going to be accepted, it may be more difficult to fix that if this patch is applied.

The problem is if we aren&apos;t using a QThreads back-end, then all the worker threads end up becoming QAdoptedThreads anyway (due to scheduleDispatchFunctionsOnMainThread), and we have no control over the QAdoptedThread objects lifetime (it is destroyed by Qt as part of thread shutdown). With the QThreads back-end, we control the QThread object lifetime and so could wait for any remaining QThreads when QApplication is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509268</commentid>
    <comment_count>17</comment_count>
      <attachid>116639</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-25 14:37:07 -0800</bug_when>
    <thetext>Created attachment 116639
initialize webkit_main_thread_invoker() on main thread

Updated the patch to initialize webkit_main_thread_invoker() on the main thread. The recent changes to dispatchFunctionsFromMainThread() from bug 72704 prevent the native threads from being infected by QAdoptedThread - but we need to only create webkit_main_thread_invoker() on the main thread or else the thread it is first created on becomes a QAdoptedThread leading to problems discussed in bug 72538.

So I believe this patch now also fixes bug 72538 - i.e. Qt no longer needs to wait for worker threads to exit when shutting down since the workers are plain native threads.

However, my test application still crashes occasionally - but not necessarily during shutdown. I was able to reproduce the crash in a test app that never shuts down (just periodically reloads a QWebPage with workers) - so I think that is a different bug.

So I think we should proceed with applying this patch, assuming it passes review, and then I&apos;ll close bug 72538 and open a new bug for this new worker crash issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509333</commentid>
    <comment_count>18</comment_count>
      <attachid>116639</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-25 23:35:35 -0800</bug_when>
    <thetext>Comment on attachment 116639
initialize webkit_main_thread_invoker() on main thread

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

r- because I believe the removal of the moveToThread() code will cause layout test failures (like it did on Thursday).

&gt; Source/JavaScriptCore/wtf/qt/MainThreadQt.cpp:73
&gt; +    QCoreApplication::postEvent(webkit_main_thread_invoker(), new QEvent(static_cast&lt;QEvent::Type&gt;(s_mainThreadInvokerEventType)));

There&apos;s a problem with the removal of the moveToThread code. There is currently no guarantee that initializeMainThreadPlatform is called before scheduleDispatchFunctionsOnMainThread() is called the first time from a thread. As a result it may happen that the webkit_main_thread_invoker object
will live on one of the threads other than the gui thread and as a result the functionality of scheduling the dispatch of functions on the main thread
won&apos;t work. We had exactly this problem on Thursday morning and if you run the layout tests on Linux with your patch applied, you&apos;ll see that all the appcache
tests will break and time out.

There are two solutions AFAICS:

    1) Keep the moveToThread code that I added. That&apos;s least intrusive and probably most robust, but it&apos;s so &quot;clean&quot;.

    2) Ensure initializeMainThreadPlatform() is called before any thread other than the gui thread is started.

The modification you&apos;re going to need for (2) is around the static functions in QWebSettings, in particular the icon database related ones. If you
call QWebSettings::setIconDatabasePath() before any other function in QtWebKit (like QWebSettings::globalSettings() or creating a QWebPage), then you
have the situation that the WebCore IconDatabase will spawn its thread before initializeMainThreadPlatform() is called, and that thread will call
scheduleDispatchFunctionsOnMainThread(), which in turn will cause the creation of the invoker object in the wrong thread with the wrong thread affinity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509844</commentid>
    <comment_count>19</comment_count>
      <attachid>116764</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-28 08:34:34 -0800</bug_when>
    <thetext>Created attachment 116764
initialize WebCore from public static QWebSettings methods

(In reply to comment #18)
&gt;     2) Ensure initializeMainThreadPlatform() is called before any thread other than the gui thread is started.

I did this. Any public static QWebSettings method could be called before a QWebPage has been constructed, and if those methods call any WebCore APIs they should ensure it has been initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509894</commentid>
    <comment_count>20</comment_count>
      <attachid>116771</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-11-28 09:47:00 -0800</bug_when>
    <thetext>Created attachment 116771
update patch for build-system changes in trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511522</commentid>
    <comment_count>21</comment_count>
      <attachid>116771</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-30 01:44:52 -0800</bug_when>
    <thetext>Comment on attachment 116771
update patch for build-system changes in trunk

r=me. Will land by hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511580</commentid>
    <comment_count>22</comment_count>
      <attachid>116771</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-30 03:01:47 -0800</bug_when>
    <thetext>Comment on attachment 116771
update patch for build-system changes in trunk

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

Due to the removal an implicit qstring.h disappeared and breaks the WK2 build. I&apos;ll fix that when landing.

&gt; Source/WebKit/qt/WebCoreSupport/InitWebCoreQt.cpp:33
&gt; +#include &quot;Logging.h&quot;

This include is causing a problem with the WebKit2 build due to the include path order and the double existance of Logging.h in the tree. I&apos;ll work around it by an intermediate inclusion when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511648</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-11-30 05:01:01 -0800</bug_when>
    <thetext>Additional fixes required: http://trac.webkit.org/changeset/101482 http://trac.webkit.org/changeset/101483 http://trac.webkit.org/changeset/101484 http://trac.webkit.org/changeset/101491

Committed r101477: &lt;http://trac.webkit.org/changeset/101477&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114751</attachid>
            <date>2011-11-11 12:05:06 -0800</date>
            <delta_ts>2011-11-18 14:31:59 -0800</delta_ts>
            <desc>use native threading back-end</desc>
            <filename>native-threads.diff</filename>
            <type>text/plain</type>
            <size>17304</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyMTVkNjIuLjhhMmQzMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTExICBBbmRyZXcgV2Fzb24g
IDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRocmVh
ZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNrLWVu
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTU1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFRo
cmVhZGluZ1B0aHJlYWRzIGFuZCBUaHJlYWRpbmdXaW4gaW5zdGVhZCBvZiBUaHJlYWRpbmdRdC4K
KworICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKiB3dGYv
TWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKToKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDog
RHJvcCBRVGhyZWFkU3RvcmFnZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChXVEY6Ojo6ZGVzdHJv
eSk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYv
cXQvTWFpblRocmVhZFF0LmNwcDogRHJvcCBRdCBzcGVjaWZpYyBpc01haW5UaHJlYWQoKQorICAg
ICAgICAqIHd0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3d0
Zi5wcmk6CisKIDIwMTEtMTEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjayBidWlsZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CmluZGV4IDgwNWM2MzQuLmY2MmVlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRl
IDxzdGRsaWIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKLSNpZiBVU0UoUFRI
UkVBRF9CQVNFRF9RVCkgJiYgIWRlZmluZWQoV1RGX1VTRV9QVEhSRUFEUykKLSNkZWZpbmUgV1RG
X1VTRV9QVEhSRUFEUyAxCi0jZW5kaWYKLQogI2lmIE9TKERBUldJTikKIAogI2luY2x1ZGUgPG1h
Y2gvbWFjaF9pbml0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01h
aW5UaHJlYWQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcApp
bmRleCA5NjdiNzE1Li5kZWM3YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL01haW5UaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRo
cmVhZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogdHlwZWRlZiBEZXF1ZTxGdW5jdGlv
bldpdGhDb250ZXh0PiBGdW5jdGlvblF1ZXVlOwogCiBzdGF0aWMgYm9vbCBjYWxsYmFja3NQYXVz
ZWQ7IC8vIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIG9ubHkgYWNjZXNzZWQgZnJvbSBtYWluIHRo
cmVhZC4KLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oUVQpCisjaWYgIVBMQVRGT1JN
KE1BQykKIHN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOwogI2Vu
ZGlmCiAKQEAgLTk2LDkgKzk2LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZCgpCiAgICAg
ICAgIHJldHVybjsKICAgICBpbml0aWFsaXplZE1haW5UaHJlYWQgPSB0cnVlOwogCi0jaWYgIVBM
QVRGT1JNKFFUKQogICAgIG1haW5UaHJlYWRJZGVudGlmaWVyID0gY3VycmVudFRocmVhZCgpOwot
I2VuZGlmCiAKICAgICBtYWluVGhyZWFkRnVuY3Rpb25RdWV1ZU11dGV4KCk7CiAgICAgaW5pdGlh
bGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpOwpAQCAtMjMxLDcgKzIyOSw3IEBAIHZvaWQgc2V0TWFp
blRocmVhZENhbGxiYWNrc1BhdXNlZChib29sIHBhdXNlZCkKICAgICAgICAgc2NoZWR1bGVEaXNw
YXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKFFUKQorI2lmICFQTEFURk9STShNQUMpCiBib29sIGlzTWFpblRocmVhZCgpCiB7
CiAgICAgcmV0dXJuIGN1cnJlbnRUaHJlYWQoKSA9PSBtYWluVGhyZWFkSWRlbnRpZmllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAppbmRleCA1NTNkYzVlLi5jNjgyNzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC00ODAsMTAgKzQ4MCw2IEBACiAjZGVm
aW5lIFdURl9VU0VfTUVSU0VOTkVfVFdJU1RFUl8xOTkzNyAxCiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKFFUKSAmJiBPUyhVTklYKSAmJiAhT1MoREFSV0lOKQotI2RlZmluZSBXVEZfVVNFX1BUSFJF
QURfQkFTRURfUVQgMQotI2VuZGlmCi0KIC8qIE9uIFdpbmRvd3MsIHVzZSBRdWVyeVBlcmZvcm1h
bmNlQ291bnRlciBieSBkZWZhdWx0ICovCiAjaWYgT1MoV0lORE9XUykKICNkZWZpbmUgV1RGX1VT
RV9RVUVSWV9QRVJGT1JNQU5DRV9DT1VOVEVSICAxCkBAIC02MTQsNiArNjEwLDkgQEAKICNkZWZp
bmUgV1RGX1VTRV9QVEhSRUFEUyAxCiAjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMQogI2Vu
ZGlmCisjZWxpZiBQTEFURk9STShRVCkgJiYgT1MoVU5JWCkKKyNkZWZpbmUgV1RGX1VTRV9QVEhS
RUFEUyAxCisjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMQogI2VuZGlmCiAKICNpZiAhZGVm
aW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZFNwZWNpZmljLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZFNwZWNpZmljLmgKaW5kZXggOTQwM2Q3MS4uNGQ3YzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaApAQCAtNDUsOCArNDUsNiBAQAogCiAjaWYgVVNFKFBU
SFJFQURTKQogI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNlbGlmIFBMQVRGT1JNKFFUKQotI2luY2x1
ZGUgPFFUaHJlYWRTdG9yYWdlPgogI2VsaWYgUExBVEZPUk0oR1RLKQogI2luY2x1ZGUgPGdsaWIu
aD4KICNlbGlmIE9TKFdJTkRPV1MpCkBAIC05MCw5ICs4OCw2IEBAIHByaXZhdGU6CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGEpOwogICAgIHB1YmxpYzoKICAgICAgICAgRGF0YShU
KiB2YWx1ZSwgVGhyZWFkU3BlY2lmaWM8VD4qIG93bmVyKSA6IHZhbHVlKHZhbHVlKSwgb3duZXIo
b3duZXIpIHt9Ci0jaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIH5EYXRhKCkgeyBvd25lci0+ZGVz
dHJveSh0aGlzKTsgfQotI2VuZGlmCiAKICAgICAgICAgVCogdmFsdWU7CiAgICAgICAgIFRocmVh
ZFNwZWNpZmljPFQ+KiBvd25lcjsKQEAgLTEwNCw4ICs5OSw2IEBAIHByaXZhdGU6CiAKICNpZiBV
U0UoUFRIUkVBRFMpCiAgICAgcHRocmVhZF9rZXlfdCBtX2tleTsKLSNlbGlmIFBMQVRGT1JNKFFU
KQotICAgIFFUaHJlYWRTdG9yYWdlPERhdGEqPiBtX2tleTsKICNlbGlmIFBMQVRGT1JNKEdUSykK
ICAgICBHU3RhdGljUHJpdmF0ZSBtX2tleTsKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0xMzYsMjgg
KzEyOSw2IEBAIGlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpzZXQoVCogcHRyKQogICAg
IHB0aHJlYWRfc2V0c3BlY2lmaWMobV9rZXksIG5ldyBEYXRhKHB0ciwgdGhpcykpOwogfQogCi0j
ZWxpZiBQTEFURk9STShRVCkKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUaHJlYWRT
cGVjaWZpYzxUPjo6VGhyZWFkU3BlY2lmaWMoKQotewotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotaW5saW5lIFQqIFRocmVhZFNwZWNpZmljPFQ+OjpnZXQoKQotewotICAgIERhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxEYXRhKj4obV9rZXkubG9jYWxEYXRhKCkpOwotICAgIHJldHVybiBkYXRh
ID8gZGF0YS0+dmFsdWUgOiAwOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZv
aWQgVGhyZWFkU3BlY2lmaWM8VD46OnNldChUKiBwdHIpCi17Ci0gICAgQVNTRVJUKCFnZXQoKSk7
Ci0gICAgRGF0YSogZGF0YSA9IG5ldyBEYXRhKHB0ciwgdGhpcyk7Ci0gICAgbV9rZXkuc2V0TG9j
YWxEYXRhKGRhdGEpOwotfQotCiAjZWxpZiBQTEFURk9STShHVEspCiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC0yNTAsMTggKzIyMSwxMiBAQCBpbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxU
Pjo6ZGVzdHJveSh2b2lkKiBwdHIpCiAgICAgLy8gU2VlIGNvbW1lbnQgYXMgYWJvdmUKICAgICBn
X3N0YXRpY19wcml2YXRlX3NldCgmZGF0YS0+b3duZXItPm1fa2V5LCBkYXRhLCAwKTsKICNlbmRp
ZgotI2lmIFBMQVRGT1JNKFFUKQotICAgIC8vIFNlZSBjb21tZW50IGFzIGFib3ZlCi0gICAgZGF0
YS0+b3duZXItPm1fa2V5LnNldExvY2FsRGF0YShkYXRhKTsKLSNlbmRpZgogCiAgICAgZGF0YS0+
dmFsdWUtPn5UKCk7CiAgICAgZmFzdEZyZWUoZGF0YS0+dmFsdWUpOwogCiAjaWYgVVNFKFBUSFJF
QURTKQogICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZGF0YS0+b3duZXItPm1fa2V5LCAwKTsKLSNl
bGlmIFBMQVRGT1JNKFFUKQotICAgIC8vIERvIG5vdGhpbmcgaGVyZQogI2VsaWYgUExBVEZPUk0o
R1RLKQogICAgIGdfc3RhdGljX3ByaXZhdGVfc2V0KCZkYXRhLT5vd25lci0+bV9rZXksIDAsIDAp
OwogI2VsaWYgT1MoV0lORE9XUykKQEAgLTI3MCw5ICsyMzUsNyBAQCBpbmxpbmUgdm9pZCBUaHJl
YWRTcGVjaWZpYzxUPjo6ZGVzdHJveSh2b2lkKiBwdHIpCiAjZXJyb3IgVGhyZWFkU3BlY2lmaWMg
aXMgbm90IGltcGxlbWVudGVkIGZvciB0aGlzIHBsYXRmb3JtLgogI2VuZGlmCiAKLSNpZiAhUExB
VEZPUk0oUVQpCiAgICAgZGVsZXRlIGRhdGE7Ci0jZW5kaWYKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgKaW5kZXggOWYyNjNhZS4uMWJlZDVkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTQ2LDE0ICs0Niw2IEBACiAjaW5jbHVkZSA8
cHRocmVhZC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxxZ2xvYmFs
Lmg+Ci1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFNdXRleDsKLWNsYXNzIFFXYWl0Q29uZGl0
aW9uOwotUVRfRU5EX05BTUVTUEFDRQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogCiAjaWYg
VVNFKFBUSFJFQURTKQpAQCAtNjQsMTAgKzU2LDYgQEAgdHlwZWRlZiBwdGhyZWFkX3J3bG9ja190
IFBsYXRmb3JtUmVhZFdyaXRlTG9jazsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1SZWFkV3JpdGVM
b2NrOwogI2VuZGlmCiB0eXBlZGVmIHB0aHJlYWRfY29uZF90IFBsYXRmb3JtQ29uZGl0aW9uOwot
I2VsaWYgUExBVEZPUk0oUVQpCi10eXBlZGVmIFFUX1BSRVBFTkRfTkFNRVNQQUNFKFFNdXRleCkq
IFBsYXRmb3JtTXV0ZXg7Ci10eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRlTG9jazsgLy8g
RklYTUU6IEltcGxlbWVudC4KLXR5cGVkZWYgUVRfUFJFUEVORF9OQU1FU1BBQ0UoUVdhaXRDb25k
aXRpb24pKiBQbGF0Zm9ybUNvbmRpdGlvbjsKICNlbGlmIE9TKFdJTkRPV1MpCiBzdHJ1Y3QgUGxh
dGZvcm1NdXRleCB7CiAgICAgQ1JJVElDQUxfU0VDVElPTiBtX2ludGVybmFsTXV0ZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAKaW5kZXggOThiNmEw
Yy4uNWY1ZTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWlu
VGhyZWFkUXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvTWFpblRocmVh
ZFF0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAj
aW5jbHVkZSA8UXRDb3JlL1FDb3JlQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UVRocmVhZD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKQEAgLTY3LDExICs2Niw2IEBAIHZvaWQgc2NoZWR1bGVEaXNwYXRj
aEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCiAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh3
ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpLCAiZGlzcGF0Y2giLCBRdDo6UXVldWVkQ29ubmVj
dGlvbik7CiB9CiAKLWJvb2wgaXNNYWluVGhyZWFkKCkKLXsKLSAgICByZXR1cm4gUVRocmVhZDo6
Y3VycmVudFRocmVhZCgpID09IFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnRocmVhZCgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2luY2x1ZGUgIk1haW5UaHJlYWRRdC5tb2Mi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxYjdjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjkz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBIYXlnb29kIChqaGF5Z29v
ZEByZWFrdGl4LmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRocmVhZGluZy5o
IgotCi0jaW5jbHVkZSAiRGF0ZU1hdGguaCIKLSNpbmNsdWRlICJkdG9hLmgiCi0jaW5jbHVkZSAi
Q3VycmVudFRpbWUuaCIKLSNpbmNsdWRlICJIYXNoTWFwLmgiCi0jaW5jbHVkZSAiTWFpblRocmVh
ZC5oIgotI2luY2x1ZGUgIlJhbmRvbU51bWJlclNlZWQuaCIKLSNpbmNsdWRlIDx3dGYvV1RGVGhy
ZWFkRGF0YS5oPgotCi0jaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRTXV0
ZXg+Ci0jaW5jbHVkZSA8UVRocmVhZD4KLSNpbmNsdWRlIDxRV2FpdENvbmRpdGlvbj4KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFRocmVhZFByaXZhdGUgOiBwdWJsaWMgUVRocmVhZCB7Ci1w
dWJsaWM6Ci0gICAgVGhyZWFkUHJpdmF0ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lk
KiBkYXRhKTsKLSAgICB2b2lkIHJ1bigpOwotICAgIHZvaWQqIGdldFJldHVyblZhbHVlKCkgeyBy
ZXR1cm4gbV9yZXR1cm5WYWx1ZTsgfQotcHJpdmF0ZToKLSAgICB2b2lkKiBtX2RhdGE7Ci0gICAg
VGhyZWFkRnVuY3Rpb24gbV9lbnRyeVBvaW50OwotICAgIHZvaWQqIG1fcmV0dXJuVmFsdWU7Ci19
OwotCi1UaHJlYWRQcml2YXRlOjpUaHJlYWRQcml2YXRlKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9p
bnQsIHZvaWQqIGRhdGEpIAotICAgIDogbV9kYXRhKGRhdGEpCi0gICAgLCBtX2VudHJ5UG9pbnQo
ZW50cnlQb2ludCkKLSAgICAsIG1fcmV0dXJuVmFsdWUoMCkKLXsKLX0KLQotdm9pZCBUaHJlYWRQ
cml2YXRlOjpydW4oKQotewotICAgIG1fcmV0dXJuVmFsdWUgPSBtX2VudHJ5UG9pbnQobV9kYXRh
KTsKLX0KLQotY2xhc3MgVGhyZWFkTW9uaXRvciA6IHB1YmxpYyBRT2JqZWN0IHsKLSAgICBRX09C
SkVDVAotcHVibGljOgotICAgIHN0YXRpYyBUaHJlYWRNb25pdG9yICogaW5zdGFuY2UoKQotICAg
IHsKLSAgICAgICAgc3RhdGljIFRocmVhZE1vbml0b3IgKmluc3RhbmNlID0gbmV3IFRocmVhZE1v
bml0b3IoKTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0KLQotcHVibGljIFFfU0xP
VFM6Ci0gICAgdm9pZCB0aHJlYWRGaW5pc2hlZCgpCi0gICAgewotICAgICAgICBzZW5kZXIoKS0+
ZGVsZXRlTGF0ZXIoKTsKLSAgICB9Ci19OwotCi1zdGF0aWMgTXV0ZXgqIGF0b21pY2FsbHlJbml0
aWFsaXplZFN0YXRpY011dGV4OwotCi1zdGF0aWMgTXV0ZXgmIHRocmVhZE1hcE11dGV4KCkKLXsK
LSAgICBzdGF0aWMgTXV0ZXggbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4OwotfQotCi1zdGF0aWMg
SGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBRVGhyZWFkKj4mIHRocmVhZE1hcCgpCi17Ci0gICAg
c3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVhZCo+IG1hcDsKLSAgICByZXR1
cm4gbWFwOwotfQotCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQnlRdGhyZWFk
SGFuZGxlKFFUaHJlYWQqJiB0aHJlYWQpCi17Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVh
ZE1hcE11dGV4KCkpOwotCi0gICAgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBRVGhyZWFkKj46
Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOwotICAgIGZvciAoOyBpICE9IHRocmVh
ZE1hcCgpLmVuZCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGktPnNlY29uZCA9PSB0aHJlYWQpCi0g
ICAgICAgICAgICByZXR1cm4gaS0+Zmlyc3Q7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0K
LXN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGVzdGFibGlzaElkZW50aWZpZXJGb3JUaHJlYWQoUVRo
cmVhZComIHRocmVhZCkKLXsKLSAgICBBU1NFUlQoIWlkZW50aWZpZXJCeVF0aHJlYWRIYW5kbGUo
dGhyZWFkKSk7Ci0KLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0K
LSAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQ291bnQgPSAxOwotCi0gICAg
dGhyZWFkTWFwKCkuYWRkKGlkZW50aWZpZXJDb3VudCwgdGhyZWFkKTsKLQotICAgIHJldHVybiBp
ZGVudGlmaWVyQ291bnQrKzsKLX0KLQotc3RhdGljIHZvaWQgY2xlYXJUaHJlYWRGb3JJZGVudGlm
aWVyKFRocmVhZElkZW50aWZpZXIgaWQpCi17Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVh
ZE1hcE11dGV4KCkpOwotCi0gICAgQVNTRVJUKHRocmVhZE1hcCgpLmNvbnRhaW5zKGlkKSk7Ci0K
LSAgICB0aHJlYWRNYXAoKS5yZW1vdmUoaWQpOwotfQotCi1zdGF0aWMgUVRocmVhZCogdGhyZWFk
Rm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQotewotICAgIE11dGV4TG9ja2VyIGxv
Y2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIHJldHVybiB0aHJlYWRNYXAoKS5nZXQoaWQp
OwotfQotCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQotewotICAgIGlmICghYXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsKLSAgICAgICAgLy8gU3RyaW5nSW1wbDo6ZW1wdHko
KSBkb2VzIG5vdCBjb25zdHJ1Y3QgaXRzIHN0YXRpYyBzdHJpbmcgaW4gYSB0aHJlYWRzYWZlIGZh
c2hpb24sCi0gICAgICAgIC8vIHNvIGVuc3VyZSBpdCBoYXMgYmVlbiBpbml0aWFsaXplZCBmcm9t
IGhlcmUuCi0gICAgICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7Ci0gICAgICAgIGF0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4OwotICAgICAgICB0aHJlYWRNYXBNdXRl
eCgpOwotICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJhdG9yKCk7Ci0gICAgICAg
IHd0ZlRocmVhZERhdGEoKTsKLSAgICAgICAgc19kdG9hUDVNdXRleCA9IG5ldyBNdXRleDsKLSAg
ICAgICAgaW5pdGlhbGl6ZURhdGVzKCk7Ci0gICAgfQotfQotCi12b2lkIGxvY2tBdG9taWNhbGx5
SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAgQVNTRVJUKGF0b21pY2FsbHlJbml0aWFs
aXplZFN0YXRpY011dGV4KTsKLSAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleC0+
bG9jaygpOwotfQotCi12b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4
KCkKLXsKLSAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleC0+dW5sb2NrKCk7Ci19
Ci0KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24g
ZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciopCi17Ci0gICAgVGhyZWFkUHJpdmF0
ZSogdGhyZWFkID0gbmV3IFRocmVhZFByaXZhdGUoZW50cnlQb2ludCwgZGF0YSk7Ci0gICAgaWYg
KCF0aHJlYWQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHRocmVhZCBh
dCBlbnRyeSBwb2ludCAlcCB3aXRoIGRhdGEgJXAiLCBlbnRyeVBvaW50LCBkYXRhKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUU9iamVjdDo6Y29ubmVjdCh0aHJlYWQsIFNJR05B
TChmaW5pc2hlZCgpKSwgVGhyZWFkTW9uaXRvcjo6aW5zdGFuY2UoKSwgU0xPVCh0aHJlYWRGaW5p
c2hlZCgpKSk7Ci0KLSAgICB0aHJlYWQtPnN0YXJ0KCk7Ci0KLSAgICBRVGhyZWFkKiB0aHJlYWRS
ZWYgPSBzdGF0aWNfY2FzdDxRVGhyZWFkKj4odGhyZWFkKTsKLQotICAgIHJldHVybiBlc3RhYmxp
c2hJZGVudGlmaWVyRm9yVGhyZWFkKHRocmVhZFJlZik7Ci19Ci0KLXZvaWQgaW5pdGlhbGl6ZUN1
cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikKLXsKLX0KLQotaW50IHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZvaWQqKiByZXN1bHQpCi17
Ci0gICAgQVNTRVJUKHRocmVhZElEKTsKLQotICAgIFFUaHJlYWQqIHRocmVhZCA9IHRocmVhZEZv
cklkZW50aWZpZXIodGhyZWFkSUQpOwotCi0gICAgYm9vbCByZXMgPSB0aHJlYWQtPndhaXQoKTsK
LQotICAgIGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcih0aHJlYWRJRCk7Ci0gICAgaWYgKHJlc3Vs
dCkKLSAgICAgICAgKnJlc3VsdCA9IHN0YXRpY19jYXN0PFRocmVhZFByaXZhdGUqPih0aHJlYWQp
LT5nZXRSZXR1cm5WYWx1ZSgpOwotCi0gICAgcmV0dXJuICFyZXM7Ci19Ci0KLXZvaWQgZGV0YWNo
VGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQpCi17Ci0gICAgQVNTRVJUKHRocmVhZElE
KTsKLSAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQpOwotfQotCi1UaHJlYWRJ
ZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQotewotICAgIFFUaHJlYWQqIGN1cnJlbnRUaHJlYWQg
PSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7Ci0gICAgaWYgKFRocmVhZElkZW50aWZpZXIgaWQg
PSBpZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQpKQotICAgICAgICByZXR1
cm4gaWQ7Ci0gICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JUaHJlYWQoY3VycmVudFRo
cmVhZCk7Ci19Ci0KLXZvaWQgeWllbGQoKQotewotICAgIFFUaHJlYWQ6OnlpZWxkQ3VycmVudFRo
cmVhZCgpOwotfQotCi1NdXRleDo6TXV0ZXgoKQotICAgIDogbV9tdXRleChuZXcgUU11dGV4KCkp
Ci17Ci19Ci0KLU11dGV4Ojp+TXV0ZXgoKQotewotICAgIGRlbGV0ZSBtX211dGV4OwotfQotCi12
b2lkIE11dGV4Ojpsb2NrKCkKLXsKLSAgICBtX211dGV4LT5sb2NrKCk7Ci19Ci0KLWJvb2wgTXV0
ZXg6OnRyeUxvY2soKQotewotICAgIHJldHVybiBtX211dGV4LT50cnlMb2NrKCk7Ci19Ci0KLXZv
aWQgTXV0ZXg6OnVubG9jaygpCi17Ci0gICAgbV9tdXRleC0+dW5sb2NrKCk7Ci19Ci0KLVRocmVh
ZENvbmRpdGlvbjo6VGhyZWFkQ29uZGl0aW9uKCkKLSAgICA6IG1fY29uZGl0aW9uKG5ldyBRV2Fp
dENvbmRpdGlvbigpKQotewotfQotCi1UaHJlYWRDb25kaXRpb246On5UaHJlYWRDb25kaXRpb24o
KQotewotICAgIGRlbGV0ZSBtX2NvbmRpdGlvbjsKLX0KLQotdm9pZCBUaHJlYWRDb25kaXRpb246
OndhaXQoTXV0ZXgmIG11dGV4KQotewotICAgIG1fY29uZGl0aW9uLT53YWl0KG11dGV4LmltcGwo
KSk7Ci19Ci0KLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQoTXV0ZXgmIG11dGV4LCBk
b3VibGUgYWJzb2x1dGVUaW1lKQotewotICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IFdURjo6Y3Vy
cmVudFRpbWUoKTsKLQotICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3QgLSByZXR1cm4gaW1tZWRp
YXRlbHkuCi0gICAgaWYgKGFic29sdXRlVGltZSA8IGN1cnJlbnRUaW1lKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICAvLyBUaW1lIGlzIHRvbyBmYXIgaW4gdGhlIGZ1dHVyZSAoYW5kIHdv
dWxkIG92ZXJmbG93IHVuc2lnbmVkIGxvbmcpIC0gd2FpdCBmb3JldmVyLgotICAgIGlmIChhYnNv
bHV0ZVRpbWUgLSBjdXJyZW50VGltZSA+IHN0YXRpY19jYXN0PGRvdWJsZT4oSU5UX01BWCkgLyAx
MDAwLjApIHsKLSAgICAgICAgd2FpdChtdXRleCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IChhYnNvbHV0ZVRpbWUgLSBj
dXJyZW50VGltZSkgKiAxMDAwLjA7Ci0gICAgcmV0dXJuIG1fY29uZGl0aW9uLT53YWl0KG11dGV4
LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW50ZXJ2YWxNaWxsaXNlY29uZHMp
KTsKLX0KLQotdm9pZCBUaHJlYWRDb25kaXRpb246OnNpZ25hbCgpCi17Ci0gICAgbV9jb25kaXRp
b24tPndha2VPbmUoKTsKLX0KLQotdm9pZCBUaHJlYWRDb25kaXRpb246OmJyb2FkY2FzdCgpCi17
Ci0gICAgbV9jb25kaXRpb24tPndha2VBbGwoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jaW5jbHVkZSAiVGhyZWFkaW5nUXQubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi93dGYucHJpIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJp
CmluZGV4IGQ1MjJkMGEuLmM5ZWFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvd3RmLnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKQEAg
LTEzOSw2ICsxMzksOCBAQCBIRUFERVJTICs9IFwKICAgICB3dGYvVk1UYWdzLmggXAogICAgIHd0
Zi9XVEZUaHJlYWREYXRhLmgKIAordW5peDogSEVBREVSUyArPSB3dGYvVGhyZWFkSWRlbnRpZmll
ckRhdGFQdGhyZWFkcy5oCisKIFNPVVJDRVMgKz0gXAogICAgIHd0Zi9Bc3NlcnRpb25zLmNwcCBc
CiAgICAgd3RmL0JpdFZlY3Rvci5jcHAgXApAQCAtMTY3LDcgKzE2OSw2IEBAIFNPVVJDRVMgKz0g
XAogICAgIHd0Zi9PU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHd0Zi9xdC9NYWluVGhyZWFkUXQu
Y3BwIFwKICAgICB3dGYvcXQvU3RyaW5nUXQuY3BwIFwKLSAgICB3dGYvcXQvVGhyZWFkaW5nUXQu
Y3BwIFwKICAgICB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCiAgICAgd3RmL1BhZ2VC
bG9jay5jcHAgXAogICAgIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBcCkBAIC0xODksNSAr
MTkwLDEzIEBAIFNPVVJDRVMgKz0gXAogICAgIHd0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5j
cHAgXAogICAgIHd0Zi91bmljb2RlL1VURjguY3BwCiAKLXVuaXg6IFNPVVJDRVMgKz0gd3RmL09T
QWxsb2NhdG9yUG9zaXguY3BwCi13aW4qfHdpbmNlKjogU09VUkNFUyArPSB3dGYvT1NBbGxvY2F0
b3JXaW4uY3BwCisKK3VuaXg6IFNPVVJDRVMgKz0gXAorICAgIHd0Zi9PU0FsbG9jYXRvclBvc2l4
LmNwcCBcCisgICAgd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwIFwKKyAgICB3
dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisKK3dpbip8d2luY2UqOiBTT1VSQ0VTICs9IFwKKyAg
ICB3dGYvT1NBbGxvY2F0b3JXaW4uY3BwIFwKKyAgICB3dGYvVGhyZWFkU3BlY2lmaWNXaW4uY3Bw
IFwKKyAgICB3dGYvVGhyZWFkaW5nV2luLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5n
cy5jcHAKaW5kZXggMTIxNmVjOS4uOWNiZmUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGFnZUNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCkBAIC0zMDQsOCArMzA1LDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6
YXBwbHkoKQogUVdlYlNldHRpbmdzKiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKIHsK
ICAgICBzdGF0aWMgUVdlYlNldHRpbmdzKiBnbG9iYWwgPSAwOwotICAgIGlmICghZ2xvYmFsKQor
ICAgIGlmICghZ2xvYmFsKSB7CisgICAgICAgIFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICAgICAgZ2xvYmFsID0gbmV3IFFXZWJTZXR0aW5nczsK
KyAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAxOTI5Nzc3
Li5jYmI0ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTExICBB
bmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAgIFJlcGxh
Y2UgUXQgUVRocmVhZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVh
ZGluZyBiYWNrLWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcyMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTmVlZCB0byBpbml0aWFsaXplVGhyZWFkaW5nKCkgd2hlbiB1c2luZyBnbG9iYWwgUVdl
YlNldHRpbmdzIHNpbmNlCisgICAgICAgIHNvbWUgc2V0dGluZ3MgdXNlIFdURjo6Y3VycmVudFRo
cmVhZCB3aGljaCBuZWVkcyBwdGhyZWFkcyB0byBiZQorICAgICAgICBpbml0aWFsaXplZC4KKwor
ICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpn
bG9iYWxTZXR0aW5ncyk6CisKIDIwMTEtMTEtMTAgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVu
YXJkQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBNZXJnZSBRVG91Y2hXZWJWaWV3IGFu
ZCBRRGVza3RvcFdlYlZpZXcgaW50byBvbmUgY2xhc3MK
</data>
<flag name="review"
          id="113484"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="113485"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>114959</attachid>
            <date>2011-11-14 09:06:40 -0800</date>
            <delta_ts>2011-11-14 09:06:40 -0800</delta_ts>
            <desc>gdb backtrace showing WebWorker threads active after QCoreApplication destruction</desc>
            <filename>active-workers.log</filename>
            <type>text/plain</type>
            <size>32881</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">W1N3aXRjaGluZyB0byB0aHJlYWQgMSAoVGhyZWFkIDB4N2ZmZmY3ZmNmN2EwIChMV1AgMTI3ODAp
KV0KIzAgIFFDb3JlQXBwbGljYXRpb246On5RQ29yZUFwcGxpY2F0aW9uICh0aGlzPTB4N2ZmZmZm
ZmZlMzcwLCAKICAgIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pIGF0IGtlcm5lbC9xY29yZWFw
cGxpY2F0aW9uLmNwcDo3ODYKNzg2CSAgICBRQ29yZUFwcGxpY2F0aW9uUHJpdmF0ZTo6ZXZlbnRE
aXNwYXRjaGVyID0gMDsKClRocmVhZCAxMyAoVGhyZWFkIDB4N2ZmZjk5ZmZjNzAwIChMV1AgMTI3
OTIpKToKIzAgIDB4MDAwMDdmZmZmMzVkNmJjOSBpbiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0QEBH
TElCQ18yLjMuMiAoKQogICBmcm9tIC9saWIvbGlicHRocmVhZC5zby4wCiMxICAweDAwMDA3ZmZm
ZjM4OTNhODUgaW4gUVdhaXRDb25kaXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4N2ZmZjk0MDAx
YWMwLCAKICAgIHRpbWU9MTAwMCkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjg0
CiMyICAweDAwMDA3ZmZmZjM4OTM4NDkgaW4gUVdhaXRDb25kaXRpb246OndhaXQgKHRoaXM9MHg3
ZmZmOTQwMDFhYTAsIG11dGV4PQogICAgMHg3ZmZmOTQwMDFhNTAsIHRpbWU9MTAwMCkgYXQgdGhy
ZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjE1OAojMyAgMHgwMDAwN2ZmZmY2NGEyYzMxIGlu
IFdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQgKHRoaXM9CiAgICAweDdmZmZhNDA3MjA2
OCwgbXV0ZXg9Li4uLCBhYnNvbHV0ZVRpbWU9MTMyMTI4ODM5MC4xNDQ5MTg5KQogICAgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6Mjc4
CiM0ICAweDAwMDA3ZmZmZjY1NDNmZmEgaW4gSlNDOjpIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1l
V2hpbGVIb2xkaW5nTG9jayAodGhpcz0KICAgIDB4N2ZmZmE0MDcxZDQ4LCByZWxhdGl2ZT0xKQog
ICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6Mzkx
CiM1ICAweDAwMDA3ZmZmZjY1NDQwM2YgaW4gSlNDOjpIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1l
ICh0aGlzPTB4N2ZmZmE0MDcxZDQ4LCAKICAgIHJlbGF0aXZlPTEpIGF0IC4uLy4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwOjQwMQojNiAgMHgwMDAwN2ZmZmY2NTQ0
MGJjIGluIEpTQzo6SGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFkTWFpbiAodGhpcz0KICAgIDB4N2Zm
ZmE0MDcxZDQ4KSBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcDo0MTUKIzcgIDB4MDAwMDdmZmZmNjU0NDA4YyBpbiBKU0M6OkhlYXA6OmJsb2NrRnJlZWlu
Z1RocmVhZFN0YXJ0RnVuYyAoaGVhcD0KICAgIDB4N2ZmZmE0MDcxZDQ4KSBhdCAuLi8uLi8uLi8u
Li9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcDo0MDYKIzggIDB4MDAwMDdmZmZm
NjRhOTRkNSBpbiBXVEY6OnRocmVhZEVudHJ5UG9pbnQgKGNvbnRleHREYXRhPTB4N2ZmZjk0MDA2
YjMwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuY3BwOjY3CiM5ICAweDAwMDA3ZmZmZjY0YTIwNTEgaW4gV1RGOjpUaHJlYWRQcml2YXRlOjpy
dW4gKHRoaXM9MHg3ZmZmOTQwMDZiYjApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDo2NwojMTAgMHgwMDAwN2ZmZmYzODkyMmU5
IGluIFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4N2ZmZjk0MDA2YmIwKQogICAgYXQgdGhy
ZWFkL3F0aHJlYWRfdW5peC5jcHA6Mjk4CiMxMSAweDAwMDA3ZmZmZjM1ZDE5Y2EgaW4gc3RhcnRf
dGhyZWFkICgpIGZyb20gL2xpYi9saWJwdGhyZWFkLnNvLjAKIzEyIDB4MDAwMDdmZmZmMmI4MDcw
ZCBpbiBjbG9uZSAoKSBmcm9tIC9saWIvbGliYy5zby42CiMxMyAweDAwMDAwMDAwMDAwMDAwMDAg
aW4gPz8gKCkKClRocmVhZCAxMiAoVGhyZWFkIDB4N2ZmZjlhYmZkNzAwIChMV1AgMTI3OTEpKToK
IzAgIDB4MDAwMDdmZmZmMzVkNmJjOSBpbiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0QEBHTElCQ18y
LjMuMiAoKQogICBmcm9tIC9saWIvbGlicHRocmVhZC5zby4wCiMxICAweDAwMDA3ZmZmZjM4OTNh
ODUgaW4gUVdhaXRDb25kaXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4NzMyOTcwLCB0aW1lPTk5
OSkKICAgIGF0IHRocmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcDo4NAojMiAgMHgwMDAwN2Zm
ZmYzODkzODQ5IGluIFFXYWl0Q29uZGl0aW9uOjp3YWl0ICh0aGlzPTB4NzJjMWYwLCBtdXRleD0w
eDczMjMwMCwgCiAgICB0aW1lPTk5OSkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3Bw
OjE1OAojMyAgMHgwMDAwN2ZmZmY2NGEyYzMxIGluIFdURjo6VGhyZWFkQ29uZGl0aW9uOjp0aW1l
ZFdhaXQgKHRoaXM9CiAgICAweDdmZmZhNDA2NzYwOCwgbXV0ZXg9Li4uLCBhYnNvbHV0ZVRpbWU9
MTMyMTI4ODM5MC4xNDI5NzEpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoyNzgKIzQgIDB4MDAwMDdmZmZmNjU0M2ZmYSBpbiBK
U0M6OkhlYXA6OndhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrICh0aGlzPQogICAg
MHg3ZmZmYTQwNjcyZTgsIHJlbGF0aXZlPTEpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcDozOTEKIzUgIDB4MDAwMDdmZmZmNjU0NDAzZiBpbiBK
U0M6OkhlYXA6OndhaXRGb3JSZWxhdGl2ZVRpbWUgKHRoaXM9MHg3ZmZmYTQwNjcyZTgsIAogICAg
cmVsYXRpdmU9MSkgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHA6NDAxCiM2ICAweDAwMDA3ZmZmZjY1NDQwYmMgaW4gSlNDOjpIZWFwOjpibG9ja0ZyZWVp
bmdUaHJlYWRNYWluICh0aGlzPQogICAgMHg3ZmZmYTQwNjcyZTgpIGF0IC4uLy4uLy4uLy4uL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwOjQxNQojNyAgMHgwMDAwN2ZmZmY2NTQ0
MDhjIGluIEpTQzo6SGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jIChoZWFwPQogICAg
MHg3ZmZmYTQwNjcyZTgpIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwOjQwNgojOCAgMHgwMDAwN2ZmZmY2NGE5NGQ1IGluIFdURjo6dGhyZWFkRW50cnlQ
b2ludCAoY29udGV4dERhdGE9MHg3MzIxNjApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHA6NjcKIzkgIDB4MDAwMDdmZmZmNjRhMjA1MSBp
biBXVEY6OlRocmVhZFByaXZhdGU6OnJ1biAodGhpcz0weDdmZmY5YzAwM2M5MCkKICAgIGF0IC4u
Ly4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwOjY3
CiMxMCAweDAwMDA3ZmZmZjM4OTIyZTkgaW4gUVRocmVhZFByaXZhdGU6OnN0YXJ0IChhcmc9MHg3
ZmZmOWMwMDNjOTApCiAgICBhdCB0aHJlYWQvcXRocmVhZF91bml4LmNwcDoyOTgKIzExIDB4MDAw
MDdmZmZmMzVkMTljYSBpbiBzdGFydF90aHJlYWQgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28u
MAojMTIgMHgwMDAwN2ZmZmYyYjgwNzBkIGluIGNsb25lICgpIGZyb20gL2xpYi9saWJjLnNvLjYK
IzEzIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAoKQoKVGhyZWFkIDExIChUaHJlYWQgMHg3ZmZm
OWIzZmU3MDAgKExXUCAxMjc5MCkpOgojMCAgMHgwMDAwN2ZmZmY0MTJjZWY4IGluIFFCYXNpY0F0
b21pY0ludDo6dGVzdEFuZFNldE9yZGVyZWQgKHRoaXM9CiAgICAweDdmZmZhNDA3MjdiMCwgZXhw
ZWN0ZWRWYWx1ZT0xLCBuZXdWYWx1ZT0wKQogICAgYXQgLi4vLi4vaW5jbHVkZS9RdENvcmUvLi4v
Li4vc3JjL2NvcmVsaWIvYXJjaC9xYXRvbWljX3g4Nl82NC5oOjE0NQojMSAgMHgwMDAwN2ZmZmYz
ODhiNWFhIGluIFFCYXNpY0F0b21pY0ludDo6dGVzdEFuZFNldFJlbGVhc2UgKHRoaXM9CiAgICAw
eDdmZmZhNDA3MjdiMCwgZXhwZWN0ZWRWYWx1ZT0xLCBuZXdWYWx1ZT0wKQogICAgYXQgLi4vLi4v
aW5jbHVkZS9RdENvcmUvLi4vLi4vc3JjL2NvcmVsaWIvYXJjaC9xYXRvbWljX3g4Nl82NC5oOjI3
MgojMiAgMHgwMDAwN2ZmZmYzODhiMjFlIGluIFFNdXRleDo6dW5sb2NrICh0aGlzPTB4N2ZmZmE0
MDcyNzkwKQogICAgYXQgdGhyZWFkL3FtdXRleC5jcHA6MzAwCiMzICAweDAwMDA3ZmZmZjY0YTI5
ZjEgaW4gV1RGOjpNdXRleDo6dW5sb2NrICh0aGlzPTB4N2ZmZmE0MDcyNzUwKQogICAgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6MjQ1
CiM0ICAweDAwMDA3ZmZmZjUzMDFhMmIgaW4gV1RGOjpMb2NrZXI8V1RGOjpNdXRleD46On5Mb2Nr
ZXIgKHRoaXM9CiAgICAweDdmZmY5YjNmZDNiMCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikK
ICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTG9ja2VyLmg6MzkKIzUg
IDB4MDAwMDdmZmZmNTMwM2E4YiBpbiBXVEY6OmFkZEl0ZXJhdG9yPFdURjo6U3RyaW5nSW1wbCos
IFdURjo6U3RyaW5nSW1wbCosIFdURjo6SWRlbnRpdHlFeHRyYWN0b3I8V1RGOjpTdHJpbmdJbXBs
Kj4sIFdURjo6U3RyaW5nSGFzaCwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+LCBX
VEY6Okhhc2hUcmFpdHM8V1RGOjpTdHJpbmdJbXBsKj4gPiAodGFibGU9MHg3ZmZmYTQwNzI3MzAs
IGl0PQogICAgMHg3ZmZmOWIzZmQ0NDApIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvSGFzaFRhYmxlLmg6MTEwNwojNiAgMHgwMDAwN2ZmZmY1MzAxYWUxIGluIFdURjo6SGFz
aFRhYmxlQ29uc3RJdGVyYXRvcjxXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OlN0cmluZ0ltcGwqLCBX
VEY6OklkZW50aXR5RXh0cmFjdG9yPFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6OlN0cmluZ0hhc2gs
IFdURjo6SGFzaFRyYWl0czxXVEY6OlN0cmluZ0ltcGwqPiwgV1RGOjpIYXNoVHJhaXRzPFdURjo6
U3RyaW5nSW1wbCo+ID46Okhhc2hUYWJsZUNvbnN0SXRlcmF0b3IgKHRoaXM9MHg3ZmZmOWIzZmQ0
NDAsIG90aGVyPS4uLikKICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
SGFzaFRhYmxlLmg6MTQ1CiM3ICAweDAwMDA3ZmZmZjUzMDNiNDYgaW4gV1RGOjpIYXNoVGFibGVJ
dGVyYXRvcjxXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OklkZW50aXR5
RXh0cmFjdG9yPFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6OlN0cmluZ0hhc2gsIFdURjo6SGFzaFRy
YWl0czxXVEY6OlN0cmluZ0ltcGwqPiwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+
ID46Om9wZXJhdG9yIFdURjo6SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxXVEY6OlN0cmluZ0ltcGwq
LCBXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OklkZW50aXR5RXh0cmFjdG9yPFdURjo6U3RyaW5nSW1w
bCo+LCBXVEY6OlN0cmluZ0hhc2gsIFdURjo6SGFzaFRyYWl0czxXVEY6OlN0cmluZ0ltcGwqPiwg
V1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+ID4gKHRoaXM9MHg3ZmZmOWIzZmQ0NzAp
CiAgICBhdCAuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oOjI1
NgojOCAgMHgwMDAwN2ZmZmY2NGFiNGZkIGluIFdURjo6SGFzaFRhYmxlPFdURjo6U3RyaW5nSW1w
bCosIFdURjo6U3RyaW5nSW1wbCosIFdURjo6SWRlbnRpdHlFeHRyYWN0b3I8V1RGOjpTdHJpbmdJ
bXBsKj4sIFdURjo6U3RyaW5nSGFzaCwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+
LCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpTdHJpbmdJbXBsKj4gPjo6cmVtb3ZlV2l0aG91dEVudHJ5
Q29uc2lzdGVuY3lDaGVjayAodGhpcz0weDdmZmZhNDA3MjczMCwgaXQ9Li4uKQogICAgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaDo4ODcKIzkgIDB4
MDAwMDdmZmZmNjRhYjE5YyBpbiBXVEY6Okhhc2hTZXQ8V1RGOjpTdHJpbmdJbXBsKiwgV1RGOjpT
dHJpbmdIYXNoLCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpTdHJpbmdJbXBsKj4gPjo6cmVtb3ZlICh0
aGlzPTB4N2ZmZmE0MDcyNzMwLCBpdD0uLi4pCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL0hhc2hTZXQuaDoxOTgKIzEwIDB4MDAwMDdmZmZmNjRiNTYxZSBpbiBK
U0M6OklkZW50aWZpZXJUYWJsZTo6cmVtb3ZlKFdURjo6U3RyaW5nSW1wbCopICgpCiAgIGZyb20g
L2hvbWUvYXcvUHJvamVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQuc28uNAoj
MTEgMHgwMDAwN2ZmZmY2NGFmODQyIGluIFdURjo6U3RyaW5nSW1wbDo6flN0cmluZ0ltcGwgKHRo
aXM9MHg3ZmZmOWMwMzFmZDAsIAogICAgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0
IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNw
cDo1MAojMTIgMHgwMDAwN2ZmZmY1MmY0MTVlIGluIFdURjo6U3RyaW5nSW1wbDo6ZGVyZWYgKHRo
aXM9MHg3ZmZmOWMwMzFmZDApCiAgICBhdCAuLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oOjM3NgojMTMgMHgwMDAwN2ZmZmY1MzAzNTliIGluIFdURjo6
ZGVyZWZJZk5vdE51bGw8V1RGOjpTdHJpbmdJbXBsPiAocHRyPQogICAgMHg3ZmZmOWMwMzFmZDAp
IGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oOjU5CiMx
NCAweDAwMDA3ZmZmZjUzMDE3NjkgaW4gV1RGOjpSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPjo6flJl
ZlB0ciAodGhpcz0KICAgIDB4N2ZmZjljMDMxMjUwLCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+
KQogICAgYXQgLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9SZWZQdHIuaDo1OAoj
MTUgMHgwMDAwN2ZmZmY2NGVlMTk2IGluIHN0ZDo6cGFpcjxXVEY6OlJlZlB0cjxXVEY6OlN0cmlu
Z0ltcGw+LCBKU0M6OlN5bWJvbFRhYmxlRW50cnk+Ojp+cGFpcigpICgpCiAgIGZyb20gL2hvbWUv
YXcvUHJvamVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQuc28uNAojMTYgMHgw
MDAwN2ZmZmY2NGVlMWUxIGluIFdURjo6SGFzaFRhYmxlPFdURjo6UmVmUHRyPFdURjo6U3RyaW5n
SW1wbD4sIHN0ZDo6cGFpcjxXVEY6OlJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+LCBKU0M6OlN5bWJv
bFRhYmxlRW50cnk+LCBXVEY6OlBhaXJGaXJzdEV4dHJhY3RvcjxzdGQ6OnBhaXI8V1RGOjpSZWZQ
dHI8V1RGOjpTdHJpbmdJbXBsPiwgSlNDOjpTeW1ib2xUYWJsZUVudHJ5PiA+LCBKU0M6OklkZW50
aWZpZXJSZXBIYXNoLCBXVEY6OlBhaXJIYXNoVHJhaXRzPFdURjo6SGFzaFRyYWl0czxXVEY6OlJl
ZlB0cjxXVEY6OlN0cmluZ0ltcGw+ID4sIEpTQzo6U3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHM+
LCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiA+ID46OmRlYWxs
b2NhdGVUYWJsZShzdGQ6OnBhaXI8V1RGOjpSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiwgSlNDOjpT
eW1ib2xUYWJsZUVudHJ5PiosIGludCkgKCkgZnJvbSAvaG9tZS9hdy9Qcm9qZWN0cy9mb3VuZGF0
aW9uL3F0NDgwL2xpYi9saWJRdFdlYktpdC5zby40CiMxNyAweDAwMDA3ZmZmZjY0ZWFjMmYgaW4g
V1RGOjpIYXNoVGFibGU8V1RGOjpSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiwgc3RkOjpwYWlyPFdU
Rjo6UmVmUHRyPFdURjo6U3RyaW5nSW1wbD4sIEpTQzo6U3ltYm9sVGFibGVFbnRyeT4sIFdURjo6
UGFpckZpcnN0RXh0cmFjdG9yPHN0ZDo6cGFpcjxXVEY6OlJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+
LCBKU0M6OlN5bWJvbFRhYmxlRW50cnk+ID4sIEpTQzo6SWRlbnRpZmllclJlcEhhc2gsIFdURjo6
UGFpckhhc2hUcmFpdHM8V1RGOjpIYXNoVHJhaXRzPFdURjo6UmVmUHRyPFdURjo6U3RyaW5nSW1w
bD4gPiwgSlNDOjpTeW1ib2xUYWJsZUluZGV4SGFzaFRyYWl0cz4sIFdURjo6SGFzaFRyYWl0czxX
VEY6OlJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+ID4gPjo6fkhhc2hUYWJsZSgpICgpIGZyb20gL2hv
bWUvYXcvUHJvamVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQuc28uNAojMTgg
MHgwMDAwN2ZmZmY2NGU5MjJlIGluIFdURjo6SGFzaE1hcDxXVEY6OlJlZlB0cjxXVEY6OlN0cmlu
Z0ltcGw+LCBKU0M6OlN5bWJvbFRhYmxlRW50cnksIEpTQzo6SWRlbnRpZmllclJlcEhhc2gsIFdU
Rjo6SGFzaFRyYWl0czxXVEY6OlJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+ID4sIEpTQzo6U3ltYm9s
VGFibGVJbmRleEhhc2hUcmFpdHM+Ojp+SGFzaE1hcCgpICgpCiAgIGZyb20gL2hvbWUvYXcvUHJv
amVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQuc28uNAojMTkgMHgwMDAwN2Zm
ZmY2NmM5ZGM1IGluIEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCAodGhpcz0K
ICAgIDB4N2ZmZmE4MTU3Y2EwLCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OjEyMQojMjAgMHgwMDAwN2ZmZmY1NDBiYmZiIGluIFdlYkNvcmU6OkpTRE9NR2xvYmFsT2JqZWN0
Ojp+SlNET01HbG9iYWxPYmplY3QgKHRoaXM9CiAgICAweDdmZmZhODE1N2NhMCwgX19pbl9jaHJn
PTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDo1NAojMjEgMHgwMDAwN2ZmZmY1ZTFiNDQzIGlu
IFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEJhc2U6On5KU1dvcmtlckNvbnRleHRCYXNlICgKICAg
IHRoaXM9MHg3ZmZmYTgxNTdjYTAsIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAu
Li8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNl
LmNwcDo2NQojMjIgMHgwMDAwN2ZmZmY2MmI5OTgwIGluIFdlYkNvcmU6OkpTV29ya2VyQ29udGV4
dDo6fkpTV29ya2VyQ29udGV4dCAodGhpcz0KICAgIDB4N2ZmZmE4MTU3Y2EwLCBfX2luX2Nocmc9
PG9wdGltaXplZCBvdXQ+KQogICAgYXQgZ2VuZXJhdGVkL0pTV29ya2VyQ29udGV4dC5oOjMzCiMy
MyAweDAwMDA3ZmZmZjYyYmE1MGMgaW4gV2ViQ29yZTo6SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Ojp+SlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0ICh0aGlzPTB4N2ZmZmE4MTU3Y2EwLCBfX2luX2No
cmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgZ2VuZXJhdGVkL0pTRGVkaWNhdGVkV29ya2VyQ29u
dGV4dC5oOjM0CiMyNCAweDAwMDA3ZmZmZjY1NTE4NTcgaW4gSlNDOjpNYXJrZWRCbG9jazo6Y2Fs
bERlc3RydWN0b3IoSlNDOjpKU0NlbGwqLCB2b2lkKikKICAgICgpIGZyb20gL2hvbWUvYXcvUHJv
amVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQuc28uNAojMjUgMHgwMDAwN2Zm
ZmY2NTUxYWMzIGluIEpTQzo6TWFya2VkQmxvY2s6OkZyZWVDZWxsKiBKU0M6Ok1hcmtlZEJsb2Nr
OjpzcGVjaWFsaXplZFN3ZWVwPChKU0M6Ok1hcmtlZEJsb2NrOjpCbG9ja1N0YXRlKTMsIChKU0M6
Ok1hcmtlZEJsb2NrOjpTd2VlcE1vZGUpMD4oKSAoKQogICBmcm9tIC9ob21lL2F3L1Byb2plY3Rz
L2ZvdW5kYXRpb24vcXQ0ODAvbGliL2xpYlF0V2ViS2l0LnNvLjQKIzI2IDB4MDAwMDdmZmZmNjU1
MTczZiBpbiBKU0M6Ok1hcmtlZEJsb2NrOjpzd2VlcCAodGhpcz0weDdmZmZhODE1NDAwMCwgCiAg
ICBzd2VlcE1vZGU9SlNDOjpNYXJrZWRCbG9jazo6U3dlZXBPbmx5KQogICAgYXQgLi4vLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwOjEyOQojMjcgMHgw
MDAwN2ZmZmY2NTNjMDVmIGluIEpTQzo6QWxsb2NhdGlvblNwYWNlOjpmcmVlQmxvY2tzICh0aGlz
PQogICAgMHg3ZmZmYTQwNzFkNjgsIGhlYWQ9MHg3ZmZmYTgxNDgwMDApCiAgICBhdCAuLi8uLi8u
Li8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwOjEyNQoj
MjggMHgwMDAwN2ZmZmY2NTNjMTQ4IGluIEpTQzo6QWxsb2NhdGlvblNwYWNlOjpzaHJpbmsgKHRo
aXM9MHg3ZmZmYTQwNzFkNjgpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwOjE2OAojMjkgMHgwMDAwN2ZmZmY2NTQ1Mzg2IGlu
IEpTQzo6SGVhcDo6c2hyaW5rICh0aGlzPTB4N2ZmZmE0MDcxZDQ4KQogICAgYXQgLi4vLi4vLi4v
Li4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6ODYzCiMzMCAweDAwMDA3ZmZm
ZjY1NDNlZTUgaW4gSlNDOjpIZWFwOjpkZXN0cm95ICh0aGlzPTB4N2ZmZmE0MDcxZDQ4KQogICAg
YXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6Mzc0CiMz
MSAweDAwMDA3ZmZmZjVlMWNmMWQgaW4gV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
fldvcmtlclNjcmlwdENvbnRyb2xsZXIgKHRoaXM9MHg3ZmZmYTQwNTFiOTAsIF9faW5fY2hyZz08
b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDo2OQojMzIgMHgwMDAwN2ZmZmY1ZTI5NzNm
IGluIFdURjo6ZGVsZXRlT3duZWRQdHI8V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcj4K
ICAgIChwdHI9MHg3ZmZmYTQwNTFiOTApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL093blB0ckNvbW1vbi5oOjUzCiMzMyAweDAwMDA3ZmZmZjVlMzU3YzIgaW4g
V1RGOjpPd25QdHI8V2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcj46OmNsZWFyICgKICAg
IHRoaXM9MHg3ZmZmYTQwNzAzYTgpIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvT3duUHRyLmg6OTkKIzM0IDB4MDAwMDdmZmZmNWUzNDRkMCBpbiBXZWJDb3JlOjpXb3Jr
ZXJDb250ZXh0OjpjbGVhclNjcmlwdCAodGhpcz0KICAgIDB4N2ZmZmE0MDcwMjQwKSBhdCAuLi8u
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaDo4NAojMzUgMHgw
MDAwN2ZmZmY1ZTM1M2E2IGluIFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFz
azo6cGVyZm9ybVRhc2sKICAgICh0aGlzPTB4N2ZmZmE0MDQyMzQwLCBjb250ZXh0PTB4N2ZmZmE0
MDcwMjQwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwOjE4OAojMzYgMHgwMDAwN2ZmZmY1ZTMyMDg4IGluIFdlYkNvcmU6OldvcmtlclJ1
bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrICh0aGlzPQogICAgMHg3ZmZmYTQwMDdkMjAsIGNvbnRl
eHQ9MHg3ZmZmYTQwNzAyNDApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwOjIwMAojMzcgMHgwMDAwN2ZmZmY1ZTMxZDQ3IGluIFdlYkNv
cmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZSAodGhpcz0weDcyZmYwMCwgCiAgICBjb250ZXh0
PTB4N2ZmZmE0MDcwMjQwLCBwcmVkaWNhdGU9Li4uKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoxNjQKIzM4IDB4MDAwMDdmZmZmNWUz
MWEzZiBpbiBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW4gKHRoaXM9MHg3MmZmMDAsIGNvbnRl
eHQ9CiAgICAweDdmZmZhNDA3MDI0MCkgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoxMzUKIzM5IDB4MDAwMDdmZmZmNWUzNTJhNSBpbiBXZWJD
b3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCAodGhpcz0weDcyZmVkMCkKICAgIGF0IC4u
Ly4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoxNzAKIzQw
IDB4MDAwMDdmZmZmNWUyNGY3NyBpbiBXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OnJ1
bkV2ZW50TG9vcCAodGhpcz0KICAgIDB4NzJmZWQwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwOjY2CiM0MSAweDAwMDA3
ZmZmZjVlMzUxOWYgaW4gV2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQgKHRoaXM9
MHg3MmZlZDApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHA6MTQ4CiM0MiAweDAwMDA3ZmZmZjVlMzRmNTIgaW4gV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCAodGhyZWFkPQogICAgMHg3MmZlZDApIGF0IC4uLy4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoxMjQKIzQzIDB4
MDAwMDdmZmZmNjRhOTRkNSBpbiBXVEY6OnRocmVhZEVudHJ5UG9pbnQgKGNvbnRleHREYXRhPTB4
NzJlMjQwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmcuY3BwOjY3CiM0NCAweDAwMDA3ZmZmZjY0YTIwNTEgaW4gV1RGOjpUaHJlYWRQcml2YXRl
OjpydW4gKHRoaXM9MHg3MzFmYTApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDo2NwojNDUgMHgwMDAwN2ZmZmYzODkyMmU5IGlu
IFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4NzMxZmEwKQogICAgYXQgdGhyZWFkL3F0aHJl
YWRfdW5peC5jcHA6Mjk4CiM0NiAweDAwMDA3ZmZmZjM1ZDE5Y2EgaW4gc3RhcnRfdGhyZWFkICgp
IGZyb20gL2xpYi9saWJwdGhyZWFkLnNvLjAKIzQ3IDB4MDAwMDdmZmZmMmI4MDcwZCBpbiBjbG9u
ZSAoKSBmcm9tIC9saWIvbGliYy5zby42CiM0OCAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkK
ClRocmVhZCAxMCAoVGhyZWFkIDB4N2ZmZjliYmZmNzAwIChMV1AgMTI3ODkpKToKIzAgIDB4MDAw
MDdmZmZmMmI3MjRhMCBpbiByZWFkICgpIGZyb20gL2xpYi9saWJjLnNvLjYKIzEgIDB4MDAwMDdm
ZmZmMmI3ZTk0YyBpbiA/PyAoKSBmcm9tIC9saWIvbGliYy5zby42CiMyICAweDAwMDA3ZmZmZjJi
N2ViOGMgaW4gZ2V0X25wcm9jcyAoKSBmcm9tIC9saWIvbGliYy5zby42CiMzICAweDAwMDA3ZmZm
ZjJiNDYwODUgaW4gc3lzY29uZiAoKSBmcm9tIC9saWIvbGliYy5zby42CiM0ICAweDAwMDA3ZmZm
ZjM4OTI1MjMgaW4gUVRocmVhZDo6aWRlYWxUaHJlYWRDb3VudCAoKQogICAgYXQgdGhyZWFkL3F0
aHJlYWRfdW5peC5jcHA6NDExCiM1ICAweDAwMDA3ZmZmZjM4OGIyNWYgaW4gUU11dGV4Ojpsb2Nr
SW50ZXJuYWwgKHRoaXM9MHg2OWJiYzApCiAgICBhdCB0aHJlYWQvcW11dGV4LmNwcDo0MzQKIzYg
IDB4MDAwMDdmZmZmMzg4YWVmNCBpbiBRTXV0ZXg6OmxvY2sgKHRoaXM9MHg2OWJiYzApIGF0IHRo
cmVhZC9xbXV0ZXguY3BwOjE3NwojNyAgMHgwMDAwN2ZmZmY2NGEyOWI1IGluIFdURjo6TXV0ZXg6
OmxvY2sgKHRoaXM9MHg3ZmZmZjdkZGM2MDgpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoyMzUKIzggIDB4MDAwMDdmZmZmNTMw
MWEwZSBpbiBXVEY6OkxvY2tlcjxXVEY6Ok11dGV4Pjo6TG9ja2VyICh0aGlzPQogICAgMHg3ZmZm
OWJiZmU4MTAsIGxvY2thYmxlPS4uLikKICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvTG9ja2VyLmg6MzgKIzkgIDB4MDAwMDdmZmZmNjRhMjFjOCBpbiBXVEY6OmlkZW50
aWZpZXJCeVF0aHJlYWRIYW5kbGUgKHRocmVhZD0KICAgIEAweDdmZmY5YmJmZTg3MCkKICAgIGF0
IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3Bw
OjEwMgojMTAgMHgwMDAwN2ZmZmY2NGEyODUzIGluIFdURjo6Y3VycmVudFRocmVhZCAoKQogICAg
YXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5j
cHA6MjEzCiMxMSAweDAwMDA3ZmZmZjViNmM2YjAgaW4gV2ViQ29yZTo6VGltZXJCYXNlOjpzZXRO
ZXh0RmlyZVRpbWUgKHRoaXM9CiAgICAweDdmZmY5YzAyMjc4OCwgbmV3VGltZT0wKQogICAgYXQg
Li4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwOjMxNwojMTIgMHgw
MDAwN2ZmZmY1YjZiZTk1IGluIFdlYkNvcmU6OlRpbWVyQmFzZTo6c3RvcCAodGhpcz0weDdmZmY5
YzAyMjc4OCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmNwcDoyMjIKIzEzIDB4MDAwMDdmZmZmNWI2YmMyZSBpbiBXZWJDb3JlOjpUaW1lckJhc2U6On5U
aW1lckJhc2UgKHRoaXM9MHg3ZmZmOWMwMjI3ODgsIAogICAgX19pbl9jaHJnPTxvcHRpbWl6ZWQg
b3V0PikKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNw
cDoyMDUKIzE0IDB4MDAwMDdmZmZmNTQ3NjZkMiBpbiBXZWJDb3JlOjpUaW1lcjxXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcj46On5UaW1lciAoCiAgICB0aGlzPTB4N2ZmZjljMDIyNzg4LCBfX2lu
X2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuaDo5MgojMTUgMHgwMDAwN2ZmZmY1NDc2OGIxIGluIFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIgKHRoaXM9CiAgICAweDdmZmY5YzAy
MjZlOCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDo2OAojMTYgMHgwMDAw
N2ZmZmY1OTcwYjEyIGluIFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjp+V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIgKHRoaXM9MHg3ZmZmOWMwMjI2ZTgsIF9faW5fY2hyZz08b3B0aW1p
emVkIG91dD4pCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oOjQ2CiMxNyAweDAwMDA3ZmZmZjU5NzBkYzkgaW4gV2Vi
Q29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQgKAogICAgdGhp
cz0weDdmZmY5YzAyMjYzMCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4u
Ly4uLy4uL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDo1
NQojMTggMHgwMDAwN2ZmZmY1OGY0YjZjIGluIFdURjo6ZGVsZXRlT3duZWRQdHI8V2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4KICAgIChwdHI9MHg3ZmZmOWMwMjI2MzApCiAgICBhdCAu
Li8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL093blB0ckNvbW1vbi5oOjUzCiMx
OSAweDAwMDA3ZmZmZjU4ZjM3NDUgaW4gV1RGOjpPd25QdHI8V2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudD46On5Pd25QdHIKICAgICh0aGlzPTB4N2ZmZjljMDI3ZTE4LCBfX2luX2Nocmc9
PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9Pd25QdHIuaDo1NAojMjAgMHgwMDAwN2ZmZmY1OTcxODQ1IGluIFdlYkNvcmU6Oldvcmtl
ckluc3BlY3RvckNvbnRyb2xsZXI6On5Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyICh0aGlzPTB4
N2ZmZjljMDI3ZGYwLCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OjEzNAojMjEgMHgwMDAwN2ZmZmY1ZTI5OTYxIGluIFdURjo6ZGVsZXRlT3duZWRQdHI8V2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcj4gKHB0cj0weDdmZmY5YzAyN2RmMCkKICAgIGF0
IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyQ29tbW9uLmg6NTMK
IzIyIDB4MDAwMDdmZmZmNWUyOTQ4MCBpbiBXVEY6Ok93blB0cjxXZWJDb3JlOjpXb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyPjo6Y2xlYXIgKHRoaXM9MHg3ZmZmYTQwNTBmODgpIGF0IC4uLy4uLy4u
Ly4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyLmg6OTkKIzIzIDB4MDAwMDdmZmZm
NWUyN2ViOCBpbiBXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpjbGVhckluc3BlY3RvciAodGhpcz0K
ICAgIDB4N2ZmZmE0MDUwZTAwKSBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuY3BwOjIzNwojMjQgMHgwMDAwN2ZmZmY1ZTM1MzlhIGluIFdlYkNvcmU6
OldvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzazo6cGVyZm9ybVRhc2sKICAgICh0aGlzPTB4
N2ZmZmE0MDdjMTMwLCBjb250ZXh0PTB4N2ZmZmE0MDUwZTAwKQogICAgYXQgLi4vLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOjE4NQojMjUgMHgwMDAwN2Zm
ZmY1ZTMyMDg4IGluIFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrICh0
aGlzPQogICAgMHg3ZmZmYTQwNDUwNzAsIGNvbnRleHQ9MHg3ZmZmYTQwNTBlMDApCiAgICBhdCAu
Li8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOjIwMAoj
MjYgMHgwMDAwN2ZmZmY1ZTMxZDQ3IGluIFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9k
ZSAodGhpcz0KICAgIDB4N2ZmZmE0MDRmYTcwLCBjb250ZXh0PTB4N2ZmZmE0MDUwZTAwLCBwcmVk
aWNhdGU9Li4uKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJSdW5Mb29wLmNwcDoxNjQKIzI3IDB4MDAwMDdmZmZmNWUzMWEzZiBpbiBXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4gKHRoaXM9MHg3ZmZmYTQwNGZhNzAsIAogICAgY29udGV4dD0weDdmZmZh
NDA1MGUwMCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHA6MTM1CiMyOCAweDAwMDA3ZmZmZjVlMzUyYTUgaW4gV2ViQ29yZTo6V29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AgKHRoaXM9CiAgICAweDdmZmZhNDA0ZmE0MCkgYXQgLi4vLi4v
Li4vLi4vU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOjE3MAojMjkgMHgw
MDAwN2ZmZmY1ZTI0Zjc3IGluIFdlYkNvcmU6OkRlZGljYXRlZFdvcmtlclRocmVhZDo6cnVuRXZl
bnRMb29wICh0aGlzPQogICAgMHg3ZmZmYTQwNGZhNDApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHA6NjYKIzMwIDB4MDAw
MDdmZmZmNWUzNTE5ZiBpbiBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCAodGhp
cz0KICAgIDB4N2ZmZmE0MDRmYTQwKSBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHA6MTQ4CiMzMSAweDAwMDA3ZmZmZjVlMzRmNTIgaW4gV2ViQ29y
ZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCAodGhyZWFkPQogICAgMHg3ZmZmYTQw
NGZhNDApIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFk
LmNwcDoxMjQKIzMyIDB4MDAwMDdmZmZmNjRhOTRkNSBpbiBXVEY6OnRocmVhZEVudHJ5UG9pbnQg
KGNvbnRleHREYXRhPTB4N2ZmZmE0MDUwMzIwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwOjY3CiMzMyAweDAwMDA3ZmZmZjY0YTIwNTEg
aW4gV1RGOjpUaHJlYWRQcml2YXRlOjpydW4gKHRoaXM9MHg3ZmZmYTQwNTA1NzApCiAgICBhdCAu
Li8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDo2
NwojMzQgMHgwMDAwN2ZmZmYzODkyMmU5IGluIFFUaHJlYWRQcml2YXRlOjpzdGFydCAoYXJnPTB4
N2ZmZmE0MDUwNTcwKQogICAgYXQgdGhyZWFkL3F0aHJlYWRfdW5peC5jcHA6Mjk4CiMzNSAweDAw
MDA3ZmZmZjM1ZDE5Y2EgaW4gc3RhcnRfdGhyZWFkICgpIGZyb20gL2xpYi9saWJwdGhyZWFkLnNv
LjAKIzM2IDB4MDAwMDdmZmZmMmI4MDcwZCBpbiBjbG9uZSAoKSBmcm9tIC9saWIvbGliYy5zby42
CiMzNyAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8gKCkKClRocmVhZCA5IChUaHJlYWQgMHg3ZmZm
YTBiZmE3MDAgKExXUCAxMjc4OCkpOgojMCAgMHgwMDAwN2ZmZmYzNWQ2YmM5IGluIHB0aHJlYWRf
Y29uZF90aW1lZHdhaXRAQEdMSUJDXzIuMy4yICgpCiAgIGZyb20gL2xpYi9saWJwdGhyZWFkLnNv
LjAKIzEgIDB4MDAwMDdmZmZmMzg5M2E4NSBpbiBRV2FpdENvbmRpdGlvblByaXZhdGU6OndhaXQg
KHRoaXM9MHg3ZmZmOWMwMGE0MDAsIAogICAgdGltZT0xMDAwKSBhdCB0aHJlYWQvcXdhaXRjb25k
aXRpb25fdW5peC5jcHA6ODQKIzIgIDB4MDAwMDdmZmZmMzg5Mzg0OSBpbiBRV2FpdENvbmRpdGlv
bjo6d2FpdCAodGhpcz0weDdmZmY5YzAwYTNlMCwgbXV0ZXg9CiAgICAweDdmZmY5YzAwYTM5MCwg
dGltZT0xMDAwKSBhdCB0aHJlYWQvcXdhaXRjb25kaXRpb25fdW5peC5jcHA6MTU4CiMzICAweDAw
MDA3ZmZmZjY0YTJjMzEgaW4gV1RGOjpUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdCAodGhpcz0w
eDczZmMwOCwgCiAgICBtdXRleD0uLi4sIGFic29sdXRlVGltZT0xMzIxMjg4MzkwLjEzNzQzMDkp
CiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGlu
Z1F0LmNwcDoyNzgKIzQgIDB4MDAwMDdmZmZmNjU0M2ZmYSBpbiBKU0M6OkhlYXA6OndhaXRGb3JS
ZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrICh0aGlzPQogICAgMHg3M2Y4ZTgsIHJlbGF0aXZl
PTEpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cDozOTEKIzUgIDB4MDAwMDdmZmZmNjU0NDAzZiBpbiBKU0M6OkhlYXA6OndhaXRGb3JSZWxhdGl2
ZVRpbWUgKHRoaXM9MHg3M2Y4ZTgsIAogICAgcmVsYXRpdmU9MSkgYXQgLi4vLi4vLi4vLi4vU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6NDAxCiM2ICAweDAwMDA3ZmZmZjY1NDQw
YmMgaW4gSlNDOjpIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRNYWluICh0aGlzPTB4NzNmOGU4KQog
ICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6NDE1
CiM3ICAweDAwMDA3ZmZmZjY1NDQwOGMgaW4gSlNDOjpIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRT
dGFydEZ1bmMgKGhlYXA9CiAgICAweDczZjhlOCkgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6NDA2CiM4ICAweDAwMDA3ZmZmZjY0YTk0ZDUgaW4gV1RG
Ojp0aHJlYWRFbnRyeVBvaW50IChjb250ZXh0RGF0YT0weDdmZmY5YzAwZWYxMCkKICAgIGF0IC4u
Ly4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcDo2NwojOSAg
MHgwMDAwN2ZmZmY2NGEyMDUxIGluIFdURjo6VGhyZWFkUHJpdmF0ZTo6cnVuICh0aGlzPTB4N2Zm
ZjljMDBlZjkwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9x
dC9UaHJlYWRpbmdRdC5jcHA6NjcKIzEwIDB4MDAwMDdmZmZmMzg5MjJlOSBpbiBRVGhyZWFkUHJp
dmF0ZTo6c3RhcnQgKGFyZz0weDdmZmY5YzAwZWY5MCkKICAgIGF0IHRocmVhZC9xdGhyZWFkX3Vu
aXguY3BwOjI5OAojMTEgMHgwMDAwN2ZmZmYzNWQxOWNhIGluIHN0YXJ0X3RocmVhZCAoKSBmcm9t
IC9saWIvbGlicHRocmVhZC5zby4wCiMxMiAweDAwMDA3ZmZmZjJiODA3MGQgaW4gY2xvbmUgKCkg
ZnJvbSAvbGliL2xpYmMuc28uNgojMTMgMHgwMDAwMDAwMDAwMDAwMDAwIGluID8/ICgpCgpUaHJl
YWQgNiAoVGhyZWFkIDB4N2ZmZmEyM2ZjNzAwIChMV1AgMTI3ODYpKToKIzAgIDB4MDAwMDdmZmZm
MmI3MjRhMCBpbiByZWFkICgpIGZyb20gL2xpYi9saWJjLnNvLjYKIzEgIDB4MDAwMDdmZmZmMmI3
ZTk0YyBpbiA/PyAoKSBmcm9tIC9saWIvbGliYy5zby42CiMyICAweDAwMDA3ZmZmZjJiN2ViOGMg
aW4gZ2V0X25wcm9jcyAoKSBmcm9tIC9saWIvbGliYy5zby42CiMzICAweDAwMDA3ZmZmZjJiNDYw
ODUgaW4gc3lzY29uZiAoKSBmcm9tIC9saWIvbGliYy5zby42CiM0ICAweDAwMDA3ZmZmZjM4OTI1
MjMgaW4gUVRocmVhZDo6aWRlYWxUaHJlYWRDb3VudCAoKQogICAgYXQgdGhyZWFkL3F0aHJlYWRf
dW5peC5jcHA6NDExCiM1ICAweDAwMDA3ZmZmZjM4OGIyNWYgaW4gUU11dGV4Ojpsb2NrSW50ZXJu
YWwgKHRoaXM9MHg2OWJiYzApCiAgICBhdCB0aHJlYWQvcW11dGV4LmNwcDo0MzQKIzYgIDB4MDAw
MDdmZmZmMzg4YWVmNCBpbiBRTXV0ZXg6OmxvY2sgKHRoaXM9MHg2OWJiYzApIGF0IHRocmVhZC9x
bXV0ZXguY3BwOjE3NwojNyAgMHgwMDAwN2ZmZmY2NGEyOWI1IGluIFdURjo6TXV0ZXg6OmxvY2sg
KHRoaXM9MHg3ZmZmZjdkZGM2MDgpCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcDoyMzUKIzggIDB4MDAwMDdmZmZmNTMwMWEwZSBp
biBXVEY6OkxvY2tlcjxXVEY6Ok11dGV4Pjo6TG9ja2VyICh0aGlzPQogICAgMHg3ZmZmYTIzZmI4
NTAsIGxvY2thYmxlPS4uLikKICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTG9ja2VyLmg6MzgKIzkgIDB4MDAwMDdmZmZmNjRhMjFjOCBpbiBXVEY6OmlkZW50aWZpZXJC
eVF0aHJlYWRIYW5kbGUgKHRocmVhZD0KICAgIEAweDdmZmZhMjNmYjhiMCkKICAgIGF0IC4uLy4u
Ly4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwOjEwMgoj
MTAgMHgwMDAwN2ZmZmY2NGEyODUzIGluIFdURjo6Y3VycmVudFRocmVhZCAoKQogICAgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6MjEz
CiMxMSAweDAwMDA3ZmZmZjViNmJlMzkgaW4gV2ViQ29yZTo6VGltZXJCYXNlOjpzdG9wICh0aGlz
PTB4N2ZmZmE0MDU2NzA4KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGltZXIuY3BwOjIxOQojMTIgMHgwMDAwN2ZmZmY1YjZiYzJlIGluIFdlYkNvcmU6OlRpbWVy
QmFzZTo6flRpbWVyQmFzZSAodGhpcz0weDdmZmZhNDA1NjcwOCwgCiAgICBfX2luX2Nocmc9PG9w
dGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VGltZXIuY3BwOjIwNQojMTMgMHgwMDAwN2ZmZmY1NDc2NmQyIGluIFdlYkNvcmU6OlRpbWVyPFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyPjo6flRpbWVyICgKICAgIHRoaXM9MHg3ZmZmYTQwNTY3
MDgsIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oOjkyCiMxNCAweDAwMDA3ZmZmZjU0NzY4YjEgaW4gV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6On5TY3JpcHREZWJ1Z1NlcnZlciAodGhpcz0KICAgIDB4
N2ZmZmE0MDU2NjY4LCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4v
Li4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOjY4CiMx
NSAweDAwMDA3ZmZmZjU5NzBiMTIgaW4gV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6
On5Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciAodGhpcz0weDdmZmZhNDA1NjY2OCwgX19pbl9jaHJn
PTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmg6NDYKIzE2IDB4MDAwMDdmZmZmNTk3MGRj
OSBpbiBXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50Ojp+V29ya2VyRGVidWdnZXJBZ2VudCAo
CiAgICB0aGlzPTB4N2ZmZmE0MDU2NWIwLCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAg
YXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwOjU1CiMxNyAweDAwMDA3ZmZmZjU4ZjRiNmMgaW4gV1RGOjpkZWxldGVPd25lZFB0cjxX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PgogICAgKHB0cj0weDdmZmZhNDA1NjViMCkK
ICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3duUHRyQ29tbW9u
Lmg6NTMKIzE4IDB4MDAwMDdmZmZmNThmMzc0NSBpbiBXVEY6Ok93blB0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Pjo6fk93blB0cgogICAgKHRoaXM9MHg3ZmZmYTQwNTYyYzgsIF9f
aW5fY2hyZz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL093blB0ci5oOjU0CiMxOSAweDAwMDA3ZmZmZjU5NzE4NDUgaW4gV2ViQ29y
ZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6fldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIg
KHRoaXM9MHg3ZmZmYTQwNTYyYTAsIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAu
Li8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJv
bGxlci5jcHA6MTM0CiMyMCAweDAwMDA3ZmZmZjVlMjk5NjEgaW4gV1RGOjpkZWxldGVPd25lZFB0
cjxXZWJDb3JlOjpXb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyPiAocHRyPTB4N2ZmZmE0MDU2MmEw
KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHJDb21t
b24uaDo1MwojMjEgMHgwMDAwN2ZmZmY1ZTI5NDgwIGluIFdURjo6T3duUHRyPFdlYkNvcmU6Oldv
cmtlckluc3BlY3RvckNvbnRyb2xsZXI+OjpjbGVhciAodGhpcz0weDcyODc4OCkgYXQgLi4vLi4v
Li4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaDo5OQojMjIgMHgwMDAwN2Zm
ZmY1ZTI3ZWI4IGluIFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OmNsZWFySW5zcGVjdG9yICh0aGlz
PQogICAgMHg3Mjg2MDApIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5jcHA6MjM3CiMyMyAweDAwMDA3ZmZmZjVlMzUzOWEgaW4gV2ViQ29yZTo6V29y
a2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrOjpwZXJmb3JtVGFzawogICAgKHRoaXM9MHg3ZmZm
OTQwMDgxZjAsIGNvbnRleHQ9MHg3Mjg2MDApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6MTg1CiMyNCAweDAwMDA3ZmZmZjVlMzIwODgg
aW4gV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2sgKHRoaXM9CiAgICAw
eDdmZmY5NDAwODJjMCwgY29udGV4dD0weDcyODYwMCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6MjAwCiMyNSAweDAwMDA3ZmZmZjVl
MzFkNDcgaW4gV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlICh0aGlzPQogICAgMHg3
ZmZmOWMwMDQyODAsIGNvbnRleHQ9MHg3Mjg2MDAsIHByZWRpY2F0ZT0uLi4pCiAgICBhdCAuLi8u
Li8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOjE2NAojMjYg
MHgwMDAwN2ZmZmY1ZTMxYTNmIGluIFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OnJ1biAodGhpcz0w
eDdmZmY5YzAwNDI4MCwgCiAgICBjb250ZXh0PTB4NzI4NjAwKQogICAgYXQgLi4vLi4vLi4vLi4v
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcDoxMzUKIzI3IDB4MDAwMDdm
ZmZmNWUzNTJhNSBpbiBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCAodGhpcz0K
ICAgIDB4N2ZmZjljMDA0MjUwKSBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHA6MTcwCiMyOCAweDAwMDA3ZmZmZjVlMjRmNzcgaW4gV2ViQ29yZTo6
RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AgKHRoaXM9CiAgICAweDdmZmY5YzAw
NDI1MCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmNwcDo2NgojMjkgMHgwMDAwN2ZmZmY1ZTM1MTlmIGluIFdlYkNvcmU6Oldv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkICh0aGlzPQogICAgMHg3ZmZmOWMwMDQyNTApIGF0IC4u
Ly4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoxNDgKIzMw
IDB4MDAwMDdmZmZmNWUzNGY1MiBpbiBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVh
ZFN0YXJ0ICh0aHJlYWQ9CiAgICAweDdmZmY5YzAwNDI1MCkgYXQgLi4vLi4vLi4vLi4vU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOjEyNAojMzEgMHgwMDAwN2ZmZmY2NGE5
NGQ1IGluIFdURjo6dGhyZWFkRW50cnlQb2ludCAoY29udGV4dERhdGE9MHg3ZmZmOWMwMDMyNjAp
CiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5j
cHA6NjcKIzMyIDB4MDAwMDdmZmZmNjRhMjA1MSBpbiBXVEY6OlRocmVhZFByaXZhdGU6OnJ1biAo
dGhpcz0weDdmZmY5YzAwNDA5MCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwOjY3CiMzMyAweDAwMDA3ZmZmZjM4OTIyZTkgaW4g
UVRocmVhZFByaXZhdGU6OnN0YXJ0IChhcmc9MHg3ZmZmOWMwMDQwOTApCiAgICBhdCB0aHJlYWQv
cXRocmVhZF91bml4LmNwcDoyOTgKIzM0IDB4MDAwMDdmZmZmMzVkMTljYSBpbiBzdGFydF90aHJl
YWQgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28uMAojMzUgMHgwMDAwN2ZmZmYyYjgwNzBkIGlu
IGNsb25lICgpIGZyb20gL2xpYi9saWJjLnNvLjYKIzM2IDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/
PyAoKQoKVGhyZWFkIDUgKFRocmVhZCAweDdmZmZhMzNmZTcwMCAoTFdQIDEyNzg0KSk6CiMwICAw
eDAwMDA3ZmZmZjQxMmNlZjggaW4gUUJhc2ljQXRvbWljSW50Ojp0ZXN0QW5kU2V0T3JkZXJlZCAo
dGhpcz0KICAgIDB4N2ZmZjljMDFhNzAwLCBleHBlY3RlZFZhbHVlPTAsIG5ld1ZhbHVlPTEpCiAg
ICBhdCAuLi8uLi9pbmNsdWRlL1F0Q29yZS8uLi8uLi9zcmMvY29yZWxpYi9hcmNoL3FhdG9taWNf
eDg2XzY0Lmg6MTQ1CiMxICAweDAwMDA3ZmZmZjM4OGI1ODIgaW4gUUJhc2ljQXRvbWljSW50Ojp0
ZXN0QW5kU2V0QWNxdWlyZSAodGhpcz0KICAgIDB4N2ZmZjljMDFhNzAwLCBleHBlY3RlZFZhbHVl
PTAsIG5ld1ZhbHVlPTEpCiAgICBhdCAuLi8uLi9pbmNsdWRlL1F0Q29yZS8uLi8uLi9zcmMvY29y
ZWxpYi9hcmNoL3FhdG9taWNfeDg2XzY0Lmg6MjY3CiMyICAweDAwMDA3ZmZmZjM4OGFlZGEgaW4g
UU11dGV4Ojpsb2NrICh0aGlzPTB4N2ZmZjljMDAyYzEwKQogICAgYXQgdGhyZWFkL3FtdXRleC5j
cHA6MTc1CiMzICAweDAwMDA3ZmZmZjY0YTI5YjUgaW4gV1RGOjpNdXRleDo6bG9jayAodGhpcz0w
eDdmZmY5YzAwMmMwMCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvcXQvVGhyZWFkaW5nUXQuY3BwOjIzNQojNCAgMHgwMDAwN2ZmZmY1MzAxYTBlIGluIFdURjo6
TG9ja2VyPFdURjo6TXV0ZXg+OjpMb2NrZXIgKHRoaXM9CiAgICAweDdmZmZhMzNmZDg3MCwgbG9j
a2FibGU9Li4uKQogICAgYXQgLi4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Mb2Nr
ZXIuaDozOAojNSAgMHgwMDAwN2ZmZmY1MzAzOWJiIGluIFdURjo6YWRkSXRlcmF0b3I8V1RGOjpT
dHJpbmdJbXBsKiwgV1RGOjpTdHJpbmdJbXBsKiwgV1RGOjpJZGVudGl0eUV4dHJhY3RvcjxXVEY6
OlN0cmluZ0ltcGwqPiwgV1RGOjpTdHJpbmdIYXNoLCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpTdHJp
bmdJbXBsKj4sIFdURjo6SGFzaFRyYWl0czxXVEY6OlN0cmluZ0ltcGwqPiA+ICh0YWJsZT0weDdm
ZmY5YzAwMmJlMCwgaXQ9CiAgICAweDdmZmZhMzNmZDkwMCkgYXQgLi4vLi4vLi4vU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaDoxMTAxCiM2ICAweDAwMDA3ZmZmZjUzMDFhZTEg
aW4gV1RGOjpIYXNoVGFibGVDb25zdEl0ZXJhdG9yPFdURjo6U3RyaW5nSW1wbCosIFdURjo6U3Ry
aW5nSW1wbCosIFdURjo6SWRlbnRpdHlFeHRyYWN0b3I8V1RGOjpTdHJpbmdJbXBsKj4sIFdURjo6
U3RyaW5nSGFzaCwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6Okhhc2hU
cmFpdHM8V1RGOjpTdHJpbmdJbXBsKj4gPjo6SGFzaFRhYmxlQ29uc3RJdGVyYXRvciAodGhpcz0w
eDdmZmZhMzNmZDkwMCwgb3RoZXI9Li4uKQogICAgYXQgLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9IYXNoVGFibGUuaDoxNDUKIzcgIDB4MDAwMDdmZmZmNTMwM2I0NiBpbiBXVEY6
Okhhc2hUYWJsZUl0ZXJhdG9yPFdURjo6U3RyaW5nSW1wbCosIFdURjo6U3RyaW5nSW1wbCosIFdU
Rjo6SWRlbnRpdHlFeHRyYWN0b3I8V1RGOjpTdHJpbmdJbXBsKj4sIFdURjo6U3RyaW5nSGFzaCwg
V1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpT
dHJpbmdJbXBsKj4gPjo6b3BlcmF0b3IgV1RGOjpIYXNoVGFibGVDb25zdEl0ZXJhdG9yPFdURjo6
U3RyaW5nSW1wbCosIFdURjo6U3RyaW5nSW1wbCosIFdURjo6SWRlbnRpdHlFeHRyYWN0b3I8V1RG
OjpTdHJpbmdJbXBsKj4sIFdURjo6U3RyaW5nSGFzaCwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3Ry
aW5nSW1wbCo+LCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpTdHJpbmdJbXBsKj4gPiAodGhpcz0weDdm
ZmZhMzNmZDkzMCkKICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFz
aFRhYmxlLmg6MjU2CiM4ICAweDAwMDA3ZmZmZjY0YWI0ZmQgaW4gV1RGOjpIYXNoVGFibGU8V1RG
OjpTdHJpbmdJbXBsKiwgV1RGOjpTdHJpbmdJbXBsKiwgV1RGOjpJZGVudGl0eUV4dHJhY3RvcjxX
VEY6OlN0cmluZ0ltcGwqPiwgV1RGOjpTdHJpbmdIYXNoLCBXVEY6Okhhc2hUcmFpdHM8V1RGOjpT
dHJpbmdJbXBsKj4sIFdURjo6SGFzaFRyYWl0czxXVEY6OlN0cmluZ0ltcGwqPiA+OjpyZW1vdmVX
aXRob3V0RW50cnlDb25zaXN0ZW5jeUNoZWNrKFdURjo6SGFzaFRhYmxlQ29uc3RJdGVyYXRvcjxX
VEY6OlN0cmluZ0ltcGwqLCBXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OklkZW50aXR5RXh0cmFjdG9y
PFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6OlN0cmluZ0hhc2gsIFdURjo6SGFzaFRyYWl0czxXVEY6
OlN0cmluZ0ltcGwqPiwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+ID4pICgpCiAg
IGZyb20gL2hvbWUvYXcvUHJvamVjdHMvZm91bmRhdGlvbi9xdDQ4MC9saWIvbGliUXRXZWJLaXQu
c28uNAojOSAgMHgwMDAwN2ZmZmY2NGFiMTljIGluIFdURjo6SGFzaFNldDxXVEY6OlN0cmluZ0lt
cGwqLCBXVEY6OlN0cmluZ0hhc2gsIFdURjo6SGFzaFRyYWl0czxXVEY6OlN0cmluZ0ltcGwqPiA+
OjpyZW1vdmUoV1RGOjpIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxXVEY6Okhhc2hUYWJs
ZTxXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OlN0cmluZ0ltcGwqLCBXVEY6OklkZW50aXR5RXh0cmFj
dG9yPFdURjo6U3RyaW5nSW1wbCo+LCBXVEY6OlN0cmluZ0hhc2gsIFdURjo6SGFzaFRyYWl0czxX
VEY6OlN0cmluZ0ltcGwqPiwgV1RGOjpIYXNoVHJhaXRzPFdURjo6U3RyaW5nSW1wbCo+ID4sIFdU
Rjo6U3RyaW5nSW1wbCo+KSAoKQogICBmcm9tIC9ob21lL2F3L1Byb2plY3RzL2ZvdW5kYXRpb24v
cXQ0ODAvbGliL2xpYlF0V2ViS2l0LnNvLjQKIzEwIDB4MDAwMDdmZmZmNjRhYjNkNSBpbiBXVEY6
Okhhc2hTZXQ8V1RGOjpTdHJpbmdJbXBsKiwgV1RGOjpTdHJpbmdIYXNoLCBXVEY6Okhhc2hUcmFp
dHM8V1RGOjpTdHJpbmdJbXBsKj4gPjo6cmVtb3ZlKFdURjo6U3RyaW5nSW1wbCogY29uc3QmKSAo
KQogICBmcm9tIC9ob21lL2F3L1Byb2plY3RzL2ZvdW5kYXRpb24vcXQ0ODAvbGliL2xpYlF0V2Vi
S2l0LnNvLjQKIzExIDB4MDAwMDdmZmZmNjRhYTI5OCBpbiBXVEY6OkF0b21pY1N0cmluZzo6cmVt
b3ZlIChyPTB4N2ZmZjljMDM2MDMwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6Mjg0CiMxMiAweDAwMDA3ZmZmZjY0YWY4
MTYgaW4gV1RGOjpTdHJpbmdJbXBsOjp+U3RyaW5nSW1wbCAodGhpcz0weDdmZmY5YzAzNjAzMCwg
CiAgICBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOjQ3CiMxMyAweDAwMDA3ZmZm
ZjUyZjQxNWUgaW4gV1RGOjpTdHJpbmdJbXBsOjpkZXJlZiAodGhpcz0weDdmZmY5YzAzNjAzMCkK
ICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
Lmg6Mzc2CiMxNCAweDAwMDA3ZmZmZjUzMDM1OWIgaW4gV1RGOjpkZXJlZklmTm90TnVsbDxXVEY6
OlN0cmluZ0ltcGw+IChwdHI9CiAgICAweDdmZmY5YzAzNjAzMCkgYXQgLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QYXNzUmVmUHRyLmg6NTkKIzE1IDB4MDAwMDdmZmZmNTMwMTc2
OSBpbiBXVEY6OlJlZlB0cjxXVEY6OlN0cmluZ0ltcGw+Ojp+UmVmUHRyICh0aGlzPQogICAgMHg3
ZmZmOWMwMzRhYTgsIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pCiAgICBhdCAuLi8uLi8uLi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1JlZlB0ci5oOjU4CiMxNiAweDAwMDA3ZmZmZjUyZjQx
ZWMgaW4gV1RGOjpTdHJpbmc6On5TdHJpbmcgKHRoaXM9MHg3ZmZmOWMwMzRhYTgsIAogICAgX19p
bl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9XVEZTdHJpbmcuaDoxMDUKIzE3IDB4MDAwMDdmZmZmNTJmNDQwMCBpbiBX
VEY6OkF0b21pY1N0cmluZzo6fkF0b21pY1N0cmluZyAodGhpcz0KICAgIDB4N2ZmZjljMDM0YWE4
LCBfX2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KQogICAgYXQgLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oOjM5CiMxOCAweDAwMDA3ZmZmZjViNjhi
YTUgaW4gV2ViQ29yZTo6RXZlbnROYW1lczo6fkV2ZW50TmFtZXMgKHRoaXM9CiAgICAweDdmZmY5
YzAzNDVhMCwgX19pbl9jaHJnPTxvcHRpbWl6ZWQgb3V0PikKICAgIGF0IC4uLy4uLy4uLy4uL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmg6MTk3CiMxOSAweDAwMDA3ZmZmZjViNmFiOTEg
aW4gV1RGOjpkZWxldGVPd25lZFB0cjxXZWJDb3JlOjpFdmVudE5hbWVzPiAocHRyPQogICAgMHg3
ZmZmOWMwMzQ1YTApIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvT3du
UHRyQ29tbW9uLmg6NTMKIzIwIDB4MDAwMDdmZmZmNWI2ODc2MCBpbiBXVEY6Ok93blB0cjxXZWJD
b3JlOjpFdmVudE5hbWVzPjo6Y2xlYXIgKHRoaXM9CiAgICAweDdmZmY5YzAxYTZkMCkgYXQgLi4v
Li4vLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaDo5OQojMjEgMHgwMDAw
N2ZmZmY1YjY4NTVlIGluIFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6OmRlc3Ryb3kgKHRoaXM9
CiAgICAweDdmZmY5YzAxYTZkMCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOjk2CiMyMiAweDAwMDA3ZmZmZjVlMzUyNTcgaW4g
V2ViQ29yZTo6V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQgKHRoaXM9CiAgICAweDdmZmZhNDA0
MWEzMCkgYXQgLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwOjE1OQojMjMgMHgwMDAwN2ZmZmY1ZTM0ZjUyIGluIFdlYkNvcmU6OldvcmtlclRocmVhZDo6
d29ya2VyVGhyZWFkU3RhcnQgKHRocmVhZD0KICAgIDB4N2ZmZmE0MDQxYTMwKSBhdCAuLi8uLi8u
Li8uLi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6MTI0CiMyNCAweDAw
MDA3ZmZmZjY0YTk0ZDUgaW4gV1RGOjp0aHJlYWRFbnRyeVBvaW50IChjb250ZXh0RGF0YT0weDdm
ZmZhNDA0NThjMCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkaW5nLmNwcDo2NwojMjUgMHgwMDAwN2ZmZmY2NGEyMDUxIGluIFdURjo6VGhyZWFkUHJp
dmF0ZTo6cnVuICh0aGlzPTB4N2ZmZmE0MDA3ZDQwKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6NjcKIzI2IDB4MDAwMDdmZmZm
Mzg5MjJlOSBpbiBRVGhyZWFkUHJpdmF0ZTo6c3RhcnQgKGFyZz0weDdmZmZhNDAwN2Q0MCkKICAg
IGF0IHRocmVhZC9xdGhyZWFkX3VuaXguY3BwOjI5OAojMjcgMHgwMDAwN2ZmZmYzNWQxOWNhIGlu
IHN0YXJ0X3RocmVhZCAoKSBmcm9tIC9saWIvbGlicHRocmVhZC5zby4wCiMyOCAweDAwMDA3ZmZm
ZjJiODA3MGQgaW4gY2xvbmUgKCkgZnJvbSAvbGliL2xpYmMuc28uNgojMjkgMHgwMDAwMDAwMDAw
MDAwMDAwIGluID8/ICgpCgpUaHJlYWQgMyAoVGhyZWFkIDB4N2ZmZmE4OTliNzAwIChMV1AgMTI3
ODIpKToKIzAgIDB4MDAwMDdmZmZmMzVkNmJjOSBpbiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0QEBH
TElCQ18yLjMuMiAoKQogICBmcm9tIC9saWIvbGlicHRocmVhZC5zby4wCiMxICAweDAwMDA3ZmZm
ZjM4OTNhODUgaW4gUVdhaXRDb25kaXRpb25Qcml2YXRlOjp3YWl0ICh0aGlzPTB4NmY4MTYwLCAK
ICAgIHRpbWU9MTAwMCkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXguY3BwOjg0CiMyICAw
eDAwMDA3ZmZmZjM4OTM4NDkgaW4gUVdhaXRDb25kaXRpb246OndhaXQgKHRoaXM9MHg2Zjk5MTAs
IG11dGV4PTB4NzAwZmMwLCAKICAgIHRpbWU9MTAwMCkgYXQgdGhyZWFkL3F3YWl0Y29uZGl0aW9u
X3VuaXguY3BwOjE1OAojMyAgMHgwMDAwN2ZmZmY2NGEyYzMxIGluIFdURjo6VGhyZWFkQ29uZGl0
aW9uOjp0aW1lZFdhaXQgKHRoaXM9MHg2ZmJlODgsIAogICAgbXV0ZXg9Li4uLCBhYnNvbHV0ZVRp
bWU9MTMyMTI4ODM5MC4xMTkxNDYxKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHA6Mjc4CiM0ICAweDAwMDA3ZmZmZjY1NDNmZmEg
aW4gSlNDOjpIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5nTG9jayAodGhpcz0K
ICAgIDB4NmZiYjY4LCByZWxhdGl2ZT0xKQogICAgYXQgLi4vLi4vLi4vLi4vU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5jcHA6MzkxCiM1ICAweDAwMDA3ZmZmZjY1NDQwM2YgaW4gSlND
OjpIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1lICh0aGlzPTB4NmZiYjY4LCAKICAgIHJlbGF0aXZl
PTEpIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwOjQw
MQojNiAgMHgwMDAwN2ZmZmY2NTQ0MGJjIGluIEpTQzo6SGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFk
TWFpbiAodGhpcz0weDZmYmI2OCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwOjQxNQojNyAgMHgwMDAwN2ZmZmY2NTQ0MDhjIGluIEpTQzo6SGVh
cDo6YmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jIChoZWFwPQogICAgMHg2ZmJiNjgpIGF0IC4u
Ly4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwOjQwNgojOCAgMHgw
MDAwN2ZmZmY2NGE5NGQ1IGluIFdURjo6dGhyZWFkRW50cnlQb2ludCAoY29udGV4dERhdGE9MHg3
MDA3ZDApCiAgICBhdCAuLi8uLi8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZy5jcHA6NjcKIzkgIDB4MDAwMDdmZmZmNjRhMjA1MSBpbiBXVEY6OlRocmVhZFByaXZhdGU6
OnJ1biAodGhpcz0weDcwMDg1MCkKICAgIGF0IC4uLy4uLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwOjY3CiMxMCAweDAwMDA3ZmZmZjM4OTIyZTkgaW4g
UVRocmVhZFByaXZhdGU6OnN0YXJ0IChhcmc9MHg3MDA4NTApCiAgICBhdCB0aHJlYWQvcXRocmVh
ZF91bml4LmNwcDoyOTgKIzExIDB4MDAwMDdmZmZmMzVkMTljYSBpbiBzdGFydF90aHJlYWQgKCkg
ZnJvbSAvbGliL2xpYnB0aHJlYWQuc28uMAojMTIgMHgwMDAwN2ZmZmYyYjgwNzBkIGluIGNsb25l
ICgpIGZyb20gL2xpYi9saWJjLnNvLjYKIzEzIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAoKQoK
VGhyZWFkIDEgKFRocmVhZCAweDdmZmZmN2ZjZjdhMCAoTFdQIDEyNzgwKSk6CiMwICBRQ29yZUFw
cGxpY2F0aW9uOjp+UUNvcmVBcHBsaWNhdGlvbiAodGhpcz0weDdmZmZmZmZmZTM3MCwgCiAgICBf
X2luX2Nocmc9PG9wdGltaXplZCBvdXQ+KSBhdCBrZXJuZWwvcWNvcmVhcHBsaWNhdGlvbi5jcHA6
Nzg2CiMxICAweDAwMDA3ZmZmZjNmZjEyMmIgaW4gUUFwcGxpY2F0aW9uOjp+UUFwcGxpY2F0aW9u
ICh0aGlzPTB4N2ZmZmZmZmZlMzcwLCAKICAgIF9faW5fY2hyZz08b3B0aW1pemVkIG91dD4pIGF0
IGtlcm5lbC9xYXBwbGljYXRpb24uY3BwOjEyMTQKIzIgIDB4MDAwMDAwMDAwMDQwMjdjOCBpbiBt
YWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZmZmZmZmU0NzgpIGF0IG1haW4uY3BwOjMwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115874</attachid>
            <date>2011-11-18 14:31:59 -0800</date>
            <delta_ts>2011-11-18 14:40:40 -0800</delta_ts>
            <desc>extract initialization into common function</desc>
            <filename>native-threading.diff</filename>
            <type>text/plain</type>
            <size>27153</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZmI5N2FlLi4xOGY3MDJh
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMTggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYWRkaXRpb25hbCBXZWJDb3JlU3VwcG9ydCBmaWxlcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMS0xMS0xOCAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEFkZCBw
b3NzaWJpbGl0eSB0byBvdmVyd3JpdGUgV0VCS0lUX1BPUlRfRElSIGluIHBsYXRmb3JtIHNwZWNp
ZmljIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNzY0YjA4Li43N2NkNjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0xMS0xOCAgQW5k
cmV3IFdhc29uICA8cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KKworICAgICAgICBSZXBsYWNl
IFF0IFFUaHJlYWQgdGhyZWFkaW5nIGJhY2stZW5kIHdpdGggcHRocmVhZC9XaW4zMiB0aHJlYWRp
bmcgYmFjay1lbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjE1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBUaHJlYWRpbmdQdGhyZWFkcyBhbmQgVGhyZWFkaW5nV2luIGluc3RlYWQgb2YgVGhy
ZWFkaW5nUXQuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAg
ICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1RocmVhZFNw
ZWNpZmljLmg6IERyb3AgUVRocmVhZFN0b3JhZ2UgcmVsYXRlZCBjb2RlLgorICAgICAgICAoV1RG
Ojo6OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAg
ICAgICogd3RmL3F0L01haW5UaHJlYWRRdC5jcHA6IERyb3AgUXQgc3BlY2lmaWMgaXNNYWluVGhy
ZWFkKCkuCisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3dGYvd3RmLnByaToKKwogMjAxMS0xMS0xOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIFJlbW92ZSBkdXBsaWNhdGUgZHRvYSBm
aWxlcyBmcm9tIENNYWtlTGlzdHMudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCA4MDVjNjM0Li5mNjJlZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCi0jaWYgVVNFKFBUSFJFQURfQkFTRURfUVQpICYmICFkZWZpbmVkKFdURl9V
U0VfUFRIUkVBRFMpCi0jZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQotI2VuZGlmCi0KICNpZiBP
UyhEQVJXSU4pCiAKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvTWFpblRocmVhZC5jcHAKaW5kZXggOTY3YjcxNS4uZGVjN2JiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKIHR5cGVkZWYgRGVxdWU8RnVuY3Rpb25XaXRoQ29udGV4dD4gRnVuY3Rpb25RdWV1ZTsKIAog
c3RhdGljIGJvb2wgY2FsbGJhY2tzUGF1c2VkOyAvLyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyBv
bmx5IGFjY2Vzc2VkIGZyb20gbWFpbiB0aHJlYWQuCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKFFUKQorI2lmICFQTEFURk9STShNQUMpCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBt
YWluVGhyZWFkSWRlbnRpZmllcjsKICNlbmRpZgogCkBAIC05Niw5ICs5Niw3IEBAIHZvaWQgaW5p
dGlhbGl6ZU1haW5UaHJlYWQoKQogICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWRNYWlu
VGhyZWFkID0gdHJ1ZTsKIAotI2lmICFQTEFURk9STShRVCkKICAgICBtYWluVGhyZWFkSWRlbnRp
ZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKLSNlbmRpZgogCiAgICAgbWFpblRocmVhZEZ1bmN0aW9u
UXVldWVNdXRleCgpOwogICAgIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKQEAgLTIz
MSw3ICsyMjksNyBAQCB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVz
ZWQpCiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0K
IAotI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oTUFD
KQogYm9vbCBpc01haW5UaHJlYWQoKQogewogICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0g
bWFpblRocmVhZElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggMjBkM2QwOS4uNmIyZDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApA
QCAtNDgwLDEwICs0ODAsNiBAQAogI2RlZmluZSBXVEZfVVNFX01FUlNFTk5FX1RXSVNURVJfMTk5
MzcgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgJiYgT1MoVU5JWCkgJiYgIU9TKERBUldJ
TikKLSNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEX0JBU0VEX1FUIDEKLSNlbmRpZgotCiAvKiBPbiBX
aW5kb3dzLCB1c2UgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgYnkgZGVmYXVsdCAqLwogI2lmIE9T
KFdJTkRPV1MpCiAjZGVmaW5lIFdURl9VU0VfUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUiAgMQpA
QCAtNjM0LDYgKzYzMCw5IEBACiAjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQogI2RlZmluZSBI
QVZFX1BUSFJFQURfUldMT0NLIDEKICNlbmRpZgorI2VsaWYgUExBVEZPUk0oUVQpICYmIE9TKFVO
SVgpCisjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQorI2RlZmluZSBIQVZFX1BUSFJFQURfUldM
T0NLIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCmluZGV4IDk0MDNkNzEuLjRkN2M4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKQEAgLTQ1
LDggKzQ1LDYgQEAKIAogI2lmIFVTRShQVEhSRUFEUykKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0j
ZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRVGhyZWFkU3RvcmFnZT4KICNlbGlmIFBMQVRG
T1JNKEdUSykKICNpbmNsdWRlIDxnbGliLmg+CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtOTAsOSAr
ODgsNiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhKTsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERhdGEoVCogdmFsdWUsIFRocmVhZFNwZWNpZmljPFQ+KiBvd25l
cikgOiB2YWx1ZSh2YWx1ZSksIG93bmVyKG93bmVyKSB7fQotI2lmIFBMQVRGT1JNKFFUKQotICAg
ICAgICB+RGF0YSgpIHsgb3duZXItPmRlc3Ryb3kodGhpcyk7IH0KLSNlbmRpZgogCiAgICAgICAg
IFQqIHZhbHVlOwogICAgICAgICBUaHJlYWRTcGVjaWZpYzxUPiogb3duZXI7CkBAIC0xMDQsOCAr
OTksNiBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFBUSFJFQURTKQogICAgIHB0aHJlYWRfa2V5X3Qg
bV9rZXk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICBRVGhyZWFkU3RvcmFnZTxEYXRhKj4gbV9r
ZXk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR1N0YXRpY1ByaXZhdGUgbV9rZXk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQpAQCAtMTM2LDI4ICsxMjksNiBAQCBpbmxpbmUgdm9pZCBUaHJlYWRTcGVj
aWZpYzxUPjo6c2V0KFQqIHB0cikKICAgICBwdGhyZWFkX3NldHNwZWNpZmljKG1fa2V5LCBuZXcg
RGF0YShwdHIsIHRoaXMpKTsKIH0KIAotI2VsaWYgUExBVEZPUk0oUVQpCi0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKLXsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBUaHJlYWRTcGVjaWZpYzxUPjo6
Z2V0KCkKLXsKLSAgICBEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8RGF0YSo+KG1fa2V5LmxvY2Fs
RGF0YSgpKTsKLSAgICByZXR1cm4gZGF0YSA/IGRhdGEtPnZhbHVlIDogMDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpzZXQoVCogcHRy
KQotewotICAgIEFTU0VSVCghZ2V0KCkpOwotICAgIERhdGEqIGRhdGEgPSBuZXcgRGF0YShwdHIs
IHRoaXMpOwotICAgIG1fa2V5LnNldExvY2FsRGF0YShkYXRhKTsKLX0KLQogI2VsaWYgUExBVEZP
Uk0oR1RLKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjUwLDE4ICsyMjEsMTIgQEAgaW5s
aW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodm9pZCogcHRyKQogICAgIC8vIFNl
ZSBjb21tZW50IGFzIGFib3ZlCiAgICAgZ19zdGF0aWNfcHJpdmF0ZV9zZXQoJmRhdGEtPm93bmVy
LT5tX2tleSwgZGF0YSwgMCk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShRVCkKLSAgICAvLyBTZWUg
Y29tbWVudCBhcyBhYm92ZQotICAgIGRhdGEtPm93bmVyLT5tX2tleS5zZXRMb2NhbERhdGEoZGF0
YSk7Ci0jZW5kaWYKIAogICAgIGRhdGEtPnZhbHVlLT5+VCgpOwogICAgIGZhc3RGcmVlKGRhdGEt
PnZhbHVlKTsKIAogI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX3NldHNwZWNpZmljKGRh
dGEtPm93bmVyLT5tX2tleSwgMCk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICAvLyBEbyBub3Ro
aW5nIGhlcmUKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBnX3N0YXRpY19wcml2YXRlX3NldCgm
ZGF0YS0+b3duZXItPm1fa2V5LCAwLCAwKTsKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0yNzAsOSAr
MjM1LDcgQEAgaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodm9pZCogcHRy
KQogI2Vycm9yIFRocmVhZFNwZWNpZmljIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBwbGF0
Zm9ybS4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKFFUKQogICAgIGRlbGV0ZSBkYXRhOwotI2Vu
ZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDlmMjYzYWUuLjFiZWQ1ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC00
NiwxNCArNDYsNiBAQAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oUVQpCi0jaW5jbHVkZSA8cWdsb2JhbC5oPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBR
TXV0ZXg7Ci1jbGFzcyBRV2FpdENvbmRpdGlvbjsKLVFUX0VORF9OQU1FU1BBQ0UKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIFVTRShQVEhSRUFEUykKQEAgLTY0LDEwICs1Niw2IEBA
IHR5cGVkZWYgcHRocmVhZF9yd2xvY2tfdCBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7CiB0eXBlZGVm
IHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRlTG9jazsKICNlbmRpZgogdHlwZWRlZiBwdGhyZWFkX2Nv
bmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotdHlwZWRlZiBRVF9Q
UkVQRU5EX05BTUVTUEFDRShRTXV0ZXgpKiBQbGF0Zm9ybU11dGV4OwotdHlwZWRlZiB2b2lkKiBQ
bGF0Zm9ybVJlYWRXcml0ZUxvY2s7IC8vIEZJWE1FOiBJbXBsZW1lbnQuCi10eXBlZGVmIFFUX1BS
RVBFTkRfTkFNRVNQQUNFKFFXYWl0Q29uZGl0aW9uKSogUGxhdGZvcm1Db25kaXRpb247CiAjZWxp
ZiBPUyhXSU5ET1dTKQogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJ
T04gbV9pbnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9xdC9NYWluVGhyZWFkUXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWlu
VGhyZWFkUXQuY3BwCmluZGV4IDk4YjZhMGMuLjVmNWU2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvcXQvTWFpblRocmVhZFF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2lu
Y2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1ZGUgPFF0Q29yZS9RQ29yZUFwcGxpY2F0aW9u
PgotI2luY2x1ZGUgPFFUaHJlYWQ+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC02NywxMSArNjYs
NiBAQCB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQogICAgIFFN
ZXRhT2JqZWN0OjppbnZva2VNZXRob2Qod2Via2l0X21haW5fdGhyZWFkX2ludm9rZXIoKSwgImRp
c3BhdGNoIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogfQogCi1ib29sIGlzTWFpblRocmVhZCgp
Ci17Ci0gICAgcmV0dXJuIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBRQ29yZUFwcGxpY2F0
aW9uOjppbnN0YW5jZSgpLT50aHJlYWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNp
bmNsdWRlICJNYWluVGhyZWFkUXQubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0
L1RocmVhZGluZ1F0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWI3Yy4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20pCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUaHJlYWRpbmcuaCIKLQotI2luY2x1ZGUgIkRhdGVNYXRoLmgiCi0jaW5j
bHVkZSAiZHRvYS5oIgotI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCi0jaW5jbHVkZSAiSGFzaE1h
cC5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLSNpbmNsdWRlICJSYW5kb21OdW1iZXJTZWVk
LmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KLQotI2luY2x1ZGUgPFFDb3JlQXBw
bGljYXRpb24+Ci0jaW5jbHVkZSA8UU11dGV4PgotI2luY2x1ZGUgPFFUaHJlYWQ+Ci0jaW5jbHVk
ZSA8UVdhaXRDb25kaXRpb24+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBUaHJlYWRQcml2
YXRlIDogcHVibGljIFFUaHJlYWQgewotcHVibGljOgotICAgIFRocmVhZFByaXZhdGUoVGhyZWFk
RnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7Ci0gICAgdm9pZCBydW4oKTsKLSAgICB2
b2lkKiBnZXRSZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fcmV0dXJuVmFsdWU7IH0KLXByaXZhdGU6
Ci0gICAgdm9pZCogbV9kYXRhOwotICAgIFRocmVhZEZ1bmN0aW9uIG1fZW50cnlQb2ludDsKLSAg
ICB2b2lkKiBtX3JldHVyblZhbHVlOwotfTsKLQotVGhyZWFkUHJpdmF0ZTo6VGhyZWFkUHJpdmF0
ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKSAKLSAgICA6IG1fZGF0YShk
YXRhKQotICAgICwgbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQpCi0gICAgLCBtX3JldHVyblZhbHVl
KDApCi17Ci19Ci0KLXZvaWQgVGhyZWFkUHJpdmF0ZTo6cnVuKCkKLXsKLSAgICBtX3JldHVyblZh
bHVlID0gbV9lbnRyeVBvaW50KG1fZGF0YSk7Ci19Ci0KLWNsYXNzIFRocmVhZE1vbml0b3IgOiBw
dWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBzdGF0aWMgVGhyZWFk
TW9uaXRvciAqIGluc3RhbmNlKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUaHJlYWRNb25pdG9y
ICppbnN0YW5jZSA9IG5ldyBUaHJlYWRNb25pdG9yKCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKLSAgICB9Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgdGhyZWFkRmluaXNoZWQoKQot
ICAgIHsKLSAgICAgICAgc2VuZGVyKCktPmRlbGV0ZUxhdGVyKCk7Ci0gICAgfQotfTsKLQotc3Rh
dGljIE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKLQotc3RhdGljIE11
dGV4JiB0aHJlYWRNYXBNdXRleCgpCi17Ci0gICAgc3RhdGljIE11dGV4IG11dGV4OwotICAgIHJl
dHVybiBtdXRleDsKLX0KLQotc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVh
ZCo+JiB0aHJlYWRNYXAoKQotewotICAgIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIs
IFFUaHJlYWQqPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RhdGljIFRocmVhZElkZW50
aWZpZXIgaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShRVGhyZWFkKiYgdGhyZWFkKQotewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEhhc2hNYXA8VGhy
ZWFkSWRlbnRpZmllciwgUVRocmVhZCo+OjppdGVyYXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4o
KTsKLSAgICBmb3IgKDsgaSAhPSB0aHJlYWRNYXAoKS5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChpLT5zZWNvbmQgPT0gdGhyZWFkKQotICAgICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwotICAg
IH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBlc3RhYmxp
c2hJZGVudGlmaWVyRm9yVGhyZWFkKFFUaHJlYWQqJiB0aHJlYWQpCi17Ci0gICAgQVNTRVJUKCFp
ZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKHRocmVhZCkpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOwotCi0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRl
bnRpZmllckNvdW50ID0gMTsKLQotICAgIHRocmVhZE1hcCgpLmFkZChpZGVudGlmaWVyQ291bnQs
IHRocmVhZCk7Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllckNvdW50Kys7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQotewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEFTU0VSVCh0aHJl
YWRNYXAoKS5jb250YWlucyhpZCkpOwotCi0gICAgdGhyZWFkTWFwKCkucmVtb3ZlKGlkKTsKLX0K
LQotc3RhdGljIFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBp
ZCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0KLSAgICBy
ZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGlkKTsKLX0KLQotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCkKLXsKLSAgICBpZiAoIWF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7Ci0gICAg
ICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBub3QgY29uc3RydWN0IGl0cyBzdGF0aWMg
c3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAotICAgICAgICAvLyBzbyBlbnN1cmUgaXQg
aGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgICAgICBTdHJpbmdJbXBsOjplbXB0
eSgpOwotICAgICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRl
eDsKLSAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51
bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHNfZHRv
YVA1TXV0ZXggPSBuZXcgTXV0ZXg7Ci0gICAgICAgIGluaXRpYWxpemVEYXRlcygpOwotICAgIH0K
LX0KLQotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKQotewotICAg
IEFTU0VSVChhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCk7Ci0gICAgYXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgtPmxvY2soKTsKLX0KLQotdm9pZCB1bmxvY2tBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAgYXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVh
ZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNo
YXIqKQotewotICAgIFRocmVhZFByaXZhdGUqIHRocmVhZCA9IG5ldyBUaHJlYWRQcml2YXRlKGVu
dHJ5UG9pbnQsIGRhdGEpOwotICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwg
ZW50cnlQb2ludCwgZGF0YSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFFPYmpl
Y3Q6OmNvbm5lY3QodGhyZWFkLCBTSUdOQUwoZmluaXNoZWQoKSksIFRocmVhZE1vbml0b3I6Omlu
c3RhbmNlKCksIFNMT1QodGhyZWFkRmluaXNoZWQoKSkpOwotCi0gICAgdGhyZWFkLT5zdGFydCgp
OwotCi0gICAgUVRocmVhZCogdGhyZWFkUmVmID0gc3RhdGljX2Nhc3Q8UVRocmVhZCo+KHRocmVh
ZCk7Ci0KLSAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCh0aHJlYWRSZWYp
OwotfQotCi12b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciop
Ci17Ci19Ci0KLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRo
cmVhZElELCB2b2lkKiogcmVzdWx0KQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0KLSAgICBR
VGhyZWFkKiB0aHJlYWQgPSB0aHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKLQotICAgIGJv
b2wgcmVzID0gdGhyZWFkLT53YWl0KCk7Ci0KLSAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIo
dGhyZWFkSUQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxUaHJlYWRQcml2YXRlKj4odGhyZWFkKS0+Z2V0UmV0dXJuVmFsdWUoKTsKLQotICAgIHJldHVy
biAhcmVzOwotfQotCi12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElE
KQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0gICAgY2xlYXJUaHJlYWRGb3JJZGVudGlmaWVy
KHRocmVhZElEKTsKLX0KLQotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKLXsKLSAg
ICBRVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOwotICAg
IGlmIChUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShjdXJy
ZW50VGhyZWFkKSkKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIHJldHVybiBlc3RhYmxpc2hJZGVu
dGlmaWVyRm9yVGhyZWFkKGN1cnJlbnRUaHJlYWQpOwotfQotCi12b2lkIHlpZWxkKCkKLXsKLSAg
ICBRVGhyZWFkOjp5aWVsZEN1cnJlbnRUaHJlYWQoKTsKLX0KLQotTXV0ZXg6Ok11dGV4KCkKLSAg
ICA6IG1fbXV0ZXgobmV3IFFNdXRleCgpKQotewotfQotCi1NdXRleDo6fk11dGV4KCkKLXsKLSAg
ICBkZWxldGUgbV9tdXRleDsKLX0KLQotdm9pZCBNdXRleDo6bG9jaygpCi17Ci0gICAgbV9tdXRl
eC0+bG9jaygpOwotfQotCi1ib29sIE11dGV4Ojp0cnlMb2NrKCkKLXsKLSAgICByZXR1cm4gbV9t
dXRleC0+dHJ5TG9jaygpOwotfQotCi12b2lkIE11dGV4Ojp1bmxvY2soKQotewotICAgIG1fbXV0
ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbigpCi0g
ICAgOiBtX2NvbmRpdGlvbihuZXcgUVdhaXRDb25kaXRpb24oKSkKLXsKLX0KLQotVGhyZWFkQ29u
ZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKLXsKLSAgICBkZWxldGUgbV9jb25kaXRpb247Ci19
Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKLXsKLSAgICBtX2Nv
bmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCkpOwotfQotCi1ib29sIFRocmVhZENvbmRpdGlvbjo6
dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29sdXRlVGltZSkKLXsKLSAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0KLSAgICAvLyBUaW1lIGlzIGlu
IHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgotICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBj
dXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGltZSBpcyB0b28g
ZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNpZ25lZCBsb25nKSAtIHdh
aXQgZm9yZXZlci4KLSAgICBpZiAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUgPiBzdGF0aWNf
Y2FzdDxkb3VibGU+KElOVF9NQVgpIC8gMTAwMC4wKSB7Ci0gICAgICAgIHdhaXQobXV0ZXgpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNl
Y29uZHMgPSAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUpICogMTAwMC4wOwotICAgIHJldHVy
biBtX2NvbmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGludGVydmFsTWlsbGlzZWNvbmRzKSk7Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjpz
aWduYWwoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlT25lKCk7Ci19Ci0KLXZvaWQgVGhyZWFk
Q29uZGl0aW9uOjpicm9hZGNhc3QoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlQWxsKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2luY2x1ZGUgIlRocmVhZGluZ1F0Lm1vYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaQppbmRleCBkNTIyZDBhLi5jOWVhYWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi93dGYucHJpCkBAIC0xMzksNiArMTM5LDggQEAgSEVBREVSUyArPSBcCiAg
ICAgd3RmL1ZNVGFncy5oIFwKICAgICB3dGYvV1RGVGhyZWFkRGF0YS5oCiAKK3VuaXg6IEhFQURF
UlMgKz0gd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAorCiBTT1VSQ0VTICs9IFwK
ICAgICB3dGYvQXNzZXJ0aW9ucy5jcHAgXAogICAgIHd0Zi9CaXRWZWN0b3IuY3BwIFwKQEAgLTE2
Nyw3ICsxNjksNiBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvT1NSYW5kb21Tb3VyY2UuY3BwIFwK
ICAgICB3dGYvcXQvTWFpblRocmVhZFF0LmNwcCBcCiAgICAgd3RmL3F0L1N0cmluZ1F0LmNwcCBc
Ci0gICAgd3RmL3F0L1RocmVhZGluZ1F0LmNwcCBcCiAgICAgd3RmL1BhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5jcHAgXAogICAgIHd0Zi9QYWdlQmxvY2suY3BwIFwKICAgICB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHAgXApAQCAtMTg5LDUgKzE5MCwxMyBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYv
dW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKICAgICB3dGYvdW5pY29kZS9VVEY4LmNwcAog
Ci11bml4OiBTT1VSQ0VTICs9IHd0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcAotd2luKnx3aW5jZSo6
IFNPVVJDRVMgKz0gd3RmL09TQWxsb2NhdG9yV2luLmNwcAorCit1bml4OiBTT1VSQ0VTICs9IFwK
KyAgICB3dGYvT1NBbGxvY2F0b3JQb3NpeC5jcHAgXAorICAgIHd0Zi9UaHJlYWRJZGVudGlmaWVy
RGF0YVB0aHJlYWRzLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorCit3aW4q
fHdpbmNlKjogU09VUkNFUyArPSBcCisgICAgd3RmL09TQWxsb2NhdG9yV2luLmNwcCBcCisgICAg
d3RmL1RocmVhZFNwZWNpZmljV2luLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1dpbi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2NWUxNTYwLi44ZTA0ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMTggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIGluY2x1ZGUgcWdsb2JhbC5oIHNpbmNlIFRocmVh
ZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaDoKKwogMjAxMS0xMS0xOCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBlYXJhbmNlIG9mIGNvbXBvdW5k
IHRyYW5zZm9ybSBhbmltYXRpb25zIHVuZGVyIGFwcHMgbGlua2VkIG9uIFNub3dMZW9wYXJkIGlz
IGluY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JraW5nQ29udGV4dC5oCmluZGV4IGFhMWViYjkuLmYyYjEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8cWdsb2JhbC5o
PgogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUU5ldHdvcmtBY2Nl
c3NNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGFmYzJjNjAuLjJlMWJm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogCi0jaW5jbHVkZSAicXdlYmVs
ZW1lbnRfcC5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgi
CiAjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgpAQCAtNzYsMTIgKzc1LDEyIEBACiAjaW5jbHVkZSAi
SGFzaE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRR
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JTZXJ2ZXJRdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0Nv
bnRleHQuaCIKQEAgLTkzLDcgKzkyLDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNo
RXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQbHVn
aW5EYXRhYmFzZS5oIgpAQCAtMTA3LDIwICsxMDUsMTQgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2lmIGRlZmluZWQgUV9PU19XSU4zMgogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNlbmRpZiAv
LyBRX09TX1dJTjMyCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXRpbHNR
dC5oIgotI2lmIFVTRShRVEtJVCkKLSNpbmNsdWRlICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKLSNl
bmRpZgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxR
QmFzaWNUaW1lcj4KQEAgLTMxOCwxNyArMzEwLDcgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkoZmFs
c2UpCiAgICAgLCBtX2xhc3REcm9wQWN0aW9uKFF0OjpJZ25vcmVBY3Rpb24pCiB7Ci0gICAgV2Vi
Q29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7Ci0gICAgU2NyaXB0
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9s
aWN5KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1
YnN0aXR1dGVEYXRhKTsKLQotICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppbml0aWFsaXplKCk7
Ci0gICAgUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSgpOwotCi0jaWYgVVNFKFFUS0lU
KQotICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7Ci0jZW5kaWYKKyAgICBXZWJDb3Jl
Ojppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAKICAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xp
ZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQo
cSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAzNDMwOWIyLi43ZjMy
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVu
dFF0LmgiCiAjZW5kaWYKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0y
NzgsOCArMjc5LDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogUVdlYlNl
dHRpbmdzKiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKIHsKICAgICBzdGF0aWMgUVdl
YlNldHRpbmdzKiBnbG9iYWwgPSAwOwotICAgIGlmICghZ2xvYmFsKQorICAgIGlmICghZ2xvYmFs
KSB7CisgICAgICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICAgICAgZ2xv
YmFsID0gbmV3IFFXZWJTZXR0aW5nczsKKyAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCBlZDgxODEzLi4yYmNiNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDExLTExLTE4ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9n
aWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRocmVhZCB0aHJlYWRpbmcgYmFjay1lbmQg
d2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNrLWVuZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBXZWJDb3JlIGluaXRpYWxpemF0
aW9uIG91dCBvZiBRV2ViUGFnZVByaXZhdGUgaW50byBhCisgICAgICAgIHNlcGFyYXRlIGluaXRp
YWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28gbmVlZHMgdG8gYmUgY2FsbGVkCisgICAgICAg
IHdoZW4gY29uc3RydWN0aW5nIHRoZSBnbG9iYWwgUVdlYlNldHRpbmdzIHNpbmNlIGl0IGNhbiBi
ZSB1c2VkCisgICAgICAgIHByaW9yIHRvIGNyZWF0aW5nIGEgUVdlYlBhZ2UgYW5kIGl0IG5lZWRz
IGF0IGxlYXN0IHRocmVhZGluZyB0bworICAgICAgICBiZSBpbml0aWFsaXplZC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdl
UHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0
V2ViQ29yZVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplV2ViQ29y
ZVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0Lmg6IEFkZGVkLgor
CiAyMDExLTExLTE4ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtRdF0gRW5hYmxlIFdlYlNvY2tldCBoeWJpIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jYTIyODMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApAQCAtMCwwICsxLDY4IEBACisv
KgorICogQ29weXJpZ2h0IDIwMTEgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnks
IEwuUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEhld2xldHQtUGFja2FyZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5pdFdlYkNvcmVRdC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc1F0LmgiCisjaWYgVVNFKFFUS0lUKQorI2luY2x1ZGUgIldl
YlN5c3RlbUludGVyZmFjZS5oIgorI2VuZGlmCisjaW5jbHVkZSAicXdlYmVsZW1lbnRfcC5oIgor
CisjaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIGluaXRpYWxpemVX
ZWJDb3JlUXQoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAg
aWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpJbml0aWFs
aXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpp
bml0aWFsaXplVGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwor
ICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koV2ViQ29yZTo6
U2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEp
OworCisgICAgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmluaXRpYWxpemUoKTsKKyAgICBRdFdlYkVs
ZW1lbnRSdW50aW1lOjppbml0aWFsaXplKCk7CisKKyNpZiBVU0UoUVRLSVQpCisgICAgSW5pdFdl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyNlbmRpZgorCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVl
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
aXRXZWJDb3JlUXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNv
cmVRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWFhZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3Jl
UXQuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgSGV3bGV0dC1QYWNr
YXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEhld2xldHQtUGFja2FyZCBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEluaXRXZWJDb3JlUXRfaAorI2RlZmluZSBJbml0V2ViQ29yZVF0X2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIGluaXRpYWxpemVXZWJDb3JlUXQoKTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291cmNlL2FwaS5wcmkKaW5kZXggZWYx
ZDBkMS4uYTg5MzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL2FwaS5wcmkKKysrIGIvU291cmNlL2Fw
aS5wcmkKQEAgLTQ5LDYgKzQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgJCRQV0QvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKICAgICAkJFBXRC9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmNwcCBcCiAgICAg
JCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVu
dFF0LmNwcCBcCisgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3Jl
UXQuY3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuY3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
U2VydmVyUXQuY3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwIFwKQEAgLTYwLDYgKzYxLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c1F0LmNwcAogCiBIRUFERVJTICs9IFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5pdFdlYkNvcmVRdC5oIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yU2VydmVyUXQuaCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1F0RmFsbGJhY2tXZWJQb3B1cC5oIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUXRXZWJDb21ib0JveC5oIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115875</attachid>
            <date>2011-11-18 14:40:40 -0800</date>
            <delta_ts>2011-11-25 14:37:07 -0800</delta_ts>
            <desc>extract initialization into common function</desc>
            <filename>native-threading.diff</filename>
            <type>text/plain</type>
            <size>27155</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZmI5N2FlLi4xOGY3MDJh
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMTggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYWRkaXRpb25hbCBXZWJDb3JlU3VwcG9ydCBmaWxlcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMS0xMS0xOCAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEFkZCBw
b3NzaWJpbGl0eSB0byBvdmVyd3JpdGUgV0VCS0lUX1BPUlRfRElSIGluIHBsYXRmb3JtIHNwZWNp
ZmljIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiNzY0YjA4Li43N2NkNjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0xMS0xOCAgQW5k
cmV3IFdhc29uICA8cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KKworICAgICAgICBSZXBsYWNl
IFF0IFFUaHJlYWQgdGhyZWFkaW5nIGJhY2stZW5kIHdpdGggcHRocmVhZC9XaW4zMiB0aHJlYWRp
bmcgYmFjay1lbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjE1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBUaHJlYWRpbmdQdGhyZWFkcyBhbmQgVGhyZWFkaW5nV2luIGluc3RlYWQgb2YgVGhy
ZWFkaW5nUXQuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAg
ICAgICogd3RmL01haW5UaHJlYWQuY3BwOgorICAgICAgICAoV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1RocmVhZFNw
ZWNpZmljLmg6IERyb3AgUVRocmVhZFN0b3JhZ2UgcmVsYXRlZCBjb2RlLgorICAgICAgICAoV1RG
Ojo6OmRlc3Ryb3kpOgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg6CisgICAg
ICAgICogd3RmL3F0L01haW5UaHJlYWRRdC5jcHA6IERyb3AgUXQgc3BlY2lmaWMgaXNNYWluVGhy
ZWFkKCkuCisgICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3dGYvd3RmLnByaToKKwogMjAxMS0xMS0xOCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIFJlbW92ZSBkdXBsaWNhdGUgZHRvYSBm
aWxlcyBmcm9tIENNYWtlTGlzdHMudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCA4MDVjNjM0Li5mNjJlZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKQEAg
LTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCi0jaWYgVVNFKFBUSFJFQURfQkFTRURfUVQpICYmICFkZWZpbmVkKFdURl9V
U0VfUFRIUkVBRFMpCi0jZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQotI2VuZGlmCi0KICNpZiBP
UyhEQVJXSU4pCiAKICNpbmNsdWRlIDxtYWNoL21hY2hfaW5pdC5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvTWFpblRocmVhZC5jcHAKaW5kZXggOTY3YjcxNS4uZGVjN2JiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHB1Ymxp
YzoKIHR5cGVkZWYgRGVxdWU8RnVuY3Rpb25XaXRoQ29udGV4dD4gRnVuY3Rpb25RdWV1ZTsKIAog
c3RhdGljIGJvb2wgY2FsbGJhY2tzUGF1c2VkOyAvLyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyBv
bmx5IGFjY2Vzc2VkIGZyb20gbWFpbiB0aHJlYWQuCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKFFUKQorI2lmICFQTEFURk9STShNQUMpCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBt
YWluVGhyZWFkSWRlbnRpZmllcjsKICNlbmRpZgogCkBAIC05Niw5ICs5Niw3IEBAIHZvaWQgaW5p
dGlhbGl6ZU1haW5UaHJlYWQoKQogICAgICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWRNYWlu
VGhyZWFkID0gdHJ1ZTsKIAotI2lmICFQTEFURk9STShRVCkKICAgICBtYWluVGhyZWFkSWRlbnRp
ZmllciA9IGN1cnJlbnRUaHJlYWQoKTsKLSNlbmRpZgogCiAgICAgbWFpblRocmVhZEZ1bmN0aW9u
UXVldWVNdXRleCgpOwogICAgIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKQEAgLTIz
MSw3ICsyMjksNyBAQCB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVz
ZWQpCiAgICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0K
IAotI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oTUFD
KQogYm9vbCBpc01haW5UaHJlYWQoKQogewogICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0g
bWFpblRocmVhZElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggMjBkM2QwOS4uNmIyZDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApA
QCAtNDgwLDEwICs0ODAsNiBAQAogI2RlZmluZSBXVEZfVVNFX01FUlNFTk5FX1RXSVNURVJfMTk5
MzcgMQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShRVCkgJiYgT1MoVU5JWCkgJiYgIU9TKERBUldJ
TikKLSNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEX0JBU0VEX1FUIDEKLSNlbmRpZgotCiAvKiBPbiBX
aW5kb3dzLCB1c2UgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIgYnkgZGVmYXVsdCAqLwogI2lmIE9T
KFdJTkRPV1MpCiAjZGVmaW5lIFdURl9VU0VfUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUiAgMQpA
QCAtNjM0LDYgKzYzMCw5IEBACiAjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQogI2RlZmluZSBI
QVZFX1BUSFJFQURfUldMT0NLIDEKICNlbmRpZgorI2VsaWYgUExBVEZPUk0oUVQpICYmIE9TKFVO
SVgpCisjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMQorI2RlZmluZSBIQVZFX1BUSFJFQURfUldM
T0NLIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCmluZGV4IDk0MDNkNzEuLjRkN2M4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKQEAgLTQ1
LDggKzQ1LDYgQEAKIAogI2lmIFVTRShQVEhSRUFEUykKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0j
ZWxpZiBQTEFURk9STShRVCkKLSNpbmNsdWRlIDxRVGhyZWFkU3RvcmFnZT4KICNlbGlmIFBMQVRG
T1JNKEdUSykKICNpbmNsdWRlIDxnbGliLmg+CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtOTAsOSAr
ODgsNiBAQCBwcml2YXRlOgogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhKTsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERhdGEoVCogdmFsdWUsIFRocmVhZFNwZWNpZmljPFQ+KiBvd25l
cikgOiB2YWx1ZSh2YWx1ZSksIG93bmVyKG93bmVyKSB7fQotI2lmIFBMQVRGT1JNKFFUKQotICAg
ICAgICB+RGF0YSgpIHsgb3duZXItPmRlc3Ryb3kodGhpcyk7IH0KLSNlbmRpZgogCiAgICAgICAg
IFQqIHZhbHVlOwogICAgICAgICBUaHJlYWRTcGVjaWZpYzxUPiogb3duZXI7CkBAIC0xMDQsOCAr
OTksNiBAQCBwcml2YXRlOgogCiAjaWYgVVNFKFBUSFJFQURTKQogICAgIHB0aHJlYWRfa2V5X3Qg
bV9rZXk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICBRVGhyZWFkU3RvcmFnZTxEYXRhKj4gbV9r
ZXk7CiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgR1N0YXRpY1ByaXZhdGUgbV9rZXk7CiAjZWxp
ZiBPUyhXSU5ET1dTKQpAQCAtMTM2LDI4ICsxMjksNiBAQCBpbmxpbmUgdm9pZCBUaHJlYWRTcGVj
aWZpYzxUPjo6c2V0KFQqIHB0cikKICAgICBwdGhyZWFkX3NldHNwZWNpZmljKG1fa2V5LCBuZXcg
RGF0YShwdHIsIHRoaXMpKTsKIH0KIAotI2VsaWYgUExBVEZPUk0oUVQpCi0KLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgVGhyZWFkU3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKLXsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUKiBUaHJlYWRTcGVjaWZpYzxUPjo6
Z2V0KCkKLXsKLSAgICBEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8RGF0YSo+KG1fa2V5LmxvY2Fs
RGF0YSgpKTsKLSAgICByZXR1cm4gZGF0YSA/IGRhdGEtPnZhbHVlIDogMDsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpzZXQoVCogcHRy
KQotewotICAgIEFTU0VSVCghZ2V0KCkpOwotICAgIERhdGEqIGRhdGEgPSBuZXcgRGF0YShwdHIs
IHRoaXMpOwotICAgIG1fa2V5LnNldExvY2FsRGF0YShkYXRhKTsKLX0KLQogI2VsaWYgUExBVEZP
Uk0oR1RLKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjUwLDE4ICsyMjEsMTIgQEAgaW5s
aW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodm9pZCogcHRyKQogICAgIC8vIFNl
ZSBjb21tZW50IGFzIGFib3ZlCiAgICAgZ19zdGF0aWNfcHJpdmF0ZV9zZXQoJmRhdGEtPm93bmVy
LT5tX2tleSwgZGF0YSwgMCk7CiAjZW5kaWYKLSNpZiBQTEFURk9STShRVCkKLSAgICAvLyBTZWUg
Y29tbWVudCBhcyBhYm92ZQotICAgIGRhdGEtPm93bmVyLT5tX2tleS5zZXRMb2NhbERhdGEoZGF0
YSk7Ci0jZW5kaWYKIAogICAgIGRhdGEtPnZhbHVlLT5+VCgpOwogICAgIGZhc3RGcmVlKGRhdGEt
PnZhbHVlKTsKIAogI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX3NldHNwZWNpZmljKGRh
dGEtPm93bmVyLT5tX2tleSwgMCk7Ci0jZWxpZiBQTEFURk9STShRVCkKLSAgICAvLyBEbyBub3Ro
aW5nIGhlcmUKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICBnX3N0YXRpY19wcml2YXRlX3NldCgm
ZGF0YS0+b3duZXItPm1fa2V5LCAwLCAwKTsKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0yNzAsOSAr
MjM1LDcgQEAgaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodm9pZCogcHRy
KQogI2Vycm9yIFRocmVhZFNwZWNpZmljIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBwbGF0
Zm9ybS4KICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKFFUKQogICAgIGRlbGV0ZSBkYXRhOwotI2Vu
ZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IDlmMjYzYWUuLjFiZWQ1ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC00
NiwxNCArNDYsNiBAQAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oUVQpCi0jaW5jbHVkZSA8cWdsb2JhbC5oPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBR
TXV0ZXg7Ci1jbGFzcyBRV2FpdENvbmRpdGlvbjsKLVFUX0VORF9OQU1FU1BBQ0UKLSNlbmRpZgot
CiBuYW1lc3BhY2UgV1RGIHsKIAogI2lmIFVTRShQVEhSRUFEUykKQEAgLTY0LDEwICs1Niw2IEBA
IHR5cGVkZWYgcHRocmVhZF9yd2xvY2tfdCBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7CiB0eXBlZGVm
IHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRlTG9jazsKICNlbmRpZgogdHlwZWRlZiBwdGhyZWFkX2Nv
bmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsKLSNlbGlmIFBMQVRGT1JNKFFUKQotdHlwZWRlZiBRVF9Q
UkVQRU5EX05BTUVTUEFDRShRTXV0ZXgpKiBQbGF0Zm9ybU11dGV4OwotdHlwZWRlZiB2b2lkKiBQ
bGF0Zm9ybVJlYWRXcml0ZUxvY2s7IC8vIEZJWE1FOiBJbXBsZW1lbnQuCi10eXBlZGVmIFFUX1BS
RVBFTkRfTkFNRVNQQUNFKFFXYWl0Q29uZGl0aW9uKSogUGxhdGZvcm1Db25kaXRpb247CiAjZWxp
ZiBPUyhXSU5ET1dTKQogc3RydWN0IFBsYXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJ
T04gbV9pbnRlcm5hbE11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9xdC9NYWluVGhyZWFkUXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWlu
VGhyZWFkUXQuY3BwCmluZGV4IDk4YjZhMGMuLjVmNWU2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvcXQvTWFpblRocmVhZFF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2lu
Y2x1ZGUgPFF0Q29yZS9RT2JqZWN0PgogI2luY2x1ZGUgPFF0Q29yZS9RQ29yZUFwcGxpY2F0aW9u
PgotI2luY2x1ZGUgPFFUaHJlYWQ+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC02NywxMSArNjYs
NiBAQCB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQogICAgIFFN
ZXRhT2JqZWN0OjppbnZva2VNZXRob2Qod2Via2l0X21haW5fdGhyZWFkX2ludm9rZXIoKSwgImRp
c3BhdGNoIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogfQogCi1ib29sIGlzTWFpblRocmVhZCgp
Ci17Ci0gICAgcmV0dXJuIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBRQ29yZUFwcGxpY2F0
aW9uOjppbnN0YW5jZSgpLT50aHJlYWQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNp
bmNsdWRlICJNYWluVGhyZWFkUXQubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0
L1RocmVhZGluZ1F0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWI3Yy4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20pCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJUaHJlYWRpbmcuaCIKLQotI2luY2x1ZGUgIkRhdGVNYXRoLmgiCi0jaW5j
bHVkZSAiZHRvYS5oIgotI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCi0jaW5jbHVkZSAiSGFzaE1h
cC5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLSNpbmNsdWRlICJSYW5kb21OdW1iZXJTZWVk
LmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KLQotI2luY2x1ZGUgPFFDb3JlQXBw
bGljYXRpb24+Ci0jaW5jbHVkZSA8UU11dGV4PgotI2luY2x1ZGUgPFFUaHJlYWQ+Ci0jaW5jbHVk
ZSA8UVdhaXRDb25kaXRpb24+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBUaHJlYWRQcml2
YXRlIDogcHVibGljIFFUaHJlYWQgewotcHVibGljOgotICAgIFRocmVhZFByaXZhdGUoVGhyZWFk
RnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7Ci0gICAgdm9pZCBydW4oKTsKLSAgICB2
b2lkKiBnZXRSZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fcmV0dXJuVmFsdWU7IH0KLXByaXZhdGU6
Ci0gICAgdm9pZCogbV9kYXRhOwotICAgIFRocmVhZEZ1bmN0aW9uIG1fZW50cnlQb2ludDsKLSAg
ICB2b2lkKiBtX3JldHVyblZhbHVlOwotfTsKLQotVGhyZWFkUHJpdmF0ZTo6VGhyZWFkUHJpdmF0
ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKSAKLSAgICA6IG1fZGF0YShk
YXRhKQotICAgICwgbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQpCi0gICAgLCBtX3JldHVyblZhbHVl
KDApCi17Ci19Ci0KLXZvaWQgVGhyZWFkUHJpdmF0ZTo6cnVuKCkKLXsKLSAgICBtX3JldHVyblZh
bHVlID0gbV9lbnRyeVBvaW50KG1fZGF0YSk7Ci19Ci0KLWNsYXNzIFRocmVhZE1vbml0b3IgOiBw
dWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBzdGF0aWMgVGhyZWFk
TW9uaXRvciAqIGluc3RhbmNlKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUaHJlYWRNb25pdG9y
ICppbnN0YW5jZSA9IG5ldyBUaHJlYWRNb25pdG9yKCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKLSAgICB9Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgdGhyZWFkRmluaXNoZWQoKQot
ICAgIHsKLSAgICAgICAgc2VuZGVyKCktPmRlbGV0ZUxhdGVyKCk7Ci0gICAgfQotfTsKLQotc3Rh
dGljIE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKLQotc3RhdGljIE11
dGV4JiB0aHJlYWRNYXBNdXRleCgpCi17Ci0gICAgc3RhdGljIE11dGV4IG11dGV4OwotICAgIHJl
dHVybiBtdXRleDsKLX0KLQotc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVh
ZCo+JiB0aHJlYWRNYXAoKQotewotICAgIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIs
IFFUaHJlYWQqPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RhdGljIFRocmVhZElkZW50
aWZpZXIgaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShRVGhyZWFkKiYgdGhyZWFkKQotewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEhhc2hNYXA8VGhy
ZWFkSWRlbnRpZmllciwgUVRocmVhZCo+OjppdGVyYXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4o
KTsKLSAgICBmb3IgKDsgaSAhPSB0aHJlYWRNYXAoKS5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGlm
IChpLT5zZWNvbmQgPT0gdGhyZWFkKQotICAgICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwotICAg
IH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBlc3RhYmxp
c2hJZGVudGlmaWVyRm9yVGhyZWFkKFFUaHJlYWQqJiB0aHJlYWQpCi17Ci0gICAgQVNTRVJUKCFp
ZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKHRocmVhZCkpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKHRocmVhZE1hcE11dGV4KCkpOwotCi0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRl
bnRpZmllckNvdW50ID0gMTsKLQotICAgIHRocmVhZE1hcCgpLmFkZChpZGVudGlmaWVyQ291bnQs
IHRocmVhZCk7Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllckNvdW50Kys7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQotewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEFTU0VSVCh0aHJl
YWRNYXAoKS5jb250YWlucyhpZCkpOwotCi0gICAgdGhyZWFkTWFwKCkucmVtb3ZlKGlkKTsKLX0K
LQotc3RhdGljIFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBp
ZCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0KLSAgICBy
ZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGlkKTsKLX0KLQotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5n
KCkKLXsKLSAgICBpZiAoIWF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7Ci0gICAg
ICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBub3QgY29uc3RydWN0IGl0cyBzdGF0aWMg
c3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAotICAgICAgICAvLyBzbyBlbnN1cmUgaXQg
aGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgICAgICBTdHJpbmdJbXBsOjplbXB0
eSgpOwotICAgICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRl
eDsKLSAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51
bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHNfZHRv
YVA1TXV0ZXggPSBuZXcgTXV0ZXg7Ci0gICAgICAgIGluaXRpYWxpemVEYXRlcygpOwotICAgIH0K
LX0KLQotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKQotewotICAg
IEFTU0VSVChhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCk7Ci0gICAgYXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXgtPmxvY2soKTsKLX0KLQotdm9pZCB1bmxvY2tBdG9taWNh
bGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAgYXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVh
ZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNo
YXIqKQotewotICAgIFRocmVhZFByaXZhdGUqIHRocmVhZCA9IG5ldyBUaHJlYWRQcml2YXRlKGVu
dHJ5UG9pbnQsIGRhdGEpOwotICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwg
ZW50cnlQb2ludCwgZGF0YSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFFPYmpl
Y3Q6OmNvbm5lY3QodGhyZWFkLCBTSUdOQUwoZmluaXNoZWQoKSksIFRocmVhZE1vbml0b3I6Omlu
c3RhbmNlKCksIFNMT1QodGhyZWFkRmluaXNoZWQoKSkpOwotCi0gICAgdGhyZWFkLT5zdGFydCgp
OwotCi0gICAgUVRocmVhZCogdGhyZWFkUmVmID0gc3RhdGljX2Nhc3Q8UVRocmVhZCo+KHRocmVh
ZCk7Ci0KLSAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCh0aHJlYWRSZWYp
OwotfQotCi12b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciop
Ci17Ci19Ci0KLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRo
cmVhZElELCB2b2lkKiogcmVzdWx0KQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0KLSAgICBR
VGhyZWFkKiB0aHJlYWQgPSB0aHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKLQotICAgIGJv
b2wgcmVzID0gdGhyZWFkLT53YWl0KCk7Ci0KLSAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIo
dGhyZWFkSUQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgICpyZXN1bHQgPSBzdGF0aWNfY2Fz
dDxUaHJlYWRQcml2YXRlKj4odGhyZWFkKS0+Z2V0UmV0dXJuVmFsdWUoKTsKLQotICAgIHJldHVy
biAhcmVzOwotfQotCi12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElE
KQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0gICAgY2xlYXJUaHJlYWRGb3JJZGVudGlmaWVy
KHRocmVhZElEKTsKLX0KLQotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKLXsKLSAg
ICBRVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOwotICAg
IGlmIChUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShjdXJy
ZW50VGhyZWFkKSkKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIHJldHVybiBlc3RhYmxpc2hJZGVu
dGlmaWVyRm9yVGhyZWFkKGN1cnJlbnRUaHJlYWQpOwotfQotCi12b2lkIHlpZWxkKCkKLXsKLSAg
ICBRVGhyZWFkOjp5aWVsZEN1cnJlbnRUaHJlYWQoKTsKLX0KLQotTXV0ZXg6Ok11dGV4KCkKLSAg
ICA6IG1fbXV0ZXgobmV3IFFNdXRleCgpKQotewotfQotCi1NdXRleDo6fk11dGV4KCkKLXsKLSAg
ICBkZWxldGUgbV9tdXRleDsKLX0KLQotdm9pZCBNdXRleDo6bG9jaygpCi17Ci0gICAgbV9tdXRl
eC0+bG9jaygpOwotfQotCi1ib29sIE11dGV4Ojp0cnlMb2NrKCkKLXsKLSAgICByZXR1cm4gbV9t
dXRleC0+dHJ5TG9jaygpOwotfQotCi12b2lkIE11dGV4Ojp1bmxvY2soKQotewotICAgIG1fbXV0
ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbigpCi0g
ICAgOiBtX2NvbmRpdGlvbihuZXcgUVdhaXRDb25kaXRpb24oKSkKLXsKLX0KLQotVGhyZWFkQ29u
ZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKLXsKLSAgICBkZWxldGUgbV9jb25kaXRpb247Ci19
Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKLXsKLSAgICBtX2Nv
bmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCkpOwotfQotCi1ib29sIFRocmVhZENvbmRpdGlvbjo6
dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29sdXRlVGltZSkKLXsKLSAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0KLSAgICAvLyBUaW1lIGlzIGlu
IHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgotICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBj
dXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGltZSBpcyB0b28g
ZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNpZ25lZCBsb25nKSAtIHdh
aXQgZm9yZXZlci4KLSAgICBpZiAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUgPiBzdGF0aWNf
Y2FzdDxkb3VibGU+KElOVF9NQVgpIC8gMTAwMC4wKSB7Ci0gICAgICAgIHdhaXQobXV0ZXgpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNl
Y29uZHMgPSAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUpICogMTAwMC4wOwotICAgIHJldHVy
biBtX2NvbmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGludGVydmFsTWlsbGlzZWNvbmRzKSk7Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjpz
aWduYWwoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlT25lKCk7Ci19Ci0KLXZvaWQgVGhyZWFk
Q29uZGl0aW9uOjpicm9hZGNhc3QoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlQWxsKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2luY2x1ZGUgIlRocmVhZGluZ1F0Lm1vYyIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaQppbmRleCBkNTIyZDBhLi5jOWVhYWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi93dGYucHJpCkBAIC0xMzksNiArMTM5LDggQEAgSEVBREVSUyArPSBcCiAg
ICAgd3RmL1ZNVGFncy5oIFwKICAgICB3dGYvV1RGVGhyZWFkRGF0YS5oCiAKK3VuaXg6IEhFQURF
UlMgKz0gd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAorCiBTT1VSQ0VTICs9IFwK
ICAgICB3dGYvQXNzZXJ0aW9ucy5jcHAgXAogICAgIHd0Zi9CaXRWZWN0b3IuY3BwIFwKQEAgLTE2
Nyw3ICsxNjksNiBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvT1NSYW5kb21Tb3VyY2UuY3BwIFwK
ICAgICB3dGYvcXQvTWFpblRocmVhZFF0LmNwcCBcCiAgICAgd3RmL3F0L1N0cmluZ1F0LmNwcCBc
Ci0gICAgd3RmL3F0L1RocmVhZGluZ1F0LmNwcCBcCiAgICAgd3RmL1BhZ2VBbGxvY2F0aW9uQWxp
Z25lZC5jcHAgXAogICAgIHd0Zi9QYWdlQmxvY2suY3BwIFwKICAgICB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHAgXApAQCAtMTg5LDUgKzE5MCwxMyBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYv
dW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKICAgICB3dGYvdW5pY29kZS9VVEY4LmNwcAog
Ci11bml4OiBTT1VSQ0VTICs9IHd0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcAotd2luKnx3aW5jZSo6
IFNPVVJDRVMgKz0gd3RmL09TQWxsb2NhdG9yV2luLmNwcAorCit1bml4OiBTT1VSQ0VTICs9IFwK
KyAgICB3dGYvT1NBbGxvY2F0b3JQb3NpeC5jcHAgXAorICAgIHd0Zi9UaHJlYWRJZGVudGlmaWVy
RGF0YVB0aHJlYWRzLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorCit3aW4q
fHdpbmNlKjogU09VUkNFUyArPSBcCisgICAgd3RmL09TQWxsb2NhdG9yV2luLmNwcCBcCisgICAg
d3RmL1RocmVhZFNwZWNpZmljV2luLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1dpbi5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2NWUxNTYwLi44ZTA0ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMTggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZWVkIHRvIGluY2x1ZGUgcWdsb2JhbC5oIHNpbmNlIFRocmVh
ZGluZ1ByaW1pdGl2ZXMuaCBubyBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaDoKKwogMjAxMS0xMS0xOCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBlYXJhbmNlIG9mIGNvbXBvdW5k
IHRyYW5zZm9ybSBhbmltYXRpb25zIHVuZGVyIGFwcHMgbGlua2VkIG9uIFNub3dMZW9wYXJkIGlz
IGluY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JraW5nQ29udGV4dC5oCmluZGV4IGFhMWViYjkuLmYyYjEwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTI3LDYg
KzI3LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8cWdsb2JhbC5o
PgogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUU5ldHdvcmtBY2Nl
c3NNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGFmYzJjNjAuLjJlMWJm
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogCi0jaW5jbHVkZSAicXdlYmVs
ZW1lbnRfcC5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lLmgi
CiAjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgpAQCAtNzYsMTIgKzc1LDEyIEBACiAjaW5jbHVkZSAi
SGFzaE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRR
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JTZXJ2ZXJRdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0Nv
bnRleHQuaCIKQEAgLTkzLDcgKzkyLDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRvdWNo
RXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQbHVn
aW5EYXRhYmFzZS5oIgpAQCAtMTA3LDIwICsxMDUsMTQgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2lmIGRlZmluZWQgUV9PU19XSU4zMgogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNlbmRpZiAv
LyBRX09TX1dJTjMyCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXRpbHNR
dC5oIgotI2lmIFVTRShRVEtJVCkKLSNpbmNsdWRlICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKLSNl
bmRpZgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxR
QmFzaWNUaW1lcj4KQEAgLTMxOCwxNyArMzEwLDcgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkoZmFs
c2UpCiAgICAgLCBtX2xhc3REcm9wQWN0aW9uKFF0OjpJZ25vcmVBY3Rpb24pCiB7Ci0gICAgV2Vi
Q29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7Ci0gICAgU2NyaXB0
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9s
aWN5KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1
YnN0aXR1dGVEYXRhKTsKLQotICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppbml0aWFsaXplKCk7
Ci0gICAgUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSgpOwotCi0jaWYgVVNFKFFUS0lU
KQotICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7Ci0jZW5kaWYKKyAgICBXZWJDb3Jl
Ojppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAKICAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xp
ZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50UXQo
cSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAzNDMwOWIyLi43ZjMy
MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVu
dFF0LmgiCiAjZW5kaWYKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC0y
NzgsOCArMjc5LDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogUVdlYlNl
dHRpbmdzKiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKIHsKICAgICBzdGF0aWMgUVdl
YlNldHRpbmdzKiBnbG9iYWwgPSAwOwotICAgIGlmICghZ2xvYmFsKQorICAgIGlmICghZ2xvYmFs
KSB7CisgICAgICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICAgICAgZ2xv
YmFsID0gbmV3IFFXZWJTZXR0aW5nczsKKyAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwppbmRleCBlZDgxODEzLi4yYmNiNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI0IEBACisyMDExLTExLTE4ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9n
aWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRocmVhZCB0aHJlYWRpbmcgYmFjay1lbmQg
d2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNrLWVuZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBXZWJDb3JlIGluaXRpYWxpemF0
aW9uIG91dCBvZiBRV2ViUGFnZVByaXZhdGUgaW50byBhCisgICAgICAgIHNlcGFyYXRlIGluaXRp
YWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28gbmVlZHMgdG8gYmUgY2FsbGVkCisgICAgICAg
IHdoZW4gY29uc3RydWN0aW5nIHRoZSBnbG9iYWwgUVdlYlNldHRpbmdzIHNpbmNlIGl0IGNhbiBi
ZSB1c2VkCisgICAgICAgIHByaW9yIHRvIGNyZWF0aW5nIGEgUVdlYlBhZ2UgYW5kIGl0IG5lZWRz
IGF0IGxlYXN0IHRocmVhZGluZyB0bworICAgICAgICBiZSBpbml0aWFsaXplZC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdl
UHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0
V2ViQ29yZVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplV2ViQ29y
ZVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0Lmg6IEFkZGVkLgor
CiAyMDExLTExLTE4ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtRdF0gRW5hYmxlIFdlYlNvY2tldCBoeWJpIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5hNjk1ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IDIwMTEgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnks
IEwuUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEhld2xldHQtUGFja2FyZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5pdFdlYkNvcmVRdC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU3RyYXRlZ2llc1F0LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCisjaWYgVVNFKFFUS0lUKQorI2luY2x1ZGUgIldl
YlN5c3RlbUludGVyZmFjZS5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJxd2ViZWxlbWVudF9wLmgi
CisKKyNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgaW5pdGlhbGl6
ZVdlYkNvcmVRdCgpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAg
ICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OkluaXRp
YWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOworICAgIFNjcmlwdENvbnRyb2xsZXI6
OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CisgICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGljeShXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0
YSk7CisKKyAgICBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6aW5pdGlhbGl6ZSgpOworICAgIFF0V2Vi
RWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUoKTsKKworI2lmIFVTRShRVEtJVCkKKyAgICBJbml0
V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOworI2VuZGlmCisKKyAgICBpbml0aWFsaXplZCA9IHRy
dWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5pdFdlYkNvcmVRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2Vi
Q29yZVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxYWFmNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNv
cmVRdC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBIZXdsZXR0LVBh
Y2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgSGV3bGV0dC1QYWNrYXJk
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgSW5pdFdlYkNvcmVRdF9oCisjZGVmaW5lIEluaXRXZWJDb3JlUXRfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgaW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2FwaS5wcmkgYi9Tb3VyY2UvYXBpLnByaQppbmRleCBl
ZjFkMGQxLi5hODkzOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXBpLnByaQorKysgYi9Tb3VyY2Uv
YXBpLnByaQpAQCAtNDksNiArNDksNyBAQCBTT1VSQ0VTICs9IFwKICAgICAkJFBXRC9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgXAogICAgICQkUFdEL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuY3BwIFwKICAg
ICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xp
ZW50UXQuY3BwIFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNv
cmVRdC5jcHAgXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5jcHAgXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JTZXJ2ZXJRdC5jcHAgXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAgXApAQCAtNjAsNiArNjEsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuY3BwCiAKIEhFQURFUlMgKz0gXAorICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9Jbml0V2ViQ29yZVF0LmggXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JTZXJ2ZXJRdC5oIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUXRGYWxsYmFja1dlYlBvcHVwLmggXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RdFdlYkNvbWJvQm94LmggXAo=
</data>
<flag name="review"
          id="114905"
          type_id="1"
          status="+"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="114906"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116639</attachid>
            <date>2011-11-25 14:37:07 -0800</date>
            <delta_ts>2011-11-28 08:34:34 -0800</delta_ts>
            <desc>initialize webkit_main_thread_invoker() on main thread</desc>
            <filename>native-threads.diff</filename>
            <type>text/plain</type>
            <size>27761</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxM2U1ZGU5Li5lOGMzYWM5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMjUgIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYWRkaXRpb25hbCBXZWJDb3JlU3VwcG9ydCBmaWxlcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMS0xMS0yMyAgVG9yIEFy
bmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBS
ZS1nZW5lcmF0ZSBRdFdlYktpdCBBUEkgZm9yd2FyZGluZyBoZWFkZXJzIHdoZW4gQVBJIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjOTMwY2YuLmYyMjQyMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTI1ICBBbmRyZXcgV2Fz
b24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRo
cmVhZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNr
LWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcy
MTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFRocmVhZGluZ1B0aHJlYWRzIGFuZCBUaHJlYWRpbmdXaW4gaW5zdGVhZCBvZiBUaHJlYWRpbmdR
dC4KKworICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKiB3
dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMu
aDogRHJvcCBRVGhyZWFkU3RvcmFnZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChXVEY6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3
dGYvcXQvTWFpblRocmVhZFF0LmNwcDogRHJvcCBRdCBzcGVjaWZpYyBpc01haW5UaHJlYWQoKS4K
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6IEluaXRpYWxpemUg
TWFpblRocmVhZEludm9rZXIgb24gbWFpbiB0aHJlYWQgdG8gYXZvaWQgaW5mZWN0aW5nIHNlY29u
ZGFyeSB0aHJlYWQgd2l0aCBRQWRvcHRlZFRocmVhZAorICAgICAgICAoV1RGOjpzY2hlZHVsZURp
c3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvcXQvVGhyZWFkaW5n
UXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi93dGYucHJpOgorCiAyMDExLTExLTI0ICBa
ZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1XSzJdW01hY10g
VXNlIE1hYyBwb3J0J3MgSVBDIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgVW5peCBzb2NrZXRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJr
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNw
cAppbmRleCA4MDVjNjM0Li5mNjJlZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVk
ZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0jaWYgVVNFKFBU
SFJFQURfQkFTRURfUVQpICYmICFkZWZpbmVkKFdURl9VU0VfUFRIUkVBRFMpCi0jZGVmaW5lIFdU
Rl9VU0VfUFRIUkVBRFMgMQotI2VuZGlmCi0KICNpZiBPUyhEQVJXSU4pCiAKICNpbmNsdWRlIDxt
YWNoL21hY2hfaW5pdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9N
YWluVGhyZWFkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAK
aW5kZXggOTY3YjcxNS4uZGVjN2JiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9NYWluVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5U
aHJlYWQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIHR5cGVkZWYgRGVxdWU8RnVuY3Rp
b25XaXRoQ29udGV4dD4gRnVuY3Rpb25RdWV1ZTsKIAogc3RhdGljIGJvb2wgY2FsbGJhY2tzUGF1
c2VkOyAvLyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyBvbmx5IGFjY2Vzc2VkIGZyb20gbWFpbiB0
aHJlYWQuCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFFUKQorI2lmICFQTEFURk9S
TShNQUMpCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsKICNl
bmRpZgogCkBAIC05Niw5ICs5Niw3IEBAIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWQoKQogICAg
ICAgICByZXR1cm47CiAgICAgaW5pdGlhbGl6ZWRNYWluVGhyZWFkID0gdHJ1ZTsKIAotI2lmICFQ
TEFURk9STShRVCkKICAgICBtYWluVGhyZWFkSWRlbnRpZmllciA9IGN1cnJlbnRUaHJlYWQoKTsK
LSNlbmRpZgogCiAgICAgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleCgpOwogICAgIGluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKTsKQEAgLTIzMSw3ICsyMjksNyBAQCB2b2lkIHNldE1h
aW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpCiAgICAgICAgIHNjaGVkdWxlRGlz
cGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKTsKIH0KIAotI2lmICFQTEFURk9STShNQUMpICYm
ICFQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oTUFDKQogYm9vbCBpc01haW5UaHJlYWQoKQog
ewogICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkgPT0gbWFpblRocmVhZElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggODlmYTkxNC4uYmUwYzY0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaApAQCAtNDkwLDEwICs0OTAsNiBAQAogI2Rl
ZmluZSBXVEZfVVNFX01FUlNFTk5FX1RXSVNURVJfMTk5MzcgMQogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShRVCkgJiYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKLSNkZWZpbmUgV1RGX1VTRV9QVEhS
RUFEX0JBU0VEX1FUIDEKLSNlbmRpZgotCiAvKiBPbiBXaW5kb3dzLCB1c2UgUXVlcnlQZXJmb3Jt
YW5jZUNvdW50ZXIgYnkgZGVmYXVsdCAqLwogI2lmIE9TKFdJTkRPV1MpCiAjZGVmaW5lIFdURl9V
U0VfUVVFUllfUEVSRk9STUFOQ0VfQ09VTlRFUiAgMQpAQCAtNjQ1LDYgKzY0MSw5IEBACiAjZGVm
aW5lIFdURl9VU0VfUFRIUkVBRFMgMQogI2RlZmluZSBIQVZFX1BUSFJFQURfUldMT0NLIDEKICNl
bmRpZgorI2VsaWYgUExBVEZPUk0oUVQpICYmIE9TKFVOSVgpCisjZGVmaW5lIFdURl9VU0VfUFRI
UkVBRFMgMQorI2RlZmluZSBIQVZFX1BUSFJFQURfUldMT0NLIDEKICNlbmRpZgogCiAjaWYgIWRl
ZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRTcGVjaWZpYy5oCmluZGV4IDk0MDNkNzEuLjRkN2M4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKQEAgLTQ1LDggKzQ1LDYgQEAKIAogI2lmIFVTRShQ
VEhSRUFEUykKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jZWxpZiBQTEFURk9STShRVCkKLSNpbmNs
dWRlIDxRVGhyZWFkU3RvcmFnZT4KICNlbGlmIFBMQVRGT1JNKEdUSykKICNpbmNsdWRlIDxnbGli
Lmg+CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtOTAsOSArODgsNiBAQCBwcml2YXRlOgogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhKTsKICAgICBwdWJsaWM6CiAgICAgICAgIERhdGEo
VCogdmFsdWUsIFRocmVhZFNwZWNpZmljPFQ+KiBvd25lcikgOiB2YWx1ZSh2YWx1ZSksIG93bmVy
KG93bmVyKSB7fQotI2lmIFBMQVRGT1JNKFFUKQotICAgICAgICB+RGF0YSgpIHsgb3duZXItPmRl
c3Ryb3kodGhpcyk7IH0KLSNlbmRpZgogCiAgICAgICAgIFQqIHZhbHVlOwogICAgICAgICBUaHJl
YWRTcGVjaWZpYzxUPiogb3duZXI7CkBAIC0xMDQsOCArOTksNiBAQCBwcml2YXRlOgogCiAjaWYg
VVNFKFBUSFJFQURTKQogICAgIHB0aHJlYWRfa2V5X3QgbV9rZXk7Ci0jZWxpZiBQTEFURk9STShR
VCkKLSAgICBRVGhyZWFkU3RvcmFnZTxEYXRhKj4gbV9rZXk7CiAjZWxpZiBQTEFURk9STShHVEsp
CiAgICAgR1N0YXRpY1ByaXZhdGUgbV9rZXk7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtMTM2LDI4
ICsxMjksNiBAQCBpbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxUPjo6c2V0KFQqIHB0cikKICAg
ICBwdGhyZWFkX3NldHNwZWNpZmljKG1fa2V5LCBuZXcgRGF0YShwdHIsIHRoaXMpKTsKIH0KIAot
I2VsaWYgUExBVEZPUk0oUVQpCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVGhyZWFk
U3BlY2lmaWM8VD46OlRocmVhZFNwZWNpZmljKCkKLXsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4KLWlubGluZSBUKiBUaHJlYWRTcGVjaWZpYzxUPjo6Z2V0KCkKLXsKLSAgICBEYXRhKiBkYXRh
ID0gc3RhdGljX2Nhc3Q8RGF0YSo+KG1fa2V5LmxvY2FsRGF0YSgpKTsKLSAgICByZXR1cm4gZGF0
YSA/IGRhdGEtPnZhbHVlIDogMDsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2
b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpzZXQoVCogcHRyKQotewotICAgIEFTU0VSVCghZ2V0KCkp
OwotICAgIERhdGEqIGRhdGEgPSBuZXcgRGF0YShwdHIsIHRoaXMpOwotICAgIG1fa2V5LnNldExv
Y2FsRGF0YShkYXRhKTsKLX0KLQogI2VsaWYgUExBVEZPUk0oR1RLKQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpAQCAtMjUwLDE4ICsyMjEsMTIgQEAgaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8
VD46OmRlc3Ryb3kodm9pZCogcHRyKQogICAgIC8vIFNlZSBjb21tZW50IGFzIGFib3ZlCiAgICAg
Z19zdGF0aWNfcHJpdmF0ZV9zZXQoJmRhdGEtPm93bmVyLT5tX2tleSwgZGF0YSwgMCk7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShRVCkKLSAgICAvLyBTZWUgY29tbWVudCBhcyBhYm92ZQotICAgIGRh
dGEtPm93bmVyLT5tX2tleS5zZXRMb2NhbERhdGEoZGF0YSk7Ci0jZW5kaWYKIAogICAgIGRhdGEt
PnZhbHVlLT5+VCgpOwogICAgIGZhc3RGcmVlKGRhdGEtPnZhbHVlKTsKIAogI2lmIFVTRShQVEhS
RUFEUykKICAgICBwdGhyZWFkX3NldHNwZWNpZmljKGRhdGEtPm93bmVyLT5tX2tleSwgMCk7Ci0j
ZWxpZiBQTEFURk9STShRVCkKLSAgICAvLyBEbyBub3RoaW5nIGhlcmUKICNlbGlmIFBMQVRGT1JN
KEdUSykKICAgICBnX3N0YXRpY19wcml2YXRlX3NldCgmZGF0YS0+b3duZXItPm1fa2V5LCAwLCAw
KTsKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0yNzAsOSArMjM1LDcgQEAgaW5saW5lIHZvaWQgVGhy
ZWFkU3BlY2lmaWM8VD46OmRlc3Ryb3kodm9pZCogcHRyKQogI2Vycm9yIFRocmVhZFNwZWNpZmlj
IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgdGhpcyBwbGF0Zm9ybS4KICNlbmRpZgogCi0jaWYgIVBM
QVRGT1JNKFFUKQogICAgIGRlbGV0ZSBkYXRhOwotI2VuZGlmCiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZl
cy5oCmluZGV4IDlmMjYzYWUuLjFiZWQ1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCkBAIC00NiwxNCArNDYsNiBAQAogI2luY2x1ZGUg
PHB0aHJlYWQuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8cWdsb2Jh
bC5oPgotUVRfQkVHSU5fTkFNRVNQQUNFCi1jbGFzcyBRTXV0ZXg7Ci1jbGFzcyBRV2FpdENvbmRp
dGlvbjsKLVFUX0VORF9OQU1FU1BBQ0UKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1RGIHsKIAogI2lm
IFVTRShQVEhSRUFEUykKQEAgLTY0LDEwICs1Niw2IEBAIHR5cGVkZWYgcHRocmVhZF9yd2xvY2tf
dCBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtUmVhZFdyaXRl
TG9jazsKICNlbmRpZgogdHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsK
LSNlbGlmIFBMQVRGT1JNKFFUKQotdHlwZWRlZiBRVF9QUkVQRU5EX05BTUVTUEFDRShRTXV0ZXgp
KiBQbGF0Zm9ybU11dGV4OwotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7IC8v
IEZJWE1FOiBJbXBsZW1lbnQuCi10eXBlZGVmIFFUX1BSRVBFTkRfTkFNRVNQQUNFKFFXYWl0Q29u
ZGl0aW9uKSogUGxhdGZvcm1Db25kaXRpb247CiAjZWxpZiBPUyhXSU5ET1dTKQogc3RydWN0IFBs
YXRmb3JtTXV0ZXggewogICAgIENSSVRJQ0FMX1NFQ1RJT04gbV9pbnRlcm5hbE11dGV4OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWluVGhyZWFkUXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWluVGhyZWFkUXQuY3BwCmluZGV4IGI0MmMz
YWYuLjYwNmE3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvTWFp
blRocmVhZFF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L01haW5UaHJl
YWRRdC5jcHAKQEAgLTY1LDIxICs2NSwxMiBAQCBRX0dMT0JBTF9TVEFUSUMoTWFpblRocmVhZElu
dm9rZXIsIHdlYmtpdF9tYWluX3RocmVhZF9pbnZva2VyKQogCiB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkUGxhdGZvcm0oKQogeworICAgIHdlYmtpdF9tYWluX3RocmVhZF9pbnZva2VyKCk7CiB9
CiAKIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCiB7Ci0gICAg
UU9iamVjdCogaW52b2tlciA9IHdlYmtpdF9tYWluX3RocmVhZF9pbnZva2VyKCk7Ci0gICAgaWYg
KGludm9rZXItPnRocmVhZCgpICE9IFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnRocmVh
ZCgpKSB7Ci0gICAgICAgIEFTU0VSVChpbnZva2VyLT50aHJlYWQoKSA9PSBRVGhyZWFkOjpjdXJy
ZW50VGhyZWFkKCkpOwotICAgICAgICBpbnZva2VyLT5tb3ZlVG9UaHJlYWQoUUNvcmVBcHBsaWNh
dGlvbjo6aW5zdGFuY2UoKS0+dGhyZWFkKCkpOwotICAgIH0KLSAgICBRQ29yZUFwcGxpY2F0aW9u
Ojpwb3N0RXZlbnQoaW52b2tlciwgbmV3IFFFdmVudChzdGF0aWNfY2FzdDxRRXZlbnQ6OlR5cGU+
KHNfbWFpblRocmVhZEludm9rZXJFdmVudFR5cGUpKSk7Ci19Ci0KLWJvb2wgaXNNYWluVGhyZWFk
KCkKLXsKLSAgICByZXR1cm4gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IFFDb3JlQXBwbGlj
YXRpb246Omluc3RhbmNlKCktPnRocmVhZCgpOworICAgIFFDb3JlQXBwbGljYXRpb246OnBvc3RF
dmVudCh3ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpLCBuZXcgUUV2ZW50KHN0YXRpY19jYXN0
PFFFdmVudDo6VHlwZT4oc19tYWluVGhyZWFkSW52b2tlckV2ZW50VHlwZSkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0
L1RocmVhZGluZ1F0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5n
UXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxYjdjLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvVGhyZWFkaW5nUXQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3IEp1c3RpbiBI
YXlnb29kIChqaGF5Z29vZEByZWFrdGl4LmNvbSkKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlRocmVhZGluZy5oIgotCi0jaW5jbHVkZSAiRGF0ZU1hdGguaCIKLSNpbmNsdWRlICJkdG9h
LmgiCi0jaW5jbHVkZSAiQ3VycmVudFRpbWUuaCIKLSNpbmNsdWRlICJIYXNoTWFwLmgiCi0jaW5j
bHVkZSAiTWFpblRocmVhZC5oIgotI2luY2x1ZGUgIlJhbmRvbU51bWJlclNlZWQuaCIKLSNpbmNs
dWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgotCi0jaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4K
LSNpbmNsdWRlIDxRTXV0ZXg+Ci0jaW5jbHVkZSA8UVRocmVhZD4KLSNpbmNsdWRlIDxRV2FpdENv
bmRpdGlvbj4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLWNsYXNzIFRocmVhZFByaXZhdGUgOiBwdWJs
aWMgUVRocmVhZCB7Ci1wdWJsaWM6Ci0gICAgVGhyZWFkUHJpdmF0ZShUaHJlYWRGdW5jdGlvbiBl
bnRyeVBvaW50LCB2b2lkKiBkYXRhKTsKLSAgICB2b2lkIHJ1bigpOwotICAgIHZvaWQqIGdldFJl
dHVyblZhbHVlKCkgeyByZXR1cm4gbV9yZXR1cm5WYWx1ZTsgfQotcHJpdmF0ZToKLSAgICB2b2lk
KiBtX2RhdGE7Ci0gICAgVGhyZWFkRnVuY3Rpb24gbV9lbnRyeVBvaW50OwotICAgIHZvaWQqIG1f
cmV0dXJuVmFsdWU7Ci19OwotCi1UaHJlYWRQcml2YXRlOjpUaHJlYWRQcml2YXRlKFRocmVhZEZ1
bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEpIAotICAgIDogbV9kYXRhKGRhdGEpCi0gICAg
LCBtX2VudHJ5UG9pbnQoZW50cnlQb2ludCkKLSAgICAsIG1fcmV0dXJuVmFsdWUoMCkKLXsKLX0K
LQotdm9pZCBUaHJlYWRQcml2YXRlOjpydW4oKQotewotICAgIG1fcmV0dXJuVmFsdWUgPSBtX2Vu
dHJ5UG9pbnQobV9kYXRhKTsKLX0KLQotY2xhc3MgVGhyZWFkTW9uaXRvciA6IHB1YmxpYyBRT2Jq
ZWN0IHsKLSAgICBRX09CSkVDVAotcHVibGljOgotICAgIHN0YXRpYyBUaHJlYWRNb25pdG9yICog
aW5zdGFuY2UoKQotICAgIHsKLSAgICAgICAgc3RhdGljIFRocmVhZE1vbml0b3IgKmluc3RhbmNl
ID0gbmV3IFRocmVhZE1vbml0b3IoKTsKLSAgICAgICAgcmV0dXJuIGluc3RhbmNlOwotICAgIH0K
LQotcHVibGljIFFfU0xPVFM6Ci0gICAgdm9pZCB0aHJlYWRGaW5pc2hlZCgpCi0gICAgewotICAg
ICAgICBzZW5kZXIoKS0+ZGVsZXRlTGF0ZXIoKTsKLSAgICB9Ci19OwotCi1zdGF0aWMgTXV0ZXgq
IGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4OwotCi1zdGF0aWMgTXV0ZXgmIHRocmVh
ZE1hcE11dGV4KCkKLXsKLSAgICBzdGF0aWMgTXV0ZXggbXV0ZXg7Ci0gICAgcmV0dXJuIG11dGV4
OwotfQotCi1zdGF0aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBRVGhyZWFkKj4mIHRocmVh
ZE1hcCgpCi17Ci0gICAgc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVhZCo+
IG1hcDsKLSAgICByZXR1cm4gbWFwOwotfQotCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVu
dGlmaWVyQnlRdGhyZWFkSGFuZGxlKFFUaHJlYWQqJiB0aHJlYWQpCi17Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwotCi0gICAgSGFzaE1hcDxUaHJlYWRJZGVudGlm
aWVyLCBRVGhyZWFkKj46Oml0ZXJhdG9yIGkgPSB0aHJlYWRNYXAoKS5iZWdpbigpOwotICAgIGZv
ciAoOyBpICE9IHRocmVhZE1hcCgpLmVuZCgpOyArK2kpIHsKLSAgICAgICAgaWYgKGktPnNlY29u
ZCA9PSB0aHJlYWQpCi0gICAgICAgICAgICByZXR1cm4gaS0+Zmlyc3Q7Ci0gICAgfQotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBUaHJlYWRJZGVudGlmaWVyIGVzdGFibGlzaElkZW50aWZp
ZXJGb3JUaHJlYWQoUVRocmVhZComIHRocmVhZCkKLXsKLSAgICBBU1NFUlQoIWlkZW50aWZpZXJC
eVF0aHJlYWRIYW5kbGUodGhyZWFkKSk7Ci0KLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFk
TWFwTXV0ZXgoKSk7Ci0KLSAgICBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBpZGVudGlmaWVyQ291
bnQgPSAxOwotCi0gICAgdGhyZWFkTWFwKCkuYWRkKGlkZW50aWZpZXJDb3VudCwgdGhyZWFkKTsK
LQotICAgIHJldHVybiBpZGVudGlmaWVyQ291bnQrKzsKLX0KLQotc3RhdGljIHZvaWQgY2xlYXJU
aHJlYWRGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIgaWQpCi17Ci0gICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwotCi0gICAgQVNTRVJUKHRocmVhZE1hcCgpLmNv
bnRhaW5zKGlkKSk7Ci0KLSAgICB0aHJlYWRNYXAoKS5yZW1vdmUoaWQpOwotfQotCi1zdGF0aWMg
UVRocmVhZCogdGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQotewotICAg
IE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIHJldHVybiB0aHJl
YWRNYXAoKS5nZXQoaWQpOwotfQotCi12b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQotewotICAg
IGlmICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsKLSAgICAgICAgLy8gU3Ry
aW5nSW1wbDo6ZW1wdHkoKSBkb2VzIG5vdCBjb25zdHJ1Y3QgaXRzIHN0YXRpYyBzdHJpbmcgaW4g
YSB0aHJlYWRzYWZlIGZhc2hpb24sCi0gICAgICAgIC8vIHNvIGVuc3VyZSBpdCBoYXMgYmVlbiBp
bml0aWFsaXplZCBmcm9tIGhlcmUuCi0gICAgICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7Ci0gICAg
ICAgIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4ID0gbmV3IE11dGV4OwotICAgICAg
ICB0aHJlYWRNYXBNdXRleCgpOwotICAgICAgICBpbml0aWFsaXplUmFuZG9tTnVtYmVyR2VuZXJh
dG9yKCk7Ci0gICAgICAgIHd0ZlRocmVhZERhdGEoKTsKLSAgICAgICAgc19kdG9hUDVNdXRleCA9
IG5ldyBNdXRleDsKLSAgICAgICAgaW5pdGlhbGl6ZURhdGVzKCk7Ci0gICAgfQotfQotCi12b2lk
IGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAgQVNTRVJUKGF0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KTsKLSAgICBhdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWNNdXRleC0+bG9jaygpOwotfQotCi12b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFs
aXplZFN0YXRpY011dGV4KCkKLXsKLSAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRl
eC0+dW5sb2NrKCk7Ci19Ci0KLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwo
VGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciopCi17Ci0g
ICAgVGhyZWFkUHJpdmF0ZSogdGhyZWFkID0gbmV3IFRocmVhZFByaXZhdGUoZW50cnlQb2ludCwg
ZGF0YSk7Ci0gICAgaWYgKCF0aHJlYWQpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIHRocmVhZCBhdCBlbnRyeSBwb2ludCAlcCB3aXRoIGRhdGEgJXAiLCBlbnRyeVBvaW50
LCBkYXRhKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUU9iamVjdDo6Y29ubmVj
dCh0aHJlYWQsIFNJR05BTChmaW5pc2hlZCgpKSwgVGhyZWFkTW9uaXRvcjo6aW5zdGFuY2UoKSwg
U0xPVCh0aHJlYWRGaW5pc2hlZCgpKSk7Ci0KLSAgICB0aHJlYWQtPnN0YXJ0KCk7Ci0KLSAgICBR
VGhyZWFkKiB0aHJlYWRSZWYgPSBzdGF0aWNfY2FzdDxRVGhyZWFkKj4odGhyZWFkKTsKLQotICAg
IHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkKHRocmVhZFJlZik7Ci19Ci0KLXZv
aWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKikKLXsKLX0KLQot
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZv
aWQqKiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKHRocmVhZElEKTsKLQotICAgIFFUaHJlYWQqIHRo
cmVhZCA9IHRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQpOwotCi0gICAgYm9vbCByZXMgPSB0
aHJlYWQtPndhaXQoKTsKLQotICAgIGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcih0aHJlYWRJRCk7
Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgKnJlc3VsdCA9IHN0YXRpY19jYXN0PFRocmVhZFBy
aXZhdGUqPih0aHJlYWQpLT5nZXRSZXR1cm5WYWx1ZSgpOwotCi0gICAgcmV0dXJuICFyZXM7Ci19
Ci0KLXZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQpCi17Ci0gICAg
QVNTRVJUKHRocmVhZElEKTsKLSAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQp
OwotfQotCi1UaHJlYWRJZGVudGlmaWVyIGN1cnJlbnRUaHJlYWQoKQotewotICAgIFFUaHJlYWQq
IGN1cnJlbnRUaHJlYWQgPSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCk7Ci0gICAgaWYgKFRocmVh
ZElkZW50aWZpZXIgaWQgPSBpZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKGN1cnJlbnRUaHJlYWQp
KQotICAgICAgICByZXR1cm4gaWQ7Ci0gICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JU
aHJlYWQoY3VycmVudFRocmVhZCk7Ci19Ci0KLXZvaWQgeWllbGQoKQotewotICAgIFFUaHJlYWQ6
OnlpZWxkQ3VycmVudFRocmVhZCgpOwotfQotCi1NdXRleDo6TXV0ZXgoKQotICAgIDogbV9tdXRl
eChuZXcgUU11dGV4KCkpCi17Ci19Ci0KLU11dGV4Ojp+TXV0ZXgoKQotewotICAgIGRlbGV0ZSBt
X211dGV4OwotfQotCi12b2lkIE11dGV4Ojpsb2NrKCkKLXsKLSAgICBtX211dGV4LT5sb2NrKCk7
Ci19Ci0KLWJvb2wgTXV0ZXg6OnRyeUxvY2soKQotewotICAgIHJldHVybiBtX211dGV4LT50cnlM
b2NrKCk7Ci19Ci0KLXZvaWQgTXV0ZXg6OnVubG9jaygpCi17Ci0gICAgbV9tdXRleC0+dW5sb2Nr
KCk7Ci19Ci0KLVRocmVhZENvbmRpdGlvbjo6VGhyZWFkQ29uZGl0aW9uKCkKLSAgICA6IG1fY29u
ZGl0aW9uKG5ldyBRV2FpdENvbmRpdGlvbigpKQotewotfQotCi1UaHJlYWRDb25kaXRpb246On5U
aHJlYWRDb25kaXRpb24oKQotewotICAgIGRlbGV0ZSBtX2NvbmRpdGlvbjsKLX0KLQotdm9pZCBU
aHJlYWRDb25kaXRpb246OndhaXQoTXV0ZXgmIG11dGV4KQotewotICAgIG1fY29uZGl0aW9uLT53
YWl0KG11dGV4LmltcGwoKSk7Ci19Ci0KLWJvb2wgVGhyZWFkQ29uZGl0aW9uOjp0aW1lZFdhaXQo
TXV0ZXgmIG11dGV4LCBkb3VibGUgYWJzb2x1dGVUaW1lKQotewotICAgIGRvdWJsZSBjdXJyZW50
VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKLQotICAgIC8vIFRpbWUgaXMgaW4gdGhlIHBhc3Qg
LSByZXR1cm4gaW1tZWRpYXRlbHkuCi0gICAgaWYgKGFic29sdXRlVGltZSA8IGN1cnJlbnRUaW1l
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBUaW1lIGlzIHRvbyBmYXIgaW4gdGhl
IGZ1dHVyZSAoYW5kIHdvdWxkIG92ZXJmbG93IHVuc2lnbmVkIGxvbmcpIC0gd2FpdCBmb3JldmVy
LgotICAgIGlmIChhYnNvbHV0ZVRpbWUgLSBjdXJyZW50VGltZSA+IHN0YXRpY19jYXN0PGRvdWJs
ZT4oSU5UX01BWCkgLyAxMDAwLjApIHsKLSAgICAgICAgd2FpdChtdXRleCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIGRvdWJsZSBpbnRlcnZhbE1pbGxpc2Vjb25kcyA9IChh
YnNvbHV0ZVRpbWUgLSBjdXJyZW50VGltZSkgKiAxMDAwLjA7Ci0gICAgcmV0dXJuIG1fY29uZGl0
aW9uLT53YWl0KG11dGV4LmltcGwoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW50ZXJ2
YWxNaWxsaXNlY29uZHMpKTsKLX0KLQotdm9pZCBUaHJlYWRDb25kaXRpb246OnNpZ25hbCgpCi17
Ci0gICAgbV9jb25kaXRpb24tPndha2VPbmUoKTsKLX0KLQotdm9pZCBUaHJlYWRDb25kaXRpb246
OmJyb2FkY2FzdCgpCi17Ci0gICAgbV9jb25kaXRpb24tPndha2VBbGwoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jaW5jbHVkZSAiVGhyZWFkaW5nUXQubW9jIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJpIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi93dGYucHJpCmluZGV4IGQ1MjJkMGEuLmM5ZWFhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3d0Zi5wcmkKQEAgLTEzOSw2ICsxMzksOCBAQCBIRUFERVJTICs9IFwKICAgICB3dGYvVk1U
YWdzLmggXAogICAgIHd0Zi9XVEZUaHJlYWREYXRhLmgKIAordW5peDogSEVBREVSUyArPSB3dGYv
VGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5oCisKIFNPVVJDRVMgKz0gXAogICAgIHd0Zi9B
c3NlcnRpb25zLmNwcCBcCiAgICAgd3RmL0JpdFZlY3Rvci5jcHAgXApAQCAtMTY3LDcgKzE2OSw2
IEBAIFNPVVJDRVMgKz0gXAogICAgIHd0Zi9PU1JhbmRvbVNvdXJjZS5jcHAgXAogICAgIHd0Zi9x
dC9NYWluVGhyZWFkUXQuY3BwIFwKICAgICB3dGYvcXQvU3RyaW5nUXQuY3BwIFwKLSAgICB3dGYv
cXQvVGhyZWFkaW5nUXQuY3BwIFwKICAgICB3dGYvUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBc
CiAgICAgd3RmL1BhZ2VCbG9jay5jcHAgXAogICAgIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNw
cCBcCkBAIC0xODksNSArMTkwLDEzIEBAIFNPVVJDRVMgKz0gXAogICAgIHd0Zi91bmljb2RlL2lj
dS9Db2xsYXRvcklDVS5jcHAgXAogICAgIHd0Zi91bmljb2RlL1VURjguY3BwCiAKLXVuaXg6IFNP
VVJDRVMgKz0gd3RmL09TQWxsb2NhdG9yUG9zaXguY3BwCi13aW4qfHdpbmNlKjogU09VUkNFUyAr
PSB3dGYvT1NBbGxvY2F0b3JXaW4uY3BwCisKK3VuaXg6IFNPVVJDRVMgKz0gXAorICAgIHd0Zi9P
U0FsbG9jYXRvclBvc2l4LmNwcCBcCisgICAgd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVh
ZHMuY3BwIFwKKyAgICB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisKK3dpbip8d2luY2UqOiBT
T1VSQ0VTICs9IFwKKyAgICB3dGYvT1NBbGxvY2F0b3JXaW4uY3BwIFwKKyAgICB3dGYvVGhyZWFk
U3BlY2lmaWNXaW4uY3BwIFwKKyAgICB3dGYvVGhyZWFkaW5nV2luLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDc5N2IxYmYuLmVmODAyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMS0y
NSAgQW5kcmV3IFdhc29uICA8cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIFF0IFFUaHJlYWQgdGhyZWFkaW5nIGJhY2stZW5kIHdpdGggcHRocmVhZC9XaW4zMiB0
aHJlYWRpbmcgYmFjay1lbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MjE1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5lZWQgdG8gaW5jbHVkZSBxZ2xvYmFsLmggc2luY2UgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oIG5vIGxvbmdlciBkb2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JraW5nQ29udGV4dC5oOgorCiAyMDExLTExLTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDTWFrZV0gQnVpbGQgZml4IGZvciBOT1QgRU5BQkxF
X1dFQl9TT0NLRVRTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGFhMWViYjkuLmYyYjEwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8cWdsb2Jh
bC5oPgogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwogY2xhc3MgUU5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGFmYzJjNjAuLjJl
MWJmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgogCi0jaW5jbHVkZSAicXdl
YmVsZW1lbnRfcC5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXdlYmZyYW1l
LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgpAQCAtNzYsMTIgKzc1LDEyIEBACiAjaW5jbHVk
ZSAiSGFzaE1hcC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnRRdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JTZXJ2ZXJRdC5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRT
dHJpbmdzLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKQEAgLTkzLDcgKzkyLDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVRv
dWNoRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgpAQCAtMTA3LDIwICsxMDUsMTQgQEAKICNpbmNsdWRlICJTY2hlbWVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2lmIGRlZmluZWQgUV9PU19XSU4zMgogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNlbmRp
ZiAvLyBRX09TX1dJTjMyCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVXRp
bHNRdC5oIgotI2lmIFVTRShRVEtJVCkKLSNpbmNsdWRlICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIK
LSNlbmRpZgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhy
ZWFkLmgiCi0jaW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRl
IDxRQmFzaWNUaW1lcj4KQEAgLTMxOCwxNyArMzEwLDcgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2Vi
UGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHko
ZmFsc2UpCiAgICAgLCBtX2xhc3REcm9wQWN0aW9uKFF0OjpJZ25vcmVBY3Rpb24pCiB7Ci0gICAg
V2ViQ29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7Ci0gICAgU2Ny
aXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2Fk
UG9saWN5KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFu
ZFN1YnN0aXR1dGVEYXRhKTsKLQotICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppbml0aWFsaXpl
KCk7Ci0gICAgUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSgpOwotCi0jaWYgVVNFKFFU
S0lUKQotICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7Ci0jZW5kaWYKKyAgICBXZWJD
b3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAKICAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdl
Q2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgQ2hyb21lQ2xpZW50
UXQocSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAzNDMwOWIyLi43
ZjMyMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNs
aWVudFF0LmgiCiAjZW5kaWYKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC0yNzgsOCArMjc5LDEwIEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogUVdl
YlNldHRpbmdzKiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKIHsKICAgICBzdGF0aWMg
UVdlYlNldHRpbmdzKiBnbG9iYWwgPSAwOwotICAgIGlmICghZ2xvYmFsKQorICAgIGlmICghZ2xv
YmFsKSB7CisgICAgICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICAgICAg
Z2xvYmFsID0gbmV3IFFXZWJTZXR0aW5nczsKKyAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCA1ODVkY2Q2Li4xMmJiYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDExLTExLTI1ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3Rh
bG9naWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRocmVhZCB0aHJlYWRpbmcgYmFjay1l
bmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNrLWVuZHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTU1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCBXZWJDb3JlIGluaXRpYWxp
emF0aW9uIG91dCBvZiBRV2ViUGFnZVByaXZhdGUgaW50byBhCisgICAgICAgIHNlcGFyYXRlIGlu
aXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28gbmVlZHMgdG8gYmUgY2FsbGVkCisgICAg
ICAgIHdoZW4gY29uc3RydWN0aW5nIHRoZSBnbG9iYWwgUVdlYlNldHRpbmdzIHNpbmNlIGl0IGNh
biBiZSB1c2VkCisgICAgICAgIHByaW9yIHRvIGNyZWF0aW5nIGEgUVdlYlBhZ2UgYW5kIGl0IG5l
ZWRzIGF0IGxlYXN0IHRocmVhZGluZyB0bworICAgICAgICBiZSBpbml0aWFsaXplZC4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQ
YWdlUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bml0V2ViQ29yZVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplV2Vi
Q29yZVF0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0Lmg6IEFkZGVk
LgorCiAyMDExLTExLTIyICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQgZnJv
bSB0aGUgcHJvdG9jb2wuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luaXRXZWJDb3JlUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bml0V2ViQ29yZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjk1
ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bml0V2ViQ29yZVF0LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEg
SGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEhld2xl
dHQtUGFja2FyZCBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5pdFdlYkNvcmVRdC5o
IgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc1F0
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCisjaWYgVVNFKFFUS0lUKQorI2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5oIgor
I2VuZGlmCisKKyNpbmNsdWRlICJxd2ViZWxlbWVudF9wLmgiCisKKyNpbmNsdWRlIDxydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgaW5pdGlhbGl6ZVdlYkNvcmVRdCgpCit7CisgICAg
c3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJ
Zk5lY2Vzc2FyeSgpOworICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKKyAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CisgICAgV2ViQ29yZTo6U2VjdXJp
dHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGljeShXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6QWxs
b3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CisKKyAgICBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6aW5pdGlhbGl6ZSgpOworICAgIFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRp
YWxpemUoKTsKKworI2lmIFVTRShRVEtJVCkKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFj
ZSgpOworI2VuZGlmCisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYxYWFmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29t
cGFueSwgTC5QLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgSGV3bGV0dC1QYWNrYXJkIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5pdFdlYkNvcmVR
dF9oCisjZGVmaW5lIEluaXRXZWJDb3JlUXRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Zv
aWQgaW5pdGlhbGl6ZVdlYkNvcmVRdCgpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL2FwaS5wcmkgYi9Tb3VyY2UvYXBpLnByaQppbmRleCAzNGM2NWIyLi5kMjhiNjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYXBpLnByaQorKysgYi9Tb3VyY2UvYXBpLnByaQpAQCAtNTUsNiArNTUs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5jcHAgXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQuY3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvR2VvbG9jYXRpb25QZXJtaXNzaW9uQ2xpZW50UXQuY3BwIFwKKyAgICAkJFBX
RC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAgXAogICAgICQkUFdE
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgXAogICAgICQk
UFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJRdC5jcHAgXAogICAg
ICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdC5jcHAgXApAQCAtNjYsNiArNjcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAkJFBXRC9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCiAKIEhFQURFUlMg
Kz0gXAorICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0Lmgg
XAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JTZXJ2ZXJRdC5o
IFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRGYWxsYmFja1dlYlBvcHVw
LmggXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFdlYkNvbWJvQm94Lmgg
XAo=
</data>
<flag name="review"
          id="115853"
          type_id="1"
          status="-"
          setter="hausmann"
    />
    <flag name="commit-queue"
          id="115854"
          type_id="3"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116764</attachid>
            <date>2011-11-28 08:34:34 -0800</date>
            <delta_ts>2011-11-28 09:47:00 -0800</delta_ts>
            <desc>initialize WebCore from public static QWebSettings methods</desc>
            <filename>native-threads.diff</filename>
            <type>text/plain</type>
            <size>33471</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxM2U1ZGU5Li5kM2IxMmMy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMjggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYWRkaXRpb25hbCBXZWJDb3JlU3VwcG9ydCBmaWxlcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMS0xMS0yMyAgVG9yIEFy
bmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBS
ZS1nZW5lcmF0ZSBRdFdlYktpdCBBUEkgZm9yd2FyZGluZyBoZWFkZXJzIHdoZW4gQVBJIGNoYW5n
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJjOTMwY2YuLmNlNTNhZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTI4ICBBbmRyZXcgV2Fz
b24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgorCisgICAgICAgIFJlcGxhY2UgUXQgUVRo
cmVhZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhyZWFkL1dpbjMyIHRocmVhZGluZyBiYWNr
LWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcy
MTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFRocmVhZGluZ1B0aHJlYWRzIGFuZCBUaHJlYWRpbmdXaW4gaW5zdGVhZCBvZiBUaHJlYWRpbmdR
dC4KKworICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKiB3
dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKToK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMu
aDogRHJvcCBRVGhyZWFkU3RvcmFnZSByZWxhdGVkIGNvZGUuCisgICAgICAgIChXVEY6Ojo6ZGVz
dHJveSk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3
dGYvcXQvTWFpblRocmVhZFF0LmNwcDogRHJvcCBRdCBzcGVjaWZpYyBpc01haW5UaHJlYWQoKS4K
KyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6IEluaXRpYWxpemUg
TWFpblRocmVhZEludm9rZXIgb24gbWFpbiB0aHJlYWQgdG8gYXZvaWQgaW5mZWN0aW5nIHNlY29u
ZGFyeSB0aHJlYWQgd2l0aCBRQWRvcHRlZFRocmVhZC4KKyAgICAgICAgKFdURjo6c2NoZWR1bGVE
aXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCk6CisgICAgICAgICogd3RmL3F0L1RocmVhZGlu
Z1F0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvd3RmLnByaToKKwogMjAxMS0xMS0yNCAg
WmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdV0syXVtNYWNd
IFVzZSBNYWMgcG9ydCdzIElQQyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mIFVuaXggc29ja2V0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFy
a2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHAKaW5kZXggODA1YzYzNC4uZjYyZWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1
ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIFVTRShQ
VEhSRUFEX0JBU0VEX1FUKSAmJiAhZGVmaW5lZChXVEZfVVNFX1BUSFJFQURTKQotI2RlZmluZSBX
VEZfVVNFX1BUSFJFQURTIDEKLSNlbmRpZgotCiAjaWYgT1MoREFSV0lOKQogCiAjaW5jbHVkZSA8
bWFjaC9tYWNoX2luaXQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
TWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3Bw
CmluZGV4IDk2N2I3MTUuLmRlYzdiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWlu
VGhyZWFkLmNwcApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiB0eXBlZGVmIERlcXVlPEZ1bmN0
aW9uV2l0aENvbnRleHQ+IEZ1bmN0aW9uUXVldWU7CiAKIHN0YXRpYyBib29sIGNhbGxiYWNrc1Bh
dXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBhY2Nlc3NlZCBmcm9tIG1haW4g
dGhyZWFkLgotI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShRVCkKKyNpZiAhUExBVEZP
Uk0oTUFDKQogc3RhdGljIFRocmVhZElkZW50aWZpZXIgbWFpblRocmVhZElkZW50aWZpZXI7CiAj
ZW5kaWYKIApAQCAtOTYsOSArOTYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIGluaXRpYWxpemVkTWFpblRocmVhZCA9IHRydWU7CiAKLSNpZiAh
UExBVEZPUk0oUVQpCiAgICAgbWFpblRocmVhZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7
Ci0jZW5kaWYKIAogICAgIG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0ZXgoKTsKICAgICBpbml0
aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7CkBAIC0yMzEsNyArMjI5LDcgQEAgdm9pZCBzZXRN
YWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKQogICAgICAgICBzY2hlZHVsZURp
c3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oUVQpCisjaWYgIVBMQVRGT1JNKE1BQykKIGJvb2wgaXNNYWluVGhyZWFkKCkK
IHsKICAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IG1haW5UaHJlYWRJZGVudGlmaWVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDg5ZmE5MTQuLmJlMGM2NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTQ5MCwxMCArNDkwLDYgQEAKICNk
ZWZpbmUgV1RGX1VTRV9NRVJTRU5ORV9UV0lTVEVSXzE5OTM3IDEKICNlbmRpZgogCi0jaWYgUExB
VEZPUk0oUVQpICYmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pCi0jZGVmaW5lIFdURl9VU0VfUFRI
UkVBRF9CQVNFRF9RVCAxCi0jZW5kaWYKLQogLyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9y
bWFuY2VDb3VudGVyIGJ5IGRlZmF1bHQgKi8KICNpZiBPUyhXSU5ET1dTKQogI2RlZmluZSBXVEZf
VVNFX1FVRVJZX1BFUkZPUk1BTkNFX0NPVU5URVIgIDEKQEAgLTY0NSw2ICs2NDEsOSBAQAogI2Rl
ZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCiAj
ZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFFUKSAmJiBPUyhVTklYKQorI2RlZmluZSBXVEZfVVNFX1BU
SFJFQURTIDEKKyNkZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCiAjZW5kaWYKIAogI2lmICFk
ZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkU3BlY2lmaWMuaAppbmRleCA5NDAzZDcxLi40ZDdjOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCkBAIC00NSw4ICs0NSw2IEBACiAKICNpZiBVU0Uo
UFRIUkVBRFMpCiAjaW5jbHVkZSA8cHRocmVhZC5oPgotI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5j
bHVkZSA8UVRocmVhZFN0b3JhZ2U+CiAjZWxpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2xp
Yi5oPgogI2VsaWYgT1MoV0lORE9XUykKQEAgLTkwLDkgKzg4LDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YSk7CiAgICAgcHVibGljOgogICAgICAgICBEYXRh
KFQqIHZhbHVlLCBUaHJlYWRTcGVjaWZpYzxUPiogb3duZXIpIDogdmFsdWUodmFsdWUpLCBvd25l
cihvd25lcikge30KLSNpZiBQTEFURk9STShRVCkKLSAgICAgICAgfkRhdGEoKSB7IG93bmVyLT5k
ZXN0cm95KHRoaXMpOyB9Ci0jZW5kaWYKIAogICAgICAgICBUKiB2YWx1ZTsKICAgICAgICAgVGhy
ZWFkU3BlY2lmaWM8VD4qIG93bmVyOwpAQCAtMTA0LDggKzk5LDYgQEAgcHJpdmF0ZToKIAogI2lm
IFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFkX2tleV90IG1fa2V5OwotI2VsaWYgUExBVEZPUk0o
UVQpCi0gICAgUVRocmVhZFN0b3JhZ2U8RGF0YSo+IG1fa2V5OwogI2VsaWYgUExBVEZPUk0oR1RL
KQogICAgIEdTdGF0aWNQcml2YXRlIG1fa2V5OwogI2VsaWYgT1MoV0lORE9XUykKQEAgLTEzNiwy
OCArMTI5LDYgQEAgaW5saW5lIHZvaWQgVGhyZWFkU3BlY2lmaWM8VD46OnNldChUKiBwdHIpCiAg
ICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX2tleSwgbmV3IERhdGEocHRyLCB0aGlzKSk7CiB9CiAK
LSNlbGlmIFBMQVRGT1JNKFFUKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFRocmVh
ZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZpYygpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+Ci1pbmxpbmUgVCogVGhyZWFkU3BlY2lmaWM8VD46OmdldCgpCi17Ci0gICAgRGF0YSogZGF0
YSA9IHN0YXRpY19jYXN0PERhdGEqPihtX2tleS5sb2NhbERhdGEoKSk7Ci0gICAgcmV0dXJuIGRh
dGEgPyBkYXRhLT52YWx1ZSA6IDA7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
dm9pZCBUaHJlYWRTcGVjaWZpYzxUPjo6c2V0KFQqIHB0cikKLXsKLSAgICBBU1NFUlQoIWdldCgp
KTsKLSAgICBEYXRhKiBkYXRhID0gbmV3IERhdGEocHRyLCB0aGlzKTsKLSAgICBtX2tleS5zZXRM
b2NhbERhdGEoZGF0YSk7Ci19Ci0KICNlbGlmIFBMQVRGT1JNKEdUSykKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTI1MCwxOCArMjIxLDEyIEBAIGlubGluZSB2b2lkIFRocmVhZFNwZWNpZmlj
PFQ+OjpkZXN0cm95KHZvaWQqIHB0cikKICAgICAvLyBTZWUgY29tbWVudCBhcyBhYm92ZQogICAg
IGdfc3RhdGljX3ByaXZhdGVfc2V0KCZkYXRhLT5vd25lci0+bV9rZXksIGRhdGEsIDApOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgLy8gU2VlIGNvbW1lbnQgYXMgYWJvdmUKLSAgICBk
YXRhLT5vd25lci0+bV9rZXkuc2V0TG9jYWxEYXRhKGRhdGEpOwotI2VuZGlmCiAKICAgICBkYXRh
LT52YWx1ZS0+flQoKTsKICAgICBmYXN0RnJlZShkYXRhLT52YWx1ZSk7CiAKICNpZiBVU0UoUFRI
UkVBRFMpCiAgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhkYXRhLT5vd25lci0+bV9rZXksIDApOwot
I2VsaWYgUExBVEZPUk0oUVQpCi0gICAgLy8gRG8gbm90aGluZyBoZXJlCiAjZWxpZiBQTEFURk9S
TShHVEspCiAgICAgZ19zdGF0aWNfcHJpdmF0ZV9zZXQoJmRhdGEtPm93bmVyLT5tX2tleSwgMCwg
MCk7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtMjcwLDkgKzIzNSw3IEBAIGlubGluZSB2b2lkIFRo
cmVhZFNwZWNpZmljPFQ+OjpkZXN0cm95KHZvaWQqIHB0cikKICNlcnJvciBUaHJlYWRTcGVjaWZp
YyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHRoaXMgcGxhdGZvcm0uCiAjZW5kaWYKIAotI2lmICFQ
TEFURk9STShRVCkKICAgICBkZWxldGUgZGF0YTsKLSNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQ
cmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaAppbmRleCA5ZjI2M2FlLi4xYmVkNWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtNDYsMTQgKzQ2LDYgQEAKICNpbmNsdWRl
IDxwdGhyZWFkLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPHFnbG9i
YWwuaD4KLVFUX0JFR0lOX05BTUVTUEFDRQotY2xhc3MgUU11dGV4OwotY2xhc3MgUVdhaXRDb25k
aXRpb247Ci1RVF9FTkRfTkFNRVNQQUNFCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdURiB7CiAKICNp
ZiBVU0UoUFRIUkVBRFMpCkBAIC02NCwxMCArNTYsNiBAQCB0eXBlZGVmIHB0aHJlYWRfcndsb2Nr
X3QgUGxhdGZvcm1SZWFkV3JpdGVMb2NrOwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJlYWRXcml0
ZUxvY2s7CiAjZW5kaWYKIHR5cGVkZWYgcHRocmVhZF9jb25kX3QgUGxhdGZvcm1Db25kaXRpb247
Ci0jZWxpZiBQTEFURk9STShRVCkKLXR5cGVkZWYgUVRfUFJFUEVORF9OQU1FU1BBQ0UoUU11dGV4
KSogUGxhdGZvcm1NdXRleDsKLXR5cGVkZWYgdm9pZCogUGxhdGZvcm1SZWFkV3JpdGVMb2NrOyAv
LyBGSVhNRTogSW1wbGVtZW50LgotdHlwZWRlZiBRVF9QUkVQRU5EX05BTUVTUEFDRShRV2FpdENv
bmRpdGlvbikqIFBsYXRmb3JtQ29uZGl0aW9uOwogI2VsaWYgT1MoV0lORE9XUykKIHN0cnVjdCBQ
bGF0Zm9ybU11dGV4IHsKICAgICBDUklUSUNBTF9TRUNUSU9OIG1faW50ZXJuYWxNdXRleDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvTWFpblRocmVhZFF0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvcXQvTWFpblRocmVhZFF0LmNwcAppbmRleCBiNDJj
M2FmLi42MDZhNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L01h
aW5UaHJlYWRRdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWluVGhy
ZWFkUXQuY3BwCkBAIC02NSwyMSArNjUsMTIgQEAgUV9HTE9CQUxfU1RBVElDKE1haW5UaHJlYWRJ
bnZva2VyLCB3ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcikKIAogdm9pZCBpbml0aWFsaXplTWFp
blRocmVhZFBsYXRmb3JtKCkKIHsKKyAgICB3ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpOwog
fQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQogewotICAg
IFFPYmplY3QqIGludm9rZXIgPSB3ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpOwotICAgIGlm
IChpbnZva2VyLT50aHJlYWQoKSAhPSBRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLT50aHJl
YWQoKSkgewotICAgICAgICBBU1NFUlQoaW52b2tlci0+dGhyZWFkKCkgPT0gUVRocmVhZDo6Y3Vy
cmVudFRocmVhZCgpKTsKLSAgICAgICAgaW52b2tlci0+bW92ZVRvVGhyZWFkKFFDb3JlQXBwbGlj
YXRpb246Omluc3RhbmNlKCktPnRocmVhZCgpKTsKLSAgICB9Ci0gICAgUUNvcmVBcHBsaWNhdGlv
bjo6cG9zdEV2ZW50KGludm9rZXIsIG5ldyBRRXZlbnQoc3RhdGljX2Nhc3Q8UUV2ZW50OjpUeXBl
PihzX21haW5UaHJlYWRJbnZva2VyRXZlbnRUeXBlKSkpOwotfQotCi1ib29sIGlzTWFpblRocmVh
ZCgpCi17Ci0gICAgcmV0dXJuIFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSA9PSBRQ29yZUFwcGxp
Y2F0aW9uOjppbnN0YW5jZSgpLT50aHJlYWQoKTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpwb3N0
RXZlbnQod2Via2l0X21haW5fdGhyZWFkX2ludm9rZXIoKSwgbmV3IFFFdmVudChzdGF0aWNfY2Fz
dDxRRXZlbnQ6OlR5cGU+KHNfbWFpblRocmVhZEludm9rZXJFdmVudFR5cGUpKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9x
dC9UaHJlYWRpbmdRdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGlu
Z1F0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWI3Yy4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBKdXN0aW4g
SGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5jb20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJUaHJlYWRpbmcuaCIKLQotI2luY2x1ZGUgIkRhdGVNYXRoLmgiCi0jaW5jbHVkZSAiZHRv
YS5oIgotI2luY2x1ZGUgIkN1cnJlbnRUaW1lLmgiCi0jaW5jbHVkZSAiSGFzaE1hcC5oIgotI2lu
Y2x1ZGUgIk1haW5UaHJlYWQuaCIKLSNpbmNsdWRlICJSYW5kb21OdW1iZXJTZWVkLmgiCi0jaW5j
bHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KLQotI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+
Ci0jaW5jbHVkZSA8UU11dGV4PgotI2luY2x1ZGUgPFFUaHJlYWQ+Ci0jaW5jbHVkZSA8UVdhaXRD
b25kaXRpb24+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1jbGFzcyBUaHJlYWRQcml2YXRlIDogcHVi
bGljIFFUaHJlYWQgewotcHVibGljOgotICAgIFRocmVhZFByaXZhdGUoVGhyZWFkRnVuY3Rpb24g
ZW50cnlQb2ludCwgdm9pZCogZGF0YSk7Ci0gICAgdm9pZCBydW4oKTsKLSAgICB2b2lkKiBnZXRS
ZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fcmV0dXJuVmFsdWU7IH0KLXByaXZhdGU6Ci0gICAgdm9p
ZCogbV9kYXRhOwotICAgIFRocmVhZEZ1bmN0aW9uIG1fZW50cnlQb2ludDsKLSAgICB2b2lkKiBt
X3JldHVyblZhbHVlOwotfTsKLQotVGhyZWFkUHJpdmF0ZTo6VGhyZWFkUHJpdmF0ZShUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKSAKLSAgICA6IG1fZGF0YShkYXRhKQotICAg
ICwgbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQpCi0gICAgLCBtX3JldHVyblZhbHVlKDApCi17Ci19
Ci0KLXZvaWQgVGhyZWFkUHJpdmF0ZTo6cnVuKCkKLXsKLSAgICBtX3JldHVyblZhbHVlID0gbV9l
bnRyeVBvaW50KG1fZGF0YSk7Ci19Ci0KLWNsYXNzIFRocmVhZE1vbml0b3IgOiBwdWJsaWMgUU9i
amVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1YmxpYzoKLSAgICBzdGF0aWMgVGhyZWFkTW9uaXRvciAq
IGluc3RhbmNlKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUaHJlYWRNb25pdG9yICppbnN0YW5j
ZSA9IG5ldyBUaHJlYWRNb25pdG9yKCk7Ci0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKLSAgICB9
Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZvaWQgdGhyZWFkRmluaXNoZWQoKQotICAgIHsKLSAg
ICAgICAgc2VuZGVyKCktPmRlbGV0ZUxhdGVyKCk7Ci0gICAgfQotfTsKLQotc3RhdGljIE11dGV4
KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKLQotc3RhdGljIE11dGV4JiB0aHJl
YWRNYXBNdXRleCgpCi17Ci0gICAgc3RhdGljIE11dGV4IG11dGV4OwotICAgIHJldHVybiBtdXRl
eDsKLX0KLQotc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVhZCo+JiB0aHJl
YWRNYXAoKQotewotICAgIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIFFUaHJlYWQq
PiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0KLQotc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRl
bnRpZmllckJ5UXRocmVhZEhhbmRsZShRVGhyZWFkKiYgdGhyZWFkKQotewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEhhc2hNYXA8VGhyZWFkSWRlbnRp
ZmllciwgUVRocmVhZCo+OjppdGVyYXRvciBpID0gdGhyZWFkTWFwKCkuYmVnaW4oKTsKLSAgICBm
b3IgKDsgaSAhPSB0aHJlYWRNYXAoKS5lbmQoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpLT5zZWNv
bmQgPT0gdGhyZWFkKQotICAgICAgICAgICAgcmV0dXJuIGktPmZpcnN0OwotICAgIH0KLQotICAg
IHJldHVybiAwOwotfQotCi1zdGF0aWMgVGhyZWFkSWRlbnRpZmllciBlc3RhYmxpc2hJZGVudGlm
aWVyRm9yVGhyZWFkKFFUaHJlYWQqJiB0aHJlYWQpCi17Ci0gICAgQVNTRVJUKCFpZGVudGlmaWVy
QnlRdGhyZWFkSGFuZGxlKHRocmVhZCkpOwotCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVh
ZE1hcE11dGV4KCkpOwotCi0gICAgc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckNv
dW50ID0gMTsKLQotICAgIHRocmVhZE1hcCgpLmFkZChpZGVudGlmaWVyQ291bnQsIHRocmVhZCk7
Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllckNvdW50Kys7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFy
VGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlkKQotewotICAgIE11dGV4TG9j
a2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgpKTsKLQotICAgIEFTU0VSVCh0aHJlYWRNYXAoKS5j
b250YWlucyhpZCkpOwotCi0gICAgdGhyZWFkTWFwKCkucmVtb3ZlKGlkKTsKLX0KLQotc3RhdGlj
IFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZpZXIoVGhyZWFkSWRlbnRpZmllciBpZCkKLXsKLSAg
ICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFkTWFwTXV0ZXgoKSk7Ci0KLSAgICByZXR1cm4gdGhy
ZWFkTWFwKCkuZ2V0KGlkKTsKLX0KLQotdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKLXsKLSAg
ICBpZiAoIWF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KSB7Ci0gICAgICAgIC8vIFN0
cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBub3QgY29uc3RydWN0IGl0cyBzdGF0aWMgc3RyaW5nIGlu
IGEgdGhyZWFkc2FmZSBmYXNoaW9uLAotICAgICAgICAvLyBzbyBlbnN1cmUgaXQgaGFzIGJlZW4g
aW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgICAgICBTdHJpbmdJbXBsOjplbXB0eSgpOwotICAg
ICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCA9IG5ldyBNdXRleDsKLSAgICAg
ICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAgICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVy
YXRvcigpOwotICAgICAgICB3dGZUaHJlYWREYXRhKCk7Ci0gICAgICAgIHNfZHRvYVA1TXV0ZXgg
PSBuZXcgTXV0ZXg7Ci0gICAgICAgIGluaXRpYWxpemVEYXRlcygpOwotICAgIH0KLX0KLQotdm9p
ZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKQotewotICAgIEFTU0VSVChh
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCk7Ci0gICAgYXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXgtPmxvY2soKTsKLX0KLQotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFs
KFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqKQotewot
ICAgIFRocmVhZFByaXZhdGUqIHRocmVhZCA9IG5ldyBUaHJlYWRQcml2YXRlKGVudHJ5UG9pbnQs
IGRhdGEpOwotICAgIGlmICghdGhyZWFkKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRv
IGNyZWF0ZSB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50cnlQb2lu
dCwgZGF0YSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFFPYmplY3Q6OmNvbm5l
Y3QodGhyZWFkLCBTSUdOQUwoZmluaXNoZWQoKSksIFRocmVhZE1vbml0b3I6Omluc3RhbmNlKCks
IFNMT1QodGhyZWFkRmluaXNoZWQoKSkpOwotCi0gICAgdGhyZWFkLT5zdGFydCgpOwotCi0gICAg
UVRocmVhZCogdGhyZWFkUmVmID0gc3RhdGljX2Nhc3Q8UVRocmVhZCo+KHRocmVhZCk7Ci0KLSAg
ICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclRocmVhZCh0aHJlYWRSZWYpOwotfQotCi12
b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwoY29uc3QgY2hhciopCi17Ci19Ci0K
LWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElELCB2
b2lkKiogcmVzdWx0KQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0KLSAgICBRVGhyZWFkKiB0
aHJlYWQgPSB0aHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKLQotICAgIGJvb2wgcmVzID0g
dGhyZWFkLT53YWl0KCk7Ci0KLSAgICBjbGVhclRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQp
OwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxUaHJlYWRQ
cml2YXRlKj4odGhyZWFkKS0+Z2V0UmV0dXJuVmFsdWUoKTsKLQotICAgIHJldHVybiAhcmVzOwot
fQotCi12b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKQotewotICAg
IEFTU0VSVCh0aHJlYWRJRCk7Ci0gICAgY2xlYXJUaHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElE
KTsKLX0KLQotVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhyZWFkKCkKLXsKLSAgICBRVGhyZWFk
KiBjdXJyZW50VGhyZWFkID0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpOwotICAgIGlmIChUaHJl
YWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShjdXJyZW50VGhyZWFk
KSkKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9y
VGhyZWFkKGN1cnJlbnRUaHJlYWQpOwotfQotCi12b2lkIHlpZWxkKCkKLXsKLSAgICBRVGhyZWFk
Ojp5aWVsZEN1cnJlbnRUaHJlYWQoKTsKLX0KLQotTXV0ZXg6Ok11dGV4KCkKLSAgICA6IG1fbXV0
ZXgobmV3IFFNdXRleCgpKQotewotfQotCi1NdXRleDo6fk11dGV4KCkKLXsKLSAgICBkZWxldGUg
bV9tdXRleDsKLX0KLQotdm9pZCBNdXRleDo6bG9jaygpCi17Ci0gICAgbV9tdXRleC0+bG9jaygp
OwotfQotCi1ib29sIE11dGV4Ojp0cnlMb2NrKCkKLXsKLSAgICByZXR1cm4gbV9tdXRleC0+dHJ5
TG9jaygpOwotfQotCi12b2lkIE11dGV4Ojp1bmxvY2soKQotewotICAgIG1fbXV0ZXgtPnVubG9j
aygpOwotfQotCi1UaHJlYWRDb25kaXRpb246OlRocmVhZENvbmRpdGlvbigpCi0gICAgOiBtX2Nv
bmRpdGlvbihuZXcgUVdhaXRDb25kaXRpb24oKSkKLXsKLX0KLQotVGhyZWFkQ29uZGl0aW9uOjp+
VGhyZWFkQ29uZGl0aW9uKCkKLXsKLSAgICBkZWxldGUgbV9jb25kaXRpb247Ci19Ci0KLXZvaWQg
VGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4JiBtdXRleCkKLXsKLSAgICBtX2NvbmRpdGlvbi0+
d2FpdChtdXRleC5pbXBsKCkpOwotfQotCi1ib29sIFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0
KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29sdXRlVGltZSkKLXsKLSAgICBkb3VibGUgY3VycmVu
dFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7Ci0KLSAgICAvLyBUaW1lIGlzIGluIHRoZSBwYXN0
IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgotICAgIGlmIChhYnNvbHV0ZVRpbWUgPCBjdXJyZW50VGlt
ZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gVGltZSBpcyB0b28gZmFyIGluIHRo
ZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxvdyB1bnNpZ25lZCBsb25nKSAtIHdhaXQgZm9yZXZl
ci4KLSAgICBpZiAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUgPiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KElOVF9NQVgpIC8gMTAwMC4wKSB7Ci0gICAgICAgIHdhaXQobXV0ZXgpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBkb3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSAo
YWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUpICogMTAwMC4wOwotICAgIHJldHVybiBtX2NvbmRp
dGlvbi0+d2FpdChtdXRleC5pbXBsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGludGVy
dmFsTWlsbGlzZWNvbmRzKSk7Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjpzaWduYWwoKQot
ewotICAgIG1fY29uZGl0aW9uLT53YWtlT25lKCk7Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9u
Ojpicm9hZGNhc3QoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlQWxsKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2luY2x1ZGUgIlRocmVhZGluZ1F0Lm1vYyIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnByaSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvd3RmLnByaQppbmRleCBkNTIyZDBhLi5jOWVhYWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcmkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi93dGYucHJpCkBAIC0xMzksNiArMTM5LDggQEAgSEVBREVSUyArPSBcCiAgICAgd3RmL1ZN
VGFncy5oIFwKICAgICB3dGYvV1RGVGhyZWFkRGF0YS5oCiAKK3VuaXg6IEhFQURFUlMgKz0gd3Rm
L1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAorCiBTT1VSQ0VTICs9IFwKICAgICB3dGYv
QXNzZXJ0aW9ucy5jcHAgXAogICAgIHd0Zi9CaXRWZWN0b3IuY3BwIFwKQEAgLTE2Nyw3ICsxNjks
NiBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvT1NSYW5kb21Tb3VyY2UuY3BwIFwKICAgICB3dGYv
cXQvTWFpblRocmVhZFF0LmNwcCBcCiAgICAgd3RmL3F0L1N0cmluZ1F0LmNwcCBcCi0gICAgd3Rm
L3F0L1RocmVhZGluZ1F0LmNwcCBcCiAgICAgd3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5jcHAg
XAogICAgIHd0Zi9QYWdlQmxvY2suY3BwIFwKICAgICB3dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5j
cHAgXApAQCAtMTg5LDUgKzE5MCwxMyBAQCBTT1VSQ0VTICs9IFwKICAgICB3dGYvdW5pY29kZS9p
Y3UvQ29sbGF0b3JJQ1UuY3BwIFwKICAgICB3dGYvdW5pY29kZS9VVEY4LmNwcAogCi11bml4OiBT
T1VSQ0VTICs9IHd0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcAotd2luKnx3aW5jZSo6IFNPVVJDRVMg
Kz0gd3RmL09TQWxsb2NhdG9yV2luLmNwcAorCit1bml4OiBTT1VSQ0VTICs9IFwKKyAgICB3dGYv
T1NBbGxvY2F0b3JQb3NpeC5jcHAgXAorICAgIHd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJl
YWRzLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorCit3aW4qfHdpbmNlKjog
U09VUkNFUyArPSBcCisgICAgd3RmL09TQWxsb2NhdG9yV2luLmNwcCBcCisgICAgd3RmL1RocmVh
ZFNwZWNpZmljV2luLmNwcCBcCisgICAgd3RmL1RocmVhZGluZ1dpbi5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3OTdiMWJmLi42OTkyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEt
MjggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJlYWQvV2luMzIg
dGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOZWVkIHRvIGluY2x1ZGUgcWdsb2JhbC5oIHNpbmNlIFRocmVhZGluZ1ByaW1p
dGl2ZXMuaCBubyBsb25nZXIgZG9lcy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaDoKKwogMjAxMS0xMS0yNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEJ1aWxkIGZpeCBmb3IgTk9UIEVOQUJM
RV9XRUJfU09DS0VUUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBhYTFlYmI5Li5mMmIxMGM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHFnbG9i
YWwuaD4KIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFOZXR3b3Jr
QWNjZXNzTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZmMyYzYwLi4y
ZTFiZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAotI2luY2x1ZGUgInF3
ZWJlbGVtZW50X3AuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogI2luY2x1ZGUgInF3ZWJmcmFt
ZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKQEAgLTc2LDEyICs3NSwxMiBAQAogI2luY2x1
ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50UXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yU2VydmVyUXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVk
U3RyaW5ncy5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtp
bmdDb250ZXh0LmgiCkBAIC05Myw3ICs5Miw2IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAj
aW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc1F0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1U
b3VjaEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAi
UGx1Z2luRGF0YWJhc2UuaCIKQEAgLTEwNywyMCArMTA1LDE0IEBACiAjaW5jbHVkZSAiU2NoZW1l
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9y
aWdpbi5oIgotI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpZiBkZWZpbmVkIFFfT1NfV0lOMzIKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjZW5k
aWYgLy8gUV9PU19XSU4zMgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlV0
aWxzUXQuaCIKLSNpZiBVU0UoUVRLSVQpCi0jaW5jbHVkZSAiV2ViU3lzdGVtSW50ZXJmYWNlLmgi
Ci0jZW5kaWYKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVk
ZSA8UUJhc2ljVGltZXI+CkBAIC0zMTgsMTcgKzMxMCw3IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdl
YlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICAsIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5
KGZhbHNlKQogICAgICwgbV9sYXN0RHJvcEFjdGlvbihRdDo6SWdub3JlQWN0aW9uKQogewotICAg
IFdlYkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwotICAgIFNj
cmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRpYWxp
emVNYWluVGhyZWFkKCk7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9h
ZFBvbGljeShXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxB
bmRTdWJzdGl0dXRlRGF0YSk7Ci0KLSAgICBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6aW5pdGlhbGl6
ZSgpOwotICAgIFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUoKTsKLQotI2lmIFVTRShR
VEtJVCkKLSAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwotI2VuZGlmCisgICAgV2Vi
Q29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogCiAgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFn
ZUNsaWVudHM7CiAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IENocm9tZUNsaWVu
dFF0KHEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMzQzMDliMi4u
ODllOTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKICNpbmNsdWRlICJJY29uRGF0YWJhc2VD
bGllbnRRdC5oIgogI2VuZGlmCisjaW5jbHVkZSAiSW5pdFdlYkNvcmVRdC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpA
QCAtMjc4LDggKzI3OSwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKIFFX
ZWJTZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiB7CiAgICAgc3RhdGlj
IFFXZWJTZXR0aW5ncyogZ2xvYmFsID0gMDsKLSAgICBpZiAoIWdsb2JhbCkKKyAgICBpZiAoIWds
b2JhbCkgeworICAgICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgICAg
IGdsb2JhbCA9IG5ldyBRV2ViU2V0dGluZ3M7CisgICAgfQogICAgIHJldHVybiBnbG9iYWw7CiB9
CiAKQEAgLTY0OCw2ICs2NTEsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6ZGVmYXVsdFRleHRF
bmNvZGluZygpIGNvbnN0CiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBh
dGgoY29uc3QgUVN0cmluZyYgcGF0aCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29y
ZVF0KCk7CiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBJ
Y29uRGF0YWJhc2VDbGllbnRRdCBpcyBpbnN0YW50aWF0ZWQuCiAgICAgV2ViQ29yZTo6SWNvbkRh
dGFiYXNlQ2xpZW50UXQ6Omluc3RhbmNlKCk7CkBAIC02NzQsNiArNjc4LDcgQEAgdm9pZCBRV2Vi
U2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKICovCiBR
U3RyaW5nIFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0aCgpCiB7CisgICAgV2ViQ29yZTo6
aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogICAgIGlmIChXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5p
c0VuYWJsZWQoKSAmJiBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc09wZW4oKSkKICAgICAgICAg
cmV0dXJuIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmRhdGFiYXNlUGF0aCgpOwogICAgIGVsc2UK
QEAgLTY4NSw2ICs2OTAsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0
aCgpCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKCkKIHsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgaWYgKFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLmlzRW5hYmxlZCgpICYmIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzT3BlbigpKQog
ICAgICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJY29ucygpOwogfQpAQCAt
NzAxLDYgKzcwNyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiAq
LwogUUljb24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwmIHVybCkKIHsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgV2ViQ29yZTo6SW1hZ2UqIGlt
YWdlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChX
ZWJDb3JlOjpLVVJMKHVybCkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CiAgICAgaWYgKCFpbWFnZSkKQEAgLTcxOCw2
ICs3MjUsNyBAQCBRSWNvbiBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJs
KQogCiBRV2ViUGx1Z2luRGF0YWJhc2UgKlFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKQog
eworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICBzdGF0aWMgUVdlYlBs
dWdpbkRhdGFiYXNlKiBkYXRhYmFzZSA9IDA7CiAgICAgaWYgKCFkYXRhYmFzZSkKICAgICAgICAg
ZGF0YWJhc2UgPSBuZXcgUVdlYlBsdWdpbkRhdGFiYXNlKCk7CkBAIC03NTEsNiArNzU5LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWMoUVdlYlNldHRpbmdz
OjpXZWJHcmFwaGljIHR5cGUpCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMo
V2ViR3JhcGhpYyB0eXBlLCBjb25zdCBRUGl4bWFwJiBncmFwaGljKQogeworICAgIFdlYkNvcmU6
OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICBXZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1S
ZXNvdXJjZShyZXNvdXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpLCBncmFwaGljKTsKIH0KIApA
QCAtNzYyLDYgKzc3MSw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKFdlYkdy
YXBoaWMgdHlwZSwgY29uc3QgUVBpeG1hcCYgZ3JhcGhpYykKICovCiBRUGl4bWFwIFFXZWJTZXR0
aW5nczo6d2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlh
bGl6ZVdlYkNvcmVRdCgpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gaW1nID0gV2ViQ29y
ZTo6SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWMo
dHlwZSkpOwogICAgIGlmICghaW1nKQogICAgICAgICByZXR1cm4gUVBpeG1hcCgpOwpAQCAtNzc5
LDYgKzc4OSw3IEBAIFFQaXhtYXAgUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKFdlYkdyYXBoaWMg
dHlwZSkKICAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFyTWVtb3J5Q2FjaGVzKCkKIHsKKyAg
ICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgLy8gVHVybiB0aGUgY2FjaGUg
b24gYW5kIG9mZi4gIERpc2FibGluZyB0aGUgb2JqZWN0IGNhY2hlIHdpbGwgcmVtb3ZlIGFsbAog
ICAgIC8vIHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIFRoZXkgbWF5IHN0aWxsIGxpdmUgb24g
aWYgdGhleSBhcmUgcmVmZXJlbmNlZAogICAgIC8vIGJ5IHNvbWUgV2ViIHBhZ2UgdGhvdWdoLgpA
QCAtODIyLDYgKzgzMyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNh
Y2hlKGludCBwYWdlcykKICovCiBpbnQgUVdlYlNldHRpbmdzOjptYXhpbXVtUGFnZXNJbkNhY2hl
KCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OnBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwogfQogCkBAIC04NDMsNiArODU1LDcgQEAg
aW50IFFXZWJTZXR0aW5nczo6bWF4aW11bVBhZ2VzSW5DYWNoZSgpCiAqLwogdm9pZCBRV2ViU2V0
dGluZ3M6OnNldE9iamVjdENhY2hlQ2FwYWNpdGllcyhpbnQgY2FjaGVNaW5EZWFkQ2FwYWNpdHks
IGludCBjYWNoZU1heERlYWQsIGludCB0b3RhbENhcGFjaXR5KQogeworICAgIFdlYkNvcmU6Omlu
aXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICBib29sIGRpc2FibGVDYWNoZSA9ICFjYWNoZU1pbkRl
YWRDYXBhY2l0eSAmJiAhY2FjaGVNYXhEZWFkICYmICF0b3RhbENhcGFjaXR5OwogICAgIFdlYkNv
cmU6Om1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKGRpc2FibGVDYWNoZSk7CiAKQEAgLTk2OCw2
ICs5ODEsNyBAQCB2b2lkIFFXZWJTZXR0aW5nczo6cmVzZXRBdHRyaWJ1dGUoV2ViQXR0cmlidXRl
IGF0dHIpCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aChjb25z
dCBRU3RyaW5nJiBwYXRoKQogeworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsK
ICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKICNlbmRpZgpAQCAtOTgz
LDYgKzk5Nyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lU3RvcmFnZVBhdGgoY29u
c3QgUVN0cmluZyYgcGF0aCkKICovCiBRU3RyaW5nIFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3Jh
Z2VQYXRoKCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQpAQCAtMTAzNSw2ICsxMDUw
LDcgQEAgcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEoKQog
Ki8KIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgo
Y29uc3QgUVN0cmluZyYgcGF0aCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0
KCk7CiAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc2V0Q2FjaGVEaXJlY3RvcnkocGF0aCk7
CiB9CiAKQEAgLTEwNDgsNiArMTA2NCw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5l
V2ViQXBwbGljYXRpb25DYWNoZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKICovCiBRU3RyaW5n
IFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIHsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hl
U3RvcmFnZSgpLmNhY2hlRGlyZWN0b3J5KCk7CiB9CiAKQEAgLTEwNTksNiArMTA3Niw3IEBAIFFT
dHJpbmcgUVdlYlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgoKQogKi8K
IHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHFp
bnQ2NCBtYXhpbXVtU2l6ZSkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7
CiAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuZW1wdHkoKTsKICAgICBXZWJDb3JlOjpjYWNo
ZVN0b3JhZ2UoKS52YWN1dW1EYXRhYmFzZUZpbGUoKTsKICAgICBXZWJDb3JlOjpjYWNoZVN0b3Jh
Z2UoKS5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSk7CkBAIC0xMDcxLDYgKzEwODksNyBAQCB2
b2lkIFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YShxaW50
NjQgbWF4aW11bVNpemUpCiAqLwogcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YSgpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgp
OwogICAgIHJldHVybiBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5tYXhpbXVtU2l6ZSgpOwogfQog
CkBAIC0xMTE5LDYgKzExMzgsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6bG9jYWxTdG9yYWdl
UGF0aCgpIGNvbnN0CiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IFFTdHJpbmcmIHBhdGgpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNv
cmVRdCgpOwogI2lmbmRlZiBRVF9OT19ERVNLVE9QU0VSVklDRVMKICAgICBRU3RyaW5nIHN0b3Jh
Z2VQYXRoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDU4NWRjZDYuLjhjOTdmNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMjggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9n
aWNAcmVjdGFsb2dpYy5jb20+CisKKyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGlu
ZyBiYWNrLWVuZCB3aXRoIHB0aHJlYWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0IFdlYkNvcmUg
aW5pdGlhbGl6YXRpb24gb3V0IG9mIFFXZWJQYWdlUHJpdmF0ZSBpbnRvIGEKKyAgICAgICAgc2Vw
YXJhdGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFRoaXMgYWxzbyBuZWVkcyB0byBiZSBjYWxs
ZWQKKyAgICAgICAgZnJvbSBwdWJsaWMgc3RhdGljIFFXZWJTZXR0aW5ncyBtZXRob2RzIHRoYXQg
Y2FsbCBpbnRvIFdlYkNvcmUsCisgICAgICAgIHNpbmNlIHRob3NlIGNhbiBiZSB1c2VkIGJlZm9y
ZSBhIFFXZWJQYWdlIGhhcyBiZWVuIGNvbnN0cnVjdGVkLgorCisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAg
ICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6Z2xv
YmFsU2V0dGluZ3MpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRo
KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
aWNvbkZvclVybCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMpOgorICAg
ICAgICAoUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6
Y2xlYXJNZW1vcnlDYWNoZXMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjptYXhpbXVtUGFnZXNJ
bkNhY2hlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2JqZWN0Q2FjaGVDYXBhY2l0aWVz
KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAg
ICAgKFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIChR
V2ViU2V0dGluZ3M6Om9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAo
UVdlYlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5p
dGlhbGl6ZVdlYkNvcmVRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVR
dC5oOiBBZGRlZC4KKwogMjAxMS0xMS0yMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIEluc3BlY3Rvcjo6YnJpbmdU
b0Zyb250IGZyb20gdGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYTY5NWY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBIZXdsZXR0LVBhY2thcmQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluaXRX
ZWJDb3JlUXQuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmF0ZWdpZXNRdC5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgorI2lmIFVTRShRVEtJVCkKKyNpbmNsdWRlICJXZWJTeXN0ZW1JbnRl
cmZhY2UuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAicXdlYmVsZW1lbnRfcC5oIgorCisjaW5jbHVk
ZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIGluaXRpYWxpemVXZWJDb3JlUXQo
KQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgaWYgKGluaXRp
YWxpemVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2lu
Z0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOworICAgIFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koV2ViQ29yZTo6U2VjdXJpdHlQ
b2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOworCisgICAg
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmluaXRpYWxpemUoKTsKKyAgICBRdFdlYkVsZW1lbnRSdW50
aW1lOjppbml0aWFsaXplKCk7CisKKyNpZiBVU0UoUVRLSVQpCisgICAgSW5pdFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UoKTsKKyNlbmRpZgorCisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3Jl
UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMWFhZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuaApAQCAt
MCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgSGV3bGV0dC1QYWNrYXJkIERldmVs
b3BtZW50IENvbXBhbnksIEwuUC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEhld2xldHQtUGFja2FyZCBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElu
aXRXZWJDb3JlUXRfaAorI2RlZmluZSBJbml0V2ViQ29yZVF0X2gKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIGluaXRpYWxpemVXZWJDb3JlUXQoKTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9hcGkucHJpIGIvU291cmNlL2FwaS5wcmkKaW5kZXggMzRjNjViMi4uZDI4
YjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL2FwaS5wcmkKKysrIGIvU291cmNlL2FwaS5wcmkKQEAg
LTU1LDYgKzU1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmNwcCBcCiAgICAgJCRQV0QvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0dlb2xvY2F0aW9uUGVybWlzc2lvbkNsaWVudFF0LmNwcCBc
CisgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwIFwK
ICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3Bw
IFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yU2VydmVyUXQu
Y3BwIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQuY3BwIFwKQEAgLTY2LDYgKzY3LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
JCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAog
CiBIRUFERVJTICs9IFwKKyAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdl
YkNvcmVRdC5oIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
U2VydmVyUXQuaCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0RmFsbGJh
Y2tXZWJQb3B1cC5oIFwKICAgICAkJFBXRC9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRXZWJD
b21ib0JveC5oIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116771</attachid>
            <date>2011-11-28 09:47:00 -0800</date>
            <delta_ts>2022-02-28 03:49:28 -0800</delta_ts>
            <desc>update patch for build-system changes in trunk</desc>
            <filename>native-threads.diff</filename>
            <type>text/plain</type>
            <size>33388</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA5NGU4NTdjLi4yNDM0NjE4
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMTEtMjggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNAcmVjdGFsb2dpYy5jb20+CisK
KyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBiYWNrLWVuZCB3aXRoIHB0aHJl
YWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYWRkaXRpb25hbCBXZWJDb3JlU3VwcG9ydCBmaWxlcyBm
b3IgUXQuCisKKyAgICAgICAgKiBTb3VyY2UvYXBpLnByaToKKwogMjAxMS0xMS0yOCAgU2ltb24g
SGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBCdWls
ZCBzeXN0ZW0gZml4ZXMgYWdhaW5zdCBWOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ2
MDNkNTMuLjUxZjBmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBA
CisyMDExLTExLTI4ICBBbmRyZXcgV2Fzb24gIDxyZWN0YWxvZ2ljQHJlY3RhbG9naWMuY29tPgor
CisgICAgICAgIFJlcGxhY2UgUXQgUVRocmVhZCB0aHJlYWRpbmcgYmFjay1lbmQgd2l0aCBwdGhy
ZWFkL1dpbjMyIHRocmVhZGluZyBiYWNrLWVuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIFRocmVhZGluZ1B0aHJlYWRzIGFuZCBUaHJlYWRpbmdX
aW4gaW5zdGVhZCBvZiBUaHJlYWRpbmdRdC4KKworICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNr
TWFya2VyLmNwcDoKKyAgICAgICAgKiB3dGYvTWFpblRocmVhZC5jcHA6CisgICAgICAgIChXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAg
ICAgKiB3dGYvVGhyZWFkU3BlY2lmaWMuaDogRHJvcCBRVGhyZWFkU3RvcmFnZSByZWxhdGVkIGNv
ZGUuCisgICAgICAgIChXVEY6Ojo6ZGVzdHJveSk6CisgICAgICAgICogd3RmL1RocmVhZGluZ1By
aW1pdGl2ZXMuaDoKKyAgICAgICAgKiB3dGYvcXQvTWFpblRocmVhZFF0LmNwcDogRHJvcCBRdCBz
cGVjaWZpYyBpc01haW5UaHJlYWQoKS4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWRQbGF0Zm9ybSk6IEluaXRpYWxpemUgTWFpblRocmVhZEludm9rZXIgb24gbWFpbiB0aHJlYWQg
dG8gYXZvaWQgaW5mZWN0aW5nIHNlY29uZGFyeSB0aHJlYWQgd2l0aCBRQWRvcHRlZFRocmVhZC4K
KyAgICAgICAgKFdURjo6c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCk6Cisg
ICAgICAgICogd3RmL3F0L1RocmVhZGluZ1F0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYv
d3RmLnBybzoKKwogMjAxMS0xMS0yOCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBwcm9zcGVjdGl2ZSBidWlsZCBmaXguIFRv
dWNoIHRoZSBmaWxlIHRvIHRyaWdnZXIgY29ycmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKaW5kZXggODA1YzYzNC4uZjYyZWUwNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCkBAIC0zMCwxMCArMzAsNiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIFVTRShQVEhSRUFEX0JBU0VEX1FUKSAmJiAhZGVmaW5l
ZChXVEZfVVNFX1BUSFJFQURTKQotI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKLSNlbmRpZgot
CiAjaWYgT1MoREFSV0lOKQogCiAjaW5jbHVkZSA8bWFjaC9tYWNoX2luaXQuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQuY3BwCmluZGV4IDk2N2I3MTUuLmRlYzdiYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtNzAsNyArNzAsNyBA
QCBwdWJsaWM6CiB0eXBlZGVmIERlcXVlPEZ1bmN0aW9uV2l0aENvbnRleHQ+IEZ1bmN0aW9uUXVl
dWU7CiAKIHN0YXRpYyBib29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFi
bGUgaXMgb25seSBhY2Nlc3NlZCBmcm9tIG1haW4gdGhyZWFkLgotI2lmICFQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShRVCkKKyNpZiAhUExBVEZPUk0oTUFDKQogc3RhdGljIFRocmVhZElkZW50
aWZpZXIgbWFpblRocmVhZElkZW50aWZpZXI7CiAjZW5kaWYKIApAQCAtOTYsOSArOTYsNyBAQCB2
b2lkIGluaXRpYWxpemVNYWluVGhyZWFkKCkKICAgICAgICAgcmV0dXJuOwogICAgIGluaXRpYWxp
emVkTWFpblRocmVhZCA9IHRydWU7CiAKLSNpZiAhUExBVEZPUk0oUVQpCiAgICAgbWFpblRocmVh
ZElkZW50aWZpZXIgPSBjdXJyZW50VGhyZWFkKCk7Ci0jZW5kaWYKIAogICAgIG1haW5UaHJlYWRG
dW5jdGlvblF1ZXVlTXV0ZXgoKTsKICAgICBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCk7
CkBAIC0yMzEsNyArMjI5LDcgQEAgdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJv
b2wgcGF1c2VkKQogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFk
KCk7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oUVQpCisjaWYgIVBMQVRG
T1JNKE1BQykKIGJvb2wgaXNNYWluVGhyZWFkKCkKIHsKICAgICByZXR1cm4gY3VycmVudFRocmVh
ZCgpID09IG1haW5UaHJlYWRJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IDg5ZmE5MTQuLmJlMGM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKQEAgLTQ5MCwxMCArNDkwLDYgQEAKICNkZWZpbmUgV1RGX1VTRV9NRVJTRU5ORV9UV0lT
VEVSXzE5OTM3IDEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oUVQpICYmIE9TKFVOSVgpICYmICFP
UyhEQVJXSU4pCi0jZGVmaW5lIFdURl9VU0VfUFRIUkVBRF9CQVNFRF9RVCAxCi0jZW5kaWYKLQog
LyogT24gV2luZG93cywgdXNlIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyIGJ5IGRlZmF1bHQgKi8K
ICNpZiBPUyhXSU5ET1dTKQogI2RlZmluZSBXVEZfVVNFX1FVRVJZX1BFUkZPUk1BTkNFX0NPVU5U
RVIgIDEKQEAgLTY0NSw2ICs2NDEsOSBAQAogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKICNk
ZWZpbmUgSEFWRV9QVEhSRUFEX1JXTE9DSyAxCiAjZW5kaWYKKyNlbGlmIFBMQVRGT1JNKFFUKSAm
JiBPUyhVTklYKQorI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDEKKyNkZWZpbmUgSEFWRV9QVEhS
RUFEX1JXTE9DSyAxCiAjZW5kaWYKIAogI2lmICFkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAppbmRleCA5NDAzZDcx
Li40ZDdjOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNw
ZWNpZmljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5o
CkBAIC00NSw4ICs0NSw2IEBACiAKICNpZiBVU0UoUFRIUkVBRFMpCiAjaW5jbHVkZSA8cHRocmVh
ZC5oPgotI2VsaWYgUExBVEZPUk0oUVQpCi0jaW5jbHVkZSA8UVRocmVhZFN0b3JhZ2U+CiAjZWxp
ZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2VsaWYgT1MoV0lORE9XUykKQEAg
LTkwLDkgKzg4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0
YSk7CiAgICAgcHVibGljOgogICAgICAgICBEYXRhKFQqIHZhbHVlLCBUaHJlYWRTcGVjaWZpYzxU
Piogb3duZXIpIDogdmFsdWUodmFsdWUpLCBvd25lcihvd25lcikge30KLSNpZiBQTEFURk9STShR
VCkKLSAgICAgICAgfkRhdGEoKSB7IG93bmVyLT5kZXN0cm95KHRoaXMpOyB9Ci0jZW5kaWYKIAog
ICAgICAgICBUKiB2YWx1ZTsKICAgICAgICAgVGhyZWFkU3BlY2lmaWM8VD4qIG93bmVyOwpAQCAt
MTA0LDggKzk5LDYgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShQVEhSRUFEUykKICAgICBwdGhyZWFk
X2tleV90IG1fa2V5OwotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgUVRocmVhZFN0b3JhZ2U8RGF0
YSo+IG1fa2V5OwogI2VsaWYgUExBVEZPUk0oR1RLKQogICAgIEdTdGF0aWNQcml2YXRlIG1fa2V5
OwogI2VsaWYgT1MoV0lORE9XUykKQEAgLTEzNiwyOCArMTI5LDYgQEAgaW5saW5lIHZvaWQgVGhy
ZWFkU3BlY2lmaWM8VD46OnNldChUKiBwdHIpCiAgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhtX2tl
eSwgbmV3IERhdGEocHRyLCB0aGlzKSk7CiB9CiAKLSNlbGlmIFBMQVRGT1JNKFFUKQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpUaHJlYWRTcGVjaWZp
YygpCi17Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCogVGhyZWFkU3BlY2lm
aWM8VD46OmdldCgpCi17Ci0gICAgRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PERhdGEqPihtX2tl
eS5sb2NhbERhdGEoKSk7Ci0gICAgcmV0dXJuIGRhdGEgPyBkYXRhLT52YWx1ZSA6IDA7Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBUaHJlYWRTcGVjaWZpYzxUPjo6c2V0
KFQqIHB0cikKLXsKLSAgICBBU1NFUlQoIWdldCgpKTsKLSAgICBEYXRhKiBkYXRhID0gbmV3IERh
dGEocHRyLCB0aGlzKTsKLSAgICBtX2tleS5zZXRMb2NhbERhdGEoZGF0YSk7Ci19Ci0KICNlbGlm
IFBMQVRGT1JNKEdUSykKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTI1MCwxOCArMjIxLDEy
IEBAIGlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpkZXN0cm95KHZvaWQqIHB0cikKICAg
ICAvLyBTZWUgY29tbWVudCBhcyBhYm92ZQogICAgIGdfc3RhdGljX3ByaXZhdGVfc2V0KCZkYXRh
LT5vd25lci0+bV9rZXksIGRhdGEsIDApOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oUVQpCi0gICAg
Ly8gU2VlIGNvbW1lbnQgYXMgYWJvdmUKLSAgICBkYXRhLT5vd25lci0+bV9rZXkuc2V0TG9jYWxE
YXRhKGRhdGEpOwotI2VuZGlmCiAKICAgICBkYXRhLT52YWx1ZS0+flQoKTsKICAgICBmYXN0RnJl
ZShkYXRhLT52YWx1ZSk7CiAKICNpZiBVU0UoUFRIUkVBRFMpCiAgICAgcHRocmVhZF9zZXRzcGVj
aWZpYyhkYXRhLT5vd25lci0+bV9rZXksIDApOwotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgLy8g
RG8gbm90aGluZyBoZXJlCiAjZWxpZiBQTEFURk9STShHVEspCiAgICAgZ19zdGF0aWNfcHJpdmF0
ZV9zZXQoJmRhdGEtPm93bmVyLT5tX2tleSwgMCwgMCk7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAt
MjcwLDkgKzIzNSw3IEBAIGlubGluZSB2b2lkIFRocmVhZFNwZWNpZmljPFQ+OjpkZXN0cm95KHZv
aWQqIHB0cikKICNlcnJvciBUaHJlYWRTcGVjaWZpYyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHRo
aXMgcGxhdGZvcm0uCiAjZW5kaWYKIAotI2lmICFQTEFURk9STShRVCkKICAgICBkZWxldGUgZGF0
YTsKLSNlbmRpZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAppbmRleCA5ZjI2M2FlLi4xYmVkNWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMu
aApAQCAtNDYsMTQgKzQ2LDYgQEAKICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKFFUKQotI2luY2x1ZGUgPHFnbG9iYWwuaD4KLVFUX0JFR0lOX05BTUVTUEFDRQot
Y2xhc3MgUU11dGV4OwotY2xhc3MgUVdhaXRDb25kaXRpb247Ci1RVF9FTkRfTkFNRVNQQUNFCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdURiB7CiAKICNpZiBVU0UoUFRIUkVBRFMpCkBAIC02NCwxMCAr
NTYsNiBAQCB0eXBlZGVmIHB0aHJlYWRfcndsb2NrX3QgUGxhdGZvcm1SZWFkV3JpdGVMb2NrOwog
dHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVJlYWRXcml0ZUxvY2s7CiAjZW5kaWYKIHR5cGVkZWYgcHRo
cmVhZF9jb25kX3QgUGxhdGZvcm1Db25kaXRpb247Ci0jZWxpZiBQTEFURk9STShRVCkKLXR5cGVk
ZWYgUVRfUFJFUEVORF9OQU1FU1BBQ0UoUU11dGV4KSogUGxhdGZvcm1NdXRleDsKLXR5cGVkZWYg
dm9pZCogUGxhdGZvcm1SZWFkV3JpdGVMb2NrOyAvLyBGSVhNRTogSW1wbGVtZW50LgotdHlwZWRl
ZiBRVF9QUkVQRU5EX05BTUVTUEFDRShRV2FpdENvbmRpdGlvbikqIFBsYXRmb3JtQ29uZGl0aW9u
OwogI2VsaWYgT1MoV0lORE9XUykKIHN0cnVjdCBQbGF0Zm9ybU11dGV4IHsKICAgICBDUklUSUNB
TF9TRUNUSU9OIG1faW50ZXJuYWxNdXRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvcXQvTWFpblRocmVhZFF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
cXQvTWFpblRocmVhZFF0LmNwcAppbmRleCBiNDJjM2FmLi42MDZhNzE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3F0L01haW5UaHJlYWRRdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9NYWluVGhyZWFkUXQuY3BwCkBAIC02NSwyMSArNjUsMTIg
QEAgUV9HTE9CQUxfU1RBVElDKE1haW5UaHJlYWRJbnZva2VyLCB3ZWJraXRfbWFpbl90aHJlYWRf
aW52b2tlcikKIAogdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKIHsKKyAgICB3
ZWJraXRfbWFpbl90aHJlYWRfaW52b2tlcigpOwogfQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hG
dW5jdGlvbnNPbk1haW5UaHJlYWQoKQogewotICAgIFFPYmplY3QqIGludm9rZXIgPSB3ZWJraXRf
bWFpbl90aHJlYWRfaW52b2tlcigpOwotICAgIGlmIChpbnZva2VyLT50aHJlYWQoKSAhPSBRQ29y
ZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLT50aHJlYWQoKSkgewotICAgICAgICBBU1NFUlQoaW52
b2tlci0+dGhyZWFkKCkgPT0gUVRocmVhZDo6Y3VycmVudFRocmVhZCgpKTsKLSAgICAgICAgaW52
b2tlci0+bW92ZVRvVGhyZWFkKFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlKCktPnRocmVhZCgp
KTsKLSAgICB9Ci0gICAgUUNvcmVBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KGludm9rZXIsIG5ldyBR
RXZlbnQoc3RhdGljX2Nhc3Q8UUV2ZW50OjpUeXBlPihzX21haW5UaHJlYWRJbnZva2VyRXZlbnRU
eXBlKSkpOwotfQotCi1ib29sIGlzTWFpblRocmVhZCgpCi17Ci0gICAgcmV0dXJuIFFUaHJlYWQ6
OmN1cnJlbnRUaHJlYWQoKSA9PSBRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSgpLT50aHJlYWQo
KTsKKyAgICBRQ29yZUFwcGxpY2F0aW9uOjpwb3N0RXZlbnQod2Via2l0X21haW5fdGhyZWFkX2lu
dm9rZXIoKSwgbmV3IFFFdmVudChzdGF0aWNfY2FzdDxRRXZlbnQ6OlR5cGU+KHNfbWFpblRocmVh
ZEludm9rZXJFdmVudFR5cGUpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9xdC9UaHJlYWRpbmdRdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3F0L1RocmVhZGluZ1F0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNDYzMWI3Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3F0L1RocmVhZGluZ1F0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAwNyBKdXN0aW4gSGF5Z29vZCAoamhheWdvb2RAcmVha3RpeC5j
b20pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaHJlYWRpbmcuaCIKLQotI2luY2x1
ZGUgIkRhdGVNYXRoLmgiCi0jaW5jbHVkZSAiZHRvYS5oIgotI2luY2x1ZGUgIkN1cnJlbnRUaW1l
LmgiCi0jaW5jbHVkZSAiSGFzaE1hcC5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLSNpbmNs
dWRlICJSYW5kb21OdW1iZXJTZWVkLmgiCi0jaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4K
LQotI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UU11dGV4PgotI2luY2x1
ZGUgPFFUaHJlYWQ+Ci0jaW5jbHVkZSA8UVdhaXRDb25kaXRpb24+Ci0KLW5hbWVzcGFjZSBXVEYg
ewotCi1jbGFzcyBUaHJlYWRQcml2YXRlIDogcHVibGljIFFUaHJlYWQgewotcHVibGljOgotICAg
IFRocmVhZFByaXZhdGUoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7Ci0g
ICAgdm9pZCBydW4oKTsKLSAgICB2b2lkKiBnZXRSZXR1cm5WYWx1ZSgpIHsgcmV0dXJuIG1fcmV0
dXJuVmFsdWU7IH0KLXByaXZhdGU6Ci0gICAgdm9pZCogbV9kYXRhOwotICAgIFRocmVhZEZ1bmN0
aW9uIG1fZW50cnlQb2ludDsKLSAgICB2b2lkKiBtX3JldHVyblZhbHVlOwotfTsKLQotVGhyZWFk
UHJpdmF0ZTo6VGhyZWFkUHJpdmF0ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBk
YXRhKSAKLSAgICA6IG1fZGF0YShkYXRhKQotICAgICwgbV9lbnRyeVBvaW50KGVudHJ5UG9pbnQp
Ci0gICAgLCBtX3JldHVyblZhbHVlKDApCi17Ci19Ci0KLXZvaWQgVGhyZWFkUHJpdmF0ZTo6cnVu
KCkKLXsKLSAgICBtX3JldHVyblZhbHVlID0gbV9lbnRyeVBvaW50KG1fZGF0YSk7Ci19Ci0KLWNs
YXNzIFRocmVhZE1vbml0b3IgOiBwdWJsaWMgUU9iamVjdCB7Ci0gICAgUV9PQkpFQ1QKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgVGhyZWFkTW9uaXRvciAqIGluc3RhbmNlKCkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBUaHJlYWRNb25pdG9yICppbnN0YW5jZSA9IG5ldyBUaHJlYWRNb25pdG9yKCk7Ci0g
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKLSAgICB9Ci0KLXB1YmxpYyBRX1NMT1RTOgotICAgIHZv
aWQgdGhyZWFkRmluaXNoZWQoKQotICAgIHsKLSAgICAgICAgc2VuZGVyKCktPmRlbGV0ZUxhdGVy
KCk7Ci0gICAgfQotfTsKLQotc3RhdGljIE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleDsKLQotc3RhdGljIE11dGV4JiB0aHJlYWRNYXBNdXRleCgpCi17Ci0gICAgc3RhdGlj
IE11dGV4IG11dGV4OwotICAgIHJldHVybiBtdXRleDsKLX0KLQotc3RhdGljIEhhc2hNYXA8VGhy
ZWFkSWRlbnRpZmllciwgUVRocmVhZCo+JiB0aHJlYWRNYXAoKQotewotICAgIHN0YXRpYyBIYXNo
TWFwPFRocmVhZElkZW50aWZpZXIsIFFUaHJlYWQqPiBtYXA7Ci0gICAgcmV0dXJuIG1hcDsKLX0K
LQotc3RhdGljIFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckJ5UXRocmVhZEhhbmRsZShRVGhy
ZWFkKiYgdGhyZWFkKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKLQotICAgIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwgUVRocmVhZCo+OjppdGVyYXRvciBp
ID0gdGhyZWFkTWFwKCkuYmVnaW4oKTsKLSAgICBmb3IgKDsgaSAhPSB0aHJlYWRNYXAoKS5lbmQo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChpLT5zZWNvbmQgPT0gdGhyZWFkKQotICAgICAgICAgICAg
cmV0dXJuIGktPmZpcnN0OwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgVGhy
ZWFkSWRlbnRpZmllciBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkKFFUaHJlYWQqJiB0aHJl
YWQpCi17Ci0gICAgQVNTRVJUKCFpZGVudGlmaWVyQnlRdGhyZWFkSGFuZGxlKHRocmVhZCkpOwot
Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHRocmVhZE1hcE11dGV4KCkpOwotCi0gICAgc3RhdGlj
IFRocmVhZElkZW50aWZpZXIgaWRlbnRpZmllckNvdW50ID0gMTsKLQotICAgIHRocmVhZE1hcCgp
LmFkZChpZGVudGlmaWVyQ291bnQsIHRocmVhZCk7Ci0KLSAgICByZXR1cm4gaWRlbnRpZmllckNv
dW50Kys7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsZWFyVGhyZWFkRm9ySWRlbnRpZmllcihUaHJlYWRJ
ZGVudGlmaWVyIGlkKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tlcih0aHJlYWRNYXBNdXRleCgp
KTsKLQotICAgIEFTU0VSVCh0aHJlYWRNYXAoKS5jb250YWlucyhpZCkpOwotCi0gICAgdGhyZWFk
TWFwKCkucmVtb3ZlKGlkKTsKLX0KLQotc3RhdGljIFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZp
ZXIoVGhyZWFkSWRlbnRpZmllciBpZCkKLXsKLSAgICBNdXRleExvY2tlciBsb2NrZXIodGhyZWFk
TWFwTXV0ZXgoKSk7Ci0KLSAgICByZXR1cm4gdGhyZWFkTWFwKCkuZ2V0KGlkKTsKLX0KLQotdm9p
ZCBpbml0aWFsaXplVGhyZWFkaW5nKCkKLXsKLSAgICBpZiAoIWF0b21pY2FsbHlJbml0aWFsaXpl
ZFN0YXRpY011dGV4KSB7Ci0gICAgICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBub3Qg
Y29uc3RydWN0IGl0cyBzdGF0aWMgc3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAotICAg
ICAgICAvLyBzbyBlbnN1cmUgaXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAg
ICAgICBTdHJpbmdJbXBsOjplbXB0eSgpOwotICAgICAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRT
dGF0aWNNdXRleCA9IG5ldyBNdXRleDsKLSAgICAgICAgdGhyZWFkTWFwTXV0ZXgoKTsKLSAgICAg
ICAgaW5pdGlhbGl6ZVJhbmRvbU51bWJlckdlbmVyYXRvcigpOwotICAgICAgICB3dGZUaHJlYWRE
YXRhKCk7Ci0gICAgICAgIHNfZHRvYVA1TXV0ZXggPSBuZXcgTXV0ZXg7Ci0gICAgICAgIGluaXRp
YWxpemVEYXRlcygpOwotICAgIH0KLX0KLQotdm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXgoKQotewotICAgIEFTU0VSVChhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleCk7Ci0gICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgtPmxvY2soKTsKLX0K
LQotdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCi17Ci0gICAg
YXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQs
IHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqKQotewotICAgIFRocmVhZFByaXZhdGUqIHRocmVhZCA9
IG5ldyBUaHJlYWRQcml2YXRlKGVudHJ5UG9pbnQsIGRhdGEpOwotICAgIGlmICghdGhyZWFkKSB7
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQgYXQgZW50cnkgcG9p
bnQgJXAgd2l0aCBkYXRhICVwIiwgZW50cnlQb2ludCwgZGF0YSk7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQotICAgIFFPYmplY3Q6OmNvbm5lY3QodGhyZWFkLCBTSUdOQUwoZmluaXNoZWQo
KSksIFRocmVhZE1vbml0b3I6Omluc3RhbmNlKCksIFNMT1QodGhyZWFkRmluaXNoZWQoKSkpOwot
Ci0gICAgdGhyZWFkLT5zdGFydCgpOwotCi0gICAgUVRocmVhZCogdGhyZWFkUmVmID0gc3RhdGlj
X2Nhc3Q8UVRocmVhZCo+KHRocmVhZCk7Ci0KLSAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmll
ckZvclRocmVhZCh0aHJlYWRSZWYpOwotfQotCi12b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFk
SW50ZXJuYWwoY29uc3QgY2hhciopCi17Ci19Ci0KLWludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElELCB2b2lkKiogcmVzdWx0KQotewotICAgIEFTU0VS
VCh0aHJlYWRJRCk7Ci0KLSAgICBRVGhyZWFkKiB0aHJlYWQgPSB0aHJlYWRGb3JJZGVudGlmaWVy
KHRocmVhZElEKTsKLQotICAgIGJvb2wgcmVzID0gdGhyZWFkLT53YWl0KCk7Ci0KLSAgICBjbGVh
clRocmVhZEZvcklkZW50aWZpZXIodGhyZWFkSUQpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAg
ICpyZXN1bHQgPSBzdGF0aWNfY2FzdDxUaHJlYWRQcml2YXRlKj4odGhyZWFkKS0+Z2V0UmV0dXJu
VmFsdWUoKTsKLQotICAgIHJldHVybiAhcmVzOwotfQotCi12b2lkIGRldGFjaFRocmVhZChUaHJl
YWRJZGVudGlmaWVyIHRocmVhZElEKQotewotICAgIEFTU0VSVCh0aHJlYWRJRCk7Ci0gICAgY2xl
YXJUaHJlYWRGb3JJZGVudGlmaWVyKHRocmVhZElEKTsKLX0KLQotVGhyZWFkSWRlbnRpZmllciBj
dXJyZW50VGhyZWFkKCkKLXsKLSAgICBRVGhyZWFkKiBjdXJyZW50VGhyZWFkID0gUVRocmVhZDo6
Y3VycmVudFRocmVhZCgpOwotICAgIGlmIChUaHJlYWRJZGVudGlmaWVyIGlkID0gaWRlbnRpZmll
ckJ5UXRocmVhZEhhbmRsZShjdXJyZW50VGhyZWFkKSkKLSAgICAgICAgcmV0dXJuIGlkOwotICAg
IHJldHVybiBlc3RhYmxpc2hJZGVudGlmaWVyRm9yVGhyZWFkKGN1cnJlbnRUaHJlYWQpOwotfQot
Ci12b2lkIHlpZWxkKCkKLXsKLSAgICBRVGhyZWFkOjp5aWVsZEN1cnJlbnRUaHJlYWQoKTsKLX0K
LQotTXV0ZXg6Ok11dGV4KCkKLSAgICA6IG1fbXV0ZXgobmV3IFFNdXRleCgpKQotewotfQotCi1N
dXRleDo6fk11dGV4KCkKLXsKLSAgICBkZWxldGUgbV9tdXRleDsKLX0KLQotdm9pZCBNdXRleDo6
bG9jaygpCi17Ci0gICAgbV9tdXRleC0+bG9jaygpOwotfQotCi1ib29sIE11dGV4Ojp0cnlMb2Nr
KCkKLXsKLSAgICByZXR1cm4gbV9tdXRleC0+dHJ5TG9jaygpOwotfQotCi12b2lkIE11dGV4Ojp1
bmxvY2soKQotewotICAgIG1fbXV0ZXgtPnVubG9jaygpOwotfQotCi1UaHJlYWRDb25kaXRpb246
OlRocmVhZENvbmRpdGlvbigpCi0gICAgOiBtX2NvbmRpdGlvbihuZXcgUVdhaXRDb25kaXRpb24o
KSkKLXsKLX0KLQotVGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkKLXsKLSAgICBk
ZWxldGUgbV9jb25kaXRpb247Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjp3YWl0KE11dGV4
JiBtdXRleCkKLXsKLSAgICBtX2NvbmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCkpOwotfQotCi1i
b29sIFRocmVhZENvbmRpdGlvbjo6dGltZWRXYWl0KE11dGV4JiBtdXRleCwgZG91YmxlIGFic29s
dXRlVGltZSkKLXsKLSAgICBkb3VibGUgY3VycmVudFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1lKCk7
Ci0KLSAgICAvLyBUaW1lIGlzIGluIHRoZSBwYXN0IC0gcmV0dXJuIGltbWVkaWF0ZWx5LgotICAg
IGlmIChhYnNvbHV0ZVRpbWUgPCBjdXJyZW50VGltZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gVGltZSBpcyB0b28gZmFyIGluIHRoZSBmdXR1cmUgKGFuZCB3b3VsZCBvdmVyZmxv
dyB1bnNpZ25lZCBsb25nKSAtIHdhaXQgZm9yZXZlci4KLSAgICBpZiAoYWJzb2x1dGVUaW1lIC0g
Y3VycmVudFRpbWUgPiBzdGF0aWNfY2FzdDxkb3VibGU+KElOVF9NQVgpIC8gMTAwMC4wKSB7Ci0g
ICAgICAgIHdhaXQobXV0ZXgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBk
b3VibGUgaW50ZXJ2YWxNaWxsaXNlY29uZHMgPSAoYWJzb2x1dGVUaW1lIC0gY3VycmVudFRpbWUp
ICogMTAwMC4wOwotICAgIHJldHVybiBtX2NvbmRpdGlvbi0+d2FpdChtdXRleC5pbXBsKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGludGVydmFsTWlsbGlzZWNvbmRzKSk7Ci19Ci0KLXZv
aWQgVGhyZWFkQ29uZGl0aW9uOjpzaWduYWwoKQotewotICAgIG1fY29uZGl0aW9uLT53YWtlT25l
KCk7Ci19Ci0KLXZvaWQgVGhyZWFkQ29uZGl0aW9uOjpicm9hZGNhc3QoKQotewotICAgIG1fY29u
ZGl0aW9uLT53YWtlQWxsKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2luY2x1
ZGUgIlRocmVhZGluZ1F0Lm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvd3RmLnBybyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnBybwppbmRleCAyNTJl
MzU0Li4zZGYzMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5w
cm8KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJvCkBAIC0xNTcsNiArMTU3
LDggQEAgSEVBREVSUyArPSBcCiAgICAgVk1UYWdzLmggXAogICAgIFdURlRocmVhZERhdGEuaAog
Cit1bml4OiBIRUFERVJTICs9IFRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaAorCiBTT1VS
Q0VTICs9IFwKICAgICBBc3NlcnRpb25zLmNwcCBcCiAgICAgQml0VmVjdG9yLmNwcCBcCkBAIC0x
ODUsNyArMTg3LDYgQEAgU09VUkNFUyArPSBcCiAgICAgT1NSYW5kb21Tb3VyY2UuY3BwIFwKICAg
ICBxdC9NYWluVGhyZWFkUXQuY3BwIFwKICAgICBxdC9TdHJpbmdRdC5jcHAgXAotICAgIHF0L1Ro
cmVhZGluZ1F0LmNwcCBcCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkLmNwcCBcCiAgICAgUGFn
ZUJsb2NrLmNwcCBcCiAgICAgUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgXApAQCAtMjA3LDggKzIw
OCwxNSBAQCBTT1VSQ0VTICs9IFwKICAgICB1bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAgXAog
ICAgIHVuaWNvZGUvVVRGOC5jcHAKIAotdW5peDogU09VUkNFUyArPSBPU0FsbG9jYXRvclBvc2l4
LmNwcAotd2luKnx3aW5jZSo6IFNPVVJDRVMgKz0gT1NBbGxvY2F0b3JXaW4uY3BwCit1bml4OiBT
T1VSQ0VTICs9IFwKKyAgICBPU0FsbG9jYXRvclBvc2l4LmNwcCBcCisgICAgVGhyZWFkSWRlbnRp
ZmllckRhdGFQdGhyZWFkcy5jcHAgXAorICAgIFRocmVhZGluZ1B0aHJlYWRzLmNwcAorCit3aW4q
fHdpbmNlKjogU09VUkNFUyArPSBcCisgICAgT1NBbGxvY2F0b3JXaW4uY3BwIFwKKyAgICBUaHJl
YWRTcGVjaWZpY1dpbi5jcHAgXAorICAgIFRocmVhZGluZ1dpbi5jcHAKIAogKnNoNCogewogICAg
IFFNQUtFX0NYWEZMQUdTICs9IC1taWVlZSAtdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJlMGI3ZjQuLmQ0ODY4
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMS0yOCAgQW5kcmV3IFdhc29u
ICA8cmVjdGFsb2dpY0ByZWN0YWxvZ2ljLmNvbT4KKworICAgICAgICBSZXBsYWNlIFF0IFFUaHJl
YWQgdGhyZWFkaW5nIGJhY2stZW5kIHdpdGggcHRocmVhZC9XaW4zMiB0aHJlYWRpbmcgYmFjay1l
bmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQg
dG8gaW5jbHVkZSBxZ2xvYmFsLmggc2luY2UgVGhyZWFkaW5nUHJpbWl0aXZlcy5oIG5vIGxvbmdl
ciBkb2VzLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5o
OgorCiAyMDExLTExLTI4ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBJbnNwZWN0b3JDU1NBZ2VudDogUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBpbmxpbmVTdHls
ZUVsZW1lbnQoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAppbmRleCBhYTFlYmI5Li5mMmIxMGM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPHFnbG9iYWwu
aD4KIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKIGNsYXNzIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCBhZmMyYzYwLi4yZTFi
ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAotI2luY2x1ZGUgInF3ZWJl
bGVtZW50X3AuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZS5o
IgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKQEAgLTc2LDEyICs3NSwxMiBAQAogI2luY2x1ZGUg
Ikhhc2hNYXAuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW1hZ2Uu
aCIKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50
UXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yU2VydmVyUXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCkBAIC05Myw3ICs5Miw2IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5j
bHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llc1F0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Ub3Vj
aEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1
Z2luRGF0YWJhc2UuaCIKQEAgLTEwNywyMCArMTA1LDE0IEBACiAjaW5jbHVkZSAiU2NoZW1lUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgotI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpZiBkZWZpbmVkIFFfT1NfV0lOMzIKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjZW5kaWYg
Ly8gUV9PU19XSU4zMgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlV0aWxz
UXQuaCIKLSNpZiBVU0UoUVRLSVQpCi0jaW5jbHVkZSAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCi0j
ZW5kaWYKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldvcmtlclRocmVh
ZC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgotI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8
UUJhc2ljVGltZXI+CkBAIC0zMTgsMTcgKzMxMCw3IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBh
Z2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICAsIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5KGZh
bHNlKQogICAgICwgbV9sYXN0RHJvcEFjdGlvbihRdDo6SWdub3JlQWN0aW9uKQogewotICAgIFdl
YkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2FyeSgpOwotICAgIFNjcmlw
dENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7Ci0gICAgV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBv
bGljeShXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRT
dWJzdGl0dXRlRGF0YSk7Ci0KLSAgICBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6aW5pdGlhbGl6ZSgp
OwotICAgIFF0V2ViRWxlbWVudFJ1bnRpbWU6OmluaXRpYWxpemUoKTsKLQotI2lmIFVTRShRVEtJ
VCkKLSAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwotI2VuZGlmCisgICAgV2ViQ29y
ZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwogCiAgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNs
aWVudHM7CiAgICAgcGFnZUNsaWVudHMuY2hyb21lQ2xpZW50ID0gbmV3IENocm9tZUNsaWVudFF0
KHEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMzQzMDliMi4uODll
OTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0zMSw2ICszMSw3
IEBACiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKICNpbmNsdWRlICJJY29uRGF0YWJhc2VDbGll
bnRRdC5oIgogI2VuZGlmCisjaW5jbHVkZSAiSW5pdFdlYkNvcmVRdC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
Mjc4LDggKzI3OSwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKIFFXZWJT
ZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiB7CiAgICAgc3RhdGljIFFX
ZWJTZXR0aW5ncyogZ2xvYmFsID0gMDsKLSAgICBpZiAoIWdsb2JhbCkKKyAgICBpZiAoIWdsb2Jh
bCkgeworICAgICAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgICAgIGds
b2JhbCA9IG5ldyBRV2ViU2V0dGluZ3M7CisgICAgfQogICAgIHJldHVybiBnbG9iYWw7CiB9CiAK
QEAgLTY0OCw2ICs2NTEsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6ZGVmYXVsdFRleHRFbmNv
ZGluZygpIGNvbnN0CiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgo
Y29uc3QgUVN0cmluZyYgcGF0aCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0
KCk7CiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBJY29u
RGF0YWJhc2VDbGllbnRRdCBpcyBpbnN0YW50aWF0ZWQuCiAgICAgV2ViQ29yZTo6SWNvbkRhdGFi
YXNlQ2xpZW50UXQ6Omluc3RhbmNlKCk7CkBAIC02NzQsNiArNjc4LDcgQEAgdm9pZCBRV2ViU2V0
dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKICovCiBRU3Ry
aW5nIFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0aCgpCiB7CisgICAgV2ViQ29yZTo6aW5p
dGlhbGl6ZVdlYkNvcmVRdCgpOwogICAgIGlmIChXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc0Vu
YWJsZWQoKSAmJiBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5pc09wZW4oKSkKICAgICAgICAgcmV0
dXJuIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmRhdGFiYXNlUGF0aCgpOwogICAgIGVsc2UKQEAg
LTY4NSw2ICs2OTAsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0aCgp
CiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKCkKIHsKKyAgICBXZWJD
b3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgaWYgKFdlYkNvcmU6Omljb25EYXRhYmFz
ZSgpLmlzRW5hYmxlZCgpICYmIFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLmlzT3BlbigpKQogICAg
ICAgICBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5yZW1vdmVBbGxJY29ucygpOwogfQpAQCAtNzAx
LDYgKzcwNyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiAqLwog
UUljb24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwmIHVybCkKIHsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgV2ViQ29yZTo6SW1hZ2UqIGltYWdl
ID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChXZWJD
b3JlOjpLVVJMKHVybCkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CiAgICAgaWYgKCFpbWFnZSkKQEAgLTcxOCw2ICs3
MjUsNyBAQCBRSWNvbiBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQog
CiBRV2ViUGx1Z2luRGF0YWJhc2UgKlFXZWJTZXR0aW5nczo6cGx1Z2luRGF0YWJhc2UoKQogewor
ICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICBzdGF0aWMgUVdlYlBsdWdp
bkRhdGFiYXNlKiBkYXRhYmFzZSA9IDA7CiAgICAgaWYgKCFkYXRhYmFzZSkKICAgICAgICAgZGF0
YWJhc2UgPSBuZXcgUVdlYlBsdWdpbkRhdGFiYXNlKCk7CkBAIC03NTEsNiArNzU5LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWMoUVdlYlNldHRpbmdzOjpX
ZWJHcmFwaGljIHR5cGUpCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMoV2Vi
R3JhcGhpYyB0eXBlLCBjb25zdCBRUGl4bWFwJiBncmFwaGljKQogeworICAgIFdlYkNvcmU6Omlu
aXRpYWxpemVXZWJDb3JlUXQoKTsKICAgICBXZWJDb3JlOjpJbWFnZTo6c2V0UGxhdGZvcm1SZXNv
dXJjZShyZXNvdXJjZU5hbWVGb3JXZWJHcmFwaGljKHR5cGUpLCBncmFwaGljKTsKIH0KIApAQCAt
NzYyLDYgKzc3MSw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRXZWJHcmFwaGljKFdlYkdyYXBo
aWMgdHlwZSwgY29uc3QgUVBpeG1hcCYgZ3JhcGhpYykKICovCiBRUGl4bWFwIFFXZWJTZXR0aW5n
czo6d2ViR3JhcGhpYyhXZWJHcmFwaGljIHR5cGUpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6
ZVdlYkNvcmVRdCgpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gaW1nID0gV2ViQ29yZTo6
SW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKHJlc291cmNlTmFtZUZvcldlYkdyYXBoaWModHlw
ZSkpOwogICAgIGlmICghaW1nKQogICAgICAgICByZXR1cm4gUVBpeG1hcCgpOwpAQCAtNzc5LDYg
Kzc4OSw3IEBAIFFQaXhtYXAgUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKFdlYkdyYXBoaWMgdHlw
ZSkKICAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFyTWVtb3J5Q2FjaGVzKCkKIHsKKyAgICBX
ZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgLy8gVHVybiB0aGUgY2FjaGUgb24g
YW5kIG9mZi4gIERpc2FibGluZyB0aGUgb2JqZWN0IGNhY2hlIHdpbGwgcmVtb3ZlIGFsbAogICAg
IC8vIHJlc291cmNlcyBmcm9tIHRoZSBjYWNoZS4gIFRoZXkgbWF5IHN0aWxsIGxpdmUgb24gaWYg
dGhleSBhcmUgcmVmZXJlbmNlZAogICAgIC8vIGJ5IHNvbWUgV2ViIHBhZ2UgdGhvdWdoLgpAQCAt
ODIyLDYgKzgzMyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hl
KGludCBwYWdlcykKICovCiBpbnQgUVdlYlNldHRpbmdzOjptYXhpbXVtUGFnZXNJbkNhY2hlKCkK
IHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OnBhZ2VDYWNoZSgpLT5jYXBhY2l0eSgpOwogfQogCkBAIC04NDMsNiArODU1LDcgQEAgaW50
IFFXZWJTZXR0aW5nczo6bWF4aW11bVBhZ2VzSW5DYWNoZSgpCiAqLwogdm9pZCBRV2ViU2V0dGlu
Z3M6OnNldE9iamVjdENhY2hlQ2FwYWNpdGllcyhpbnQgY2FjaGVNaW5EZWFkQ2FwYWNpdHksIGlu
dCBjYWNoZU1heERlYWQsIGludCB0b3RhbENhcGFjaXR5KQogeworICAgIFdlYkNvcmU6OmluaXRp
YWxpemVXZWJDb3JlUXQoKTsKICAgICBib29sIGRpc2FibGVDYWNoZSA9ICFjYWNoZU1pbkRlYWRD
YXBhY2l0eSAmJiAhY2FjaGVNYXhEZWFkICYmICF0b3RhbENhcGFjaXR5OwogICAgIFdlYkNvcmU6
Om1lbW9yeUNhY2hlKCktPnNldERpc2FibGVkKGRpc2FibGVDYWNoZSk7CiAKQEAgLTk2OCw2ICs5
ODEsNyBAQCB2b2lkIFFXZWJTZXR0aW5nczo6cmVzZXRBdHRyaWJ1dGUoV2ViQXR0cmlidXRlIGF0
dHIpCiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldE9mZmxpbmVTdG9yYWdlUGF0aChjb25zdCBR
U3RyaW5nJiBwYXRoKQogeworICAgIFdlYkNvcmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6dHJh
Y2tlcigpLnNldERhdGFiYXNlRGlyZWN0b3J5UGF0aChwYXRoKTsKICNlbmRpZgpAQCAtOTgzLDYg
Kzk5Nyw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lU3RvcmFnZVBhdGgoY29uc3Qg
UVN0cmluZyYgcGF0aCkKICovCiBRU3RyaW5nIFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQ
YXRoKCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICByZXR1cm4gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkuZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CiAjZWxzZQpAQCAtMTAzNSw2ICsxMDUwLDcg
QEAgcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VEZWZhdWx0UXVvdGEoKQogKi8K
IHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgoY29u
c3QgUVN0cmluZyYgcGF0aCkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7
CiAgICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuc2V0Q2FjaGVEaXJlY3RvcnkocGF0aCk7CiB9
CiAKQEAgLTEwNDgsNiArMTA2NCw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZVBhdGgoY29uc3QgUVN0cmluZyYgcGF0aCkKICovCiBRU3RyaW5nIFFX
ZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIHsKKyAgICBXZWJD
b3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNhY2hlU3Rv
cmFnZSgpLmNhY2hlRGlyZWN0b3J5KCk7CiB9CiAKQEAgLTEwNTksNiArMTA3Niw3IEBAIFFTdHJp
bmcgUVdlYlNldHRpbmdzOjpvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVBhdGgoKQogKi8KIHZv
aWQgUVdlYlNldHRpbmdzOjpzZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHFpbnQ2
NCBtYXhpbXVtU2l6ZSkKIHsKKyAgICBXZWJDb3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7CiAg
ICAgV2ViQ29yZTo6Y2FjaGVTdG9yYWdlKCkuZW1wdHkoKTsKICAgICBXZWJDb3JlOjpjYWNoZVN0
b3JhZ2UoKS52YWN1dW1EYXRhYmFzZUZpbGUoKTsKICAgICBXZWJDb3JlOjpjYWNoZVN0b3JhZ2Uo
KS5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSk7CkBAIC0xMDcxLDYgKzEwODksNyBAQCB2b2lk
IFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YShxaW50NjQg
bWF4aW11bVNpemUpCiAqLwogcWludDY0IFFXZWJTZXR0aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0
aW9uQ2FjaGVRdW90YSgpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwog
ICAgIHJldHVybiBXZWJDb3JlOjpjYWNoZVN0b3JhZ2UoKS5tYXhpbXVtU2l6ZSgpOwogfQogCkBA
IC0xMTE5LDYgKzExMzgsNyBAQCBRU3RyaW5nIFFXZWJTZXR0aW5nczo6bG9jYWxTdG9yYWdlUGF0
aCgpIGNvbnN0CiAqLwogdm9pZCBRV2ViU2V0dGluZ3M6OmVuYWJsZVBlcnNpc3RlbnRTdG9yYWdl
KGNvbnN0IFFTdHJpbmcmIHBhdGgpCiB7CisgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVR
dCgpOwogI2lmbmRlZiBRVF9OT19ERVNLVE9QU0VSVklDRVMKICAgICBRU3RyaW5nIHN0b3JhZ2VQ
YXRoOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDMyNzYwZDYuLjIyNDVkYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMjggIEFuZHJldyBXYXNvbiAgPHJlY3RhbG9naWNA
cmVjdGFsb2dpYy5jb20+CisKKyAgICAgICAgUmVwbGFjZSBRdCBRVGhyZWFkIHRocmVhZGluZyBi
YWNrLWVuZCB3aXRoIHB0aHJlYWQvV2luMzIgdGhyZWFkaW5nIGJhY2stZW5kcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxNTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0IFdlYkNvcmUgaW5p
dGlhbGl6YXRpb24gb3V0IG9mIFFXZWJQYWdlUHJpdmF0ZSBpbnRvIGEKKyAgICAgICAgc2VwYXJh
dGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFRoaXMgYWxzbyBuZWVkcyB0byBiZSBjYWxsZWQK
KyAgICAgICAgZnJvbSBwdWJsaWMgc3RhdGljIFFXZWJTZXR0aW5ncyBtZXRob2RzIHRoYXQgY2Fs
bCBpbnRvIFdlYkNvcmUsCisgICAgICAgIHNpbmNlIHRob3NlIGNhbiBiZSB1c2VkIGJlZm9yZSBh
IFFXZWJQYWdlIGhhcyBiZWVuIGNvbnN0cnVjdGVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdl
LmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAg
ICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6Z2xvYmFs
U2V0dGluZ3MpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpzZXRJY29uRGF0YWJhc2VQYXRoKToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNvbkRhdGFiYXNlUGF0aCk6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6OmNsZWFySWNvbkRhdGFiYXNlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6aWNv
bkZvclVybCk6CisgICAgICAgIChRV2ViU2V0dGluZ3M6OnNldFdlYkdyYXBoaWMpOgorICAgICAg
ICAoUVdlYlNldHRpbmdzOjp3ZWJHcmFwaGljKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6Y2xl
YXJNZW1vcnlDYWNoZXMpOgorICAgICAgICAoUVdlYlNldHRpbmdzOjptYXhpbXVtUGFnZXNJbkNh
Y2hlKToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2JqZWN0Q2FjaGVDYXBhY2l0aWVzKToK
KyAgICAgICAgKFFXZWJTZXR0aW5nczo6c2V0T2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAg
KFFXZWJTZXR0aW5nczo6b2ZmbGluZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0aW5n
czo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAgKFFXZWJTZXR0
aW5nczo6c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YSk6CisgICAgICAgIChRV2Vi
U2V0dGluZ3M6Om9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEpOgorICAgICAgICAoUVdl
YlNldHRpbmdzOjplbmFibGVQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlh
bGl6ZVdlYkNvcmVRdCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5o
OiBBZGRlZC4KKwogMjAxMS0xMS0yOCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBu
b2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBCdWlsZCBzeXN0ZW0gZml4ZXMgYWdhaW5zdCBWOC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVR
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2OTVmNmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3Bw
CkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBIZXdsZXR0LVBhY2thcmQg
RGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgSGV3bGV0dC1QYWNrYXJkIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbml0V2ViQ29yZVF0LmgiCisKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKKyNpZiBVU0Uo
UVRLSVQpCisjaW5jbHVkZSAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKworI2luY2x1
ZGUgInF3ZWJlbGVtZW50X3AuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordm9pZCBpbml0aWFsaXplV2ViQ29yZVF0KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0
aWFsaXplZCA9IGZhbHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV2ViQ29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7Cisg
ICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOworICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2V0TG9j
YWxMb2FkUG9saWN5KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JM
b2NhbEFuZFN1YnN0aXR1dGVEYXRhKTsKKworICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppbml0
aWFsaXplKCk7CisgICAgUXRXZWJFbGVtZW50UnVudGltZTo6aW5pdGlhbGl6ZSgpOworCisjaWYg
VVNFKFFUS0lUKQorICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CisjZW5kaWYKKwor
ICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kZjFhYWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBIZXdsZXR0LVBhY2thcmQgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbml0V2ViQ29yZVF0X2gKKyNkZWZpbmUgSW5p
dFdlYkNvcmVRdF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBpbml0aWFsaXplV2Vi
Q29yZVF0KCk7CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXBpLnByaSBiL1Nv
dXJjZS9hcGkucHJpCmluZGV4IDk0M2NhZWEuLjliNjQyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
cGkucHJpCisrKyBiL1NvdXJjZS9hcGkucHJpCkBAIC01Miw2ICs1Miw3IEBAIFNPVVJDRVMgKz0g
XAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHRRdC5jcHAgXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9HZW9s
b2NhdGlvblBlcm1pc3Npb25DbGllbnRRdC5jcHAgXAorICAgICQkUFdEL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmNwcCBcCiAgICAgJCRQV0QvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcCBcCkBAIC02
Myw2ICs2NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKIAogSEVBREVSUyArPSBcCisgICAgJCRQV0Qv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuaCBcCiAgICAgJCRQV0QvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvclNlcnZlclF0LmggXAogICAgICQkUFdEL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdEZhbGxiYWNrV2ViUG9wdXAuaCBcCiAgICAgJCRQV0Qv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0V2ViQ29tYm9Cb3guaCBcCg==
</data>
<flag name="review"
          id="116030"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>