<?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>196372</bug_id>
          
          <creation_ts>2019-03-28 12:49:45 -0700</creation_ts>
          <short_desc>Stop IDB transactions to release locked database files when network process is ready to suspend</short_desc>
          <delta_ts>2020-08-10 10:58:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>196519</dependson>
          <blocked>197050</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522181</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-03-28 12:49:45 -0700</bug_when>
    <thetext>Despite we take process assertion when there are SQLiteTransactions running, it expire after some time and network process can be suspended immediately. We need to make sure databases are closed and database files are unlocked at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522182</commentid>
    <comment_count>1</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-03-28 12:50:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/48930116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522184</commentid>
    <comment_count>2</comment_count>
      <attachid>366195</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-03-28 13:05:16 -0700</bug_when>
    <thetext>Created attachment 366195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522229</commentid>
    <comment_count>3</comment_count>
      <attachid>366210</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-03-28 14:45:33 -0700</bug_when>
    <thetext>Created attachment 366210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522485</commentid>
    <comment_count>4</comment_count>
      <attachid>366210</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-29 10:17:15 -0700</bug_when>
    <thetext>Comment on attachment 366210
Patch

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

This seems fine.

I&apos;m concerned about testing it - How did you do so?

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:870
&gt; +        m_suspendCompletionHandler = { };

m_suspendCompletionHandler = nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523120</commentid>
    <comment_count>5</comment_count>
      <attachid>366438</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-01 16:14:35 -0700</bug_when>
    <thetext>Created attachment 366438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523713</commentid>
    <comment_count>6</comment_count>
      <attachid>366608</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-03 08:42:41 -0700</bug_when>
    <thetext>Created attachment 366608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525472</commentid>
    <comment_count>7</comment_count>
      <attachid>367001</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-08 17:03:29 -0700</bug_when>
    <thetext>Created attachment 367001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525763</commentid>
    <comment_count>8</comment_count>
      <attachid>367001</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-04-09 14:44:05 -0700</bug_when>
    <thetext>Comment on attachment 367001
Patch

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

In general, the &quot;hang the main thread of the NetworkProcess&quot; seems bad.

Are NetworkProcess::cancelPrepareToSuspend and NetworkProcess:processDidResume basically the same? If so can we share code?

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:430
&gt; +    Vector&lt;SQLiteDatabase*&gt; databasesCopy;
&gt; +    {
&gt; +        std::lock_guard&lt;Lock&gt; lock(allOpenDatabasesMutex);
&gt; +        databasesCopy = copyToVector(allOpenDatabases());
&gt; +    }

This can be moved to a utility method up front that takes the lock, makes the Vector, and returns it. That way no user of the map has to ever access the map directly or worry about the lock themselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525774</commentid>
    <comment_count>9</comment_count>
      <attachid>367001</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-09 15:09:23 -0700</bug_when>
    <thetext>Comment on attachment 367001
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Track all opened SQLiteDatases so we can interrput long-running transactions of them and make database close 

typo: interrput

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:864
&gt; +    for (auto&amp; database : openDatabases)

Is it guaranteed that the UniqueIDBDatabase objects are still alive as you iterate here?

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:130
&gt; +    WEBCORE_EXPORT void closeAllDatabases();

We probably want a name that indicates that this is synchronous?

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:89
&gt; +    static NeverDestroyed&lt;HashSet&lt;SQLiteDatabase*&gt;&gt; databases;

You should assert that the lock is held here.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:426
&gt; +    Vector&lt;SQLiteDatabase*&gt; databasesCopy;

This looks extremely unsafe to me. Those SQLiteDatabase files may get destroyed on background threads as you iterate below it seems like.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:140
&gt; +    , m_taskCounter([this](RefCounterEvent) { sendReadyToSuspendIfDone(); })

This name is way too generic considering what it does. This is very specific to suspension and I also find it a little bit odd to have it as a data member considering that is is only useful during suspension. I thought the previous code was better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529238</commentid>
    <comment_count>10</comment_count>
      <attachid>367939</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-22 08:32:12 -0700</bug_when>
    <thetext>Created attachment 367939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529308</commentid>
    <comment_count>11</comment_count>
      <attachid>367954</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-22 11:10:32 -0700</bug_when>
    <thetext>Created attachment 367954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529491</commentid>
    <comment_count>12</comment_count>
      <attachid>368002</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-22 18:06:46 -0700</bug_when>
    <thetext>Created attachment 368002
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529610</commentid>
    <comment_count>13</comment_count>
      <attachid>368002</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-23 09:06:58 -0700</bug_when>
    <thetext>Comment on attachment 368002
Patch

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

&gt; Source/WebKit/ChangeLog:20
&gt; +2019-04-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;

Double change log.

&gt; Source/WTF/wtf/CrossThreadTaskHandler.h:47
&gt; +    WTF_EXPORT_PRIVATE void waitForStop();

I do not think this name is right. It looks like to me this method is actually stopping work, not just waiting. Maybe it should be name stopAndWait(), similarly to pre-existing callOnMainThreadAndWait(). Or maybe suspendAndWait() since there is a resume function. IF so, we should rename the members to use &quot;suspend&quot; rather than &quot;stop&quot;.

&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:39
&gt; +static IDBActivityCounterObserver* countObserver = nullptr;

= nullptr is not needed since this is a static, it gets 0 initialized. Note that you did not write &quot;count = 0&quot; above so you&apos;re already relying on this behavior.

&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:41
&gt; +void registerObserver(IDBActivityCounterObserver* observer)

I think this should be named setObserver() since you can only set 1 observer. I would use register when you can register several.

&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:44
&gt; +    countObserver = observer;

Should we assert that countObserver is nullptr before we set it?

&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.h:34
&gt; +namespace IDBActivityCounter {

Maybe if we name this IDBActivity, we could rename the classes to shorter names like &quot;CounterObserver&quot; and &quot;AutoCounter&quot;.

&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.h:50
&gt; +class IDBAcitivityAutoCounter {

Typo: IDBAcitivityAutoCounter

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:61
&gt; +enum class ShouldForceStop { No, Yes };

enum class ShouldForceStop : bool { No, Yes };

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:129
&gt; +    WEBCORE_EXPORT void stop(ShouldForceStop);

The name is unclear, the name is stop() and then there is a flag asking if we should forceStop. What&apos;s the difference? This should be renamed to be clearer. Maybe something like:
enum class StoppingPolicy { WaitForCompletion, Abort };

Cannot be sure of the naming since I am not sure I understood the behavior of your code.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:88
&gt; +    bool hasTransaction(const IDBResourceIdentifier&amp; identifier) { return m_transactions.contains(identifier); }

const ?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:247
&gt; +        IDBActivityCounter::IDBAcitivityAutoCounter autoCounter;

Wouldn&apos;t IDBActivity::AutoCounter look better?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:936
&gt; +    IDBActivityCounter::incrementIDBActivityCounter();

This method can return an error. Is it really OK to increment here even when we end up with an error?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:981
&gt; +    auto result = transaction-&gt;abort();

Can this fail to abort? If so, is it OK to decrement unconditionally below?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:1009
&gt; +    IDBActivityCounter::decrementIDBActivityCounter();

This looks a bit fragile. Would it look better if we moved transaction counting to IDBTransaction?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:2707
&gt; +bool SQLiteIDBBackingStore::hasTransaction(const IDBResourceIdentifier&amp; transactionIdentifier)

const ?

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1635
&gt; +    if (transaction-&gt;state() == UniqueIDBDatabaseTransaction::State::Aborted)

We usually prefer to switch() to make sure we deal explicitly with all enum values.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:2314
&gt; +        if (transaction-&gt;state() == UniqueIDBDatabaseTransaction::State::Aborting)

ditto about switch()

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:96
&gt; +    State state() { return m_state; }

const

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:98
&gt; +    IDBError result() { return m_result; }

Is IDBError a class/struct? IF so, this should return a const IDBError&amp; and this method would be const.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:140
&gt; +        parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::SetIsIndexedDatabaseHoldingLockedFiles(state == PAL::HysteresisState::Started), 0);

Why does IDB need special treatment? It is SQLLite based. So why cannot this rely on NetworkProcessProxy::SetIsHoldingLockedFiles ?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1063
&gt; +void NetworkProcessProxy::setIsIndexedDatabaseHoldingLockedFiles(bool isIndexedDatabaseHoldingLockedFiles)

Why a whole separate handling for IDB???

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:263
&gt; +    ProcessThrottler::BackgroundActivityToken m_tokenForIndexedDatabaseHoldingLockedFiles;

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529669</commentid>
    <comment_count>14</comment_count>
      <attachid>368002</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-23 11:35:31 -0700</bug_when>
    <thetext>Comment on attachment 368002
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:20
&gt;&gt; +2019-04-22  Sihui Liu  &lt;sihui_liu@apple.com&gt;
&gt; 
&gt; Double change log.

Oops.

&gt;&gt; Source/WTF/wtf/CrossThreadTaskHandler.h:47
&gt;&gt; +    WTF_EXPORT_PRIVATE void waitForStop();
&gt; 
&gt; I do not think this name is right. It looks like to me this method is actually stopping work, not just waiting. Maybe it should be name stopAndWait(), similarly to pre-existing callOnMainThreadAndWait(). Or maybe suspendAndWait() since there is a resume function. IF so, we should rename the members to use &quot;suspend&quot; rather than &quot;stop&quot;.

Okay, will change to suspendAndWait and use suspend.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:39
&gt;&gt; +static IDBActivityCounterObserver* countObserver = nullptr;
&gt; 
&gt; = nullptr is not needed since this is a static, it gets 0 initialized. Note that you did not write &quot;count = 0&quot; above so you&apos;re already relying on this behavior.

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:41
&gt;&gt; +void registerObserver(IDBActivityCounterObserver* observer)
&gt; 
&gt; I think this should be named setObserver() since you can only set 1 observer. I would use register when you can register several.

Okay, will change to setObserver.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.cpp:44
&gt;&gt; +    countObserver = observer;
&gt; 
&gt; Should we assert that countObserver is nullptr before we set it?

We could.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.h:34
&gt;&gt; +namespace IDBActivityCounter {
&gt; 
&gt; Maybe if we name this IDBActivity, we could rename the classes to shorter names like &quot;CounterObserver&quot; and &quot;AutoCounter&quot;.

This has a global count so it&apos;s named counter, but we can still make the name shorter as IDBActivityCounter::CounterObserver and  IDBActivityCounter::AutoCounter?

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBActivityCounter.h:50
&gt;&gt; +class IDBAcitivityAutoCounter {
&gt; 
&gt; Typo: IDBAcitivityAutoCounter

Will use AutoCounter as class name.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:61
&gt;&gt; +enum class ShouldForceStop { No, Yes };
&gt; 
&gt; enum class ShouldForceStop : bool { No, Yes };

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.h:129
&gt;&gt; +    WEBCORE_EXPORT void stop(ShouldForceStop);
&gt; 
&gt; The name is unclear, the name is stop() and then there is a flag asking if we should forceStop. What&apos;s the difference? This should be renamed to be clearer. Maybe something like:
&gt; enum class StoppingPolicy { WaitForCompletion, Abort };
&gt; 
&gt; Cannot be sure of the naming since I am not sure I understood the behavior of your code.

ShouldForceStop::Yes means stop all ongoing transactions; ShouldForceStop::No means if there is ongoing transactions, do nothing and let the transactions run. Because counter not being 0 indicates the setIsIndexedDBHoldingLockedFiles message will or already be sent out.

Is tryStop() better?

&gt;&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:88
&gt;&gt; +    bool hasTransaction(const IDBResourceIdentifier&amp; identifier) { return m_transactions.contains(identifier); }
&gt; 
&gt; const ?

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:247
&gt;&gt; +        IDBActivityCounter::IDBAcitivityAutoCounter autoCounter;
&gt; 
&gt; Wouldn&apos;t IDBActivity::AutoCounter look better?

How about IDBActivityCounter::AutoCounter?

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:936
&gt;&gt; +    IDBActivityCounter::incrementIDBActivityCounter();
&gt; 
&gt; This method can return an error. Is it really OK to increment here even when we end up with an error?

Nice catch. Should decrement the counter before return if there is an error.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:981
&gt;&gt; +    auto result = transaction-&gt;abort();
&gt; 
&gt; Can this fail to abort? If so, is it OK to decrement unconditionally below?

Yes it can fail to abort. We still decrement the count because errored abort or commit would be recognized as the end of the transaction and SQLiteIDBTransaction would be removed from map and gets destructed.

If we had problem in the future where we release the token early with unfinished transactions holding locked database file, we need to think of a way to force releasing file lock on sqlite.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:1009
&gt;&gt; +    IDBActivityCounter::decrementIDBActivityCounter();
&gt; 
&gt; This looks a bit fragile. Would it look better if we moved transaction counting to IDBTransaction?

Access to locked database file is happening on the background thread rather than the main thread; we probably want a more accurate counter.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:2707
&gt;&gt; +bool SQLiteIDBBackingStore::hasTransaction(const IDBResourceIdentifier&amp; transactionIdentifier)
&gt; 
&gt; const ?

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1635
&gt;&gt; +    if (transaction-&gt;state() == UniqueIDBDatabaseTransaction::State::Aborted)
&gt; 
&gt; We usually prefer to switch() to make sure we deal explicitly with all enum values.

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:2314
&gt;&gt; +        if (transaction-&gt;state() == UniqueIDBDatabaseTransaction::State::Aborting)
&gt; 
&gt; ditto about switch()

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:96
&gt;&gt; +    State state() { return m_state; }
&gt; 
&gt; const

Okay.

&gt;&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:98
&gt;&gt; +    IDBError result() { return m_result; }
&gt; 
&gt; Is IDBError a class/struct? IF so, this should return a const IDBError&amp; and this method would be const.

Okay.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:140
&gt;&gt; +        parentProcessConnection()-&gt;send(Messages::NetworkProcessProxy::SetIsIndexedDatabaseHoldingLockedFiles(state == PAL::HysteresisState::Started), 0);
&gt; 
&gt; Why does IDB need special treatment? It is SQLLite based. So why cannot this rely on NetworkProcessProxy::SetIsHoldingLockedFiles ?

There are other SQLiteDatbases other than IDB in network process. IDBActivityCounter can only decide whether IDB needs locked file. When IDB doesn&apos;t need locked files it sends a &quot;SetIsHoldingLockedFiles::No&quot; message out but other databases could be holding locked files. So I felt it&apos;s better to let two counters have their own tokens.

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1063
&gt;&gt; +void NetworkProcessProxy::setIsIndexedDatabaseHoldingLockedFiles(bool isIndexedDatabaseHoldingLockedFiles)
&gt; 
&gt; Why a whole separate handling for IDB???

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529671</commentid>
    <comment_count>15</comment_count>
      <attachid>368047</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-23 11:38:21 -0700</bug_when>
    <thetext>Created attachment 368047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529991</commentid>
    <comment_count>16</comment_count>
      <attachid>368128</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-24 08:51:35 -0700</bug_when>
    <thetext>Created attachment 368128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1529996</commentid>
    <comment_count>17</comment_count>
      <attachid>368128</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-24 08:53:52 -0700</bug_when>
    <thetext>Comment on attachment 368128
Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:36
&gt; +    SetIsIndexedDatabaseHoldingLockedFiles(bool isIndexedDatabaseHoldingLockedFiles)

I still do not understand why IDB needs its own file locking mechanism and why it does not rely and the normal SetIsHoldingLockedFiles().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530012</commentid>
    <comment_count>18</comment_count>
      <attachid>368128</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-24 09:19:24 -0700</bug_when>
    <thetext>Comment on attachment 368128
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:36
&gt;&gt; +    SetIsIndexedDatabaseHoldingLockedFiles(bool isIndexedDatabaseHoldingLockedFiles)
&gt; 
&gt; I still do not understand why IDB needs its own file locking mechanism and why it does not rely and the normal SetIsHoldingLockedFiles().

To reiterate, file locking happens at SQLite level, not at IDB level. We already have a SQLiteDatabaseTracker whose responsibility it is to know when SQLite is holding locked files and to notify the UIProcess in order to take the necessary assertions. If you have found an issue and the SQLiteDatabaseTracker fails to tell the UIProcess we&apos;re holding a locked file even though we are, please fix the issue in the SQLiteDatabaseTracker, not by adding a completely separate / duplicate mechanism specific to IDB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530057</commentid>
    <comment_count>19</comment_count>
      <attachid>368146</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-24 11:14:02 -0700</bug_when>
    <thetext>Created attachment 368146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530060</commentid>
    <comment_count>20</comment_count>
      <attachid>368148</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-24 11:27:44 -0700</bug_when>
    <thetext>Created attachment 368148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530063</commentid>
    <comment_count>21</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2019-04-24 11:30:27 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #18)
&gt; Comment on attachment 368128 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=368128&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:36
&gt; &gt;&gt; +    SetIsIndexedDatabaseHoldingLockedFiles(bool isIndexedDatabaseHoldingLockedFiles)
&gt; &gt; 
&gt; &gt; I still do not understand why IDB needs its own file locking mechanism and why it does not rely and the normal SetIsHoldingLockedFiles().
&gt; 
&gt; To reiterate, file locking happens at SQLite level, not at IDB level. We
&gt; already have a SQLiteDatabaseTracker whose responsibility it is to know when
&gt; SQLite is holding locked files and to notify the UIProcess in order to take
&gt; the necessary assertions. If you have found an issue and the
&gt; SQLiteDatabaseTracker fails to tell the UIProcess we&apos;re holding a locked
&gt; file even though we are, please fix the issue in the SQLiteDatabaseTracker,
&gt; not by adding a completely separate / duplicate mechanism specific to IDB.

Read the code again and I see your point. Removed the IDB counter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530072</commentid>
    <comment_count>22</comment_count>
      <attachid>368148</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-24 11:50:05 -0700</bug_when>
    <thetext>Comment on attachment 368148
Patch

Ok, this looks better to me now but I&apos;d like someone familiar with IDB to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530221</commentid>
    <comment_count>23</comment_count>
      <attachid>368148</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-04-24 15:59:10 -0700</bug_when>
    <thetext>Comment on attachment 368148
Patch

Okay seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530683</commentid>
    <comment_count>24</comment_count>
      <attachid>368148</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-26 09:08:46 -0700</bug_when>
    <thetext>Comment on attachment 368148
Patch

Clearing flags on attachment: 368148

Committed r244687: &lt;https://trac.webkit.org/changeset/244687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530684</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-26 09:08:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366195</attachid>
            <date>2019-03-28 13:05:16 -0700</date>
            <delta_ts>2019-03-28 14:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190328130515.patch</filename>
            <type>text/plain</type>
            <size>31302</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MGI4ODljMWEzYTAy
NzlhNmNhNjUxNTBjNmE1ZjE3ZjRhNTAwYy4uNjMzODQ4NGUwNjQ1OTgxZGNkMWRjYmVjMjRhYWZi
ZjIyZmJkNDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE5LTAzLTI4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIG9wZW4gSURCRGF0
YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJREJEYXRhYmFzZSBvbiB0aGUgc2VydmVyIHNpZGUgc2hvdWxkIHNo
dXQgZG93biBpbW1lZGlhdGVseSBpbiBwcmVwYXJhdGlvbiBmb3IgbmV0d29yayBwcm9jZXNzIHN1
c3BlbnNpb24uCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OklEQlNlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6c2h1dGRvd25Gb3JTdXNwZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpmaW5hbGl6ZVNodXRkb3du
Rm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlk
U2h1dGRvd25Gb3JTdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpyZXN1bWVGcm9tU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Om1f
cXVvdGFNYW5hZ2VyR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpjbG9zZURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyOjpkaWRDbG9zZURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnREZWxl
dGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6c2NoZWR1bGVTaHV0ZG93bkZvckNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duRm9yQ2xvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Omlt
bWVkaWF0ZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclN1c3BlbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bm90aWZ5U2Vy
dmVyQWJvdXRDbG9zZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKIDIwMTktMDMtMjcgIEp1c3RpbiBGYW4gIDxqdXN0
aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViIEdQVV0gU3RhbmRhcmRpemUgV2ViIEdQ
VSBvYmplY3QgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBjcmVhdGlvbiBsb2dpYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAwNjZjMzBhNjhlNWZhZjUyMzNlNWJiZWFlMThlZDI2NjE5ZmEzY2U4Li4wZjJlNzA3ZjYzZWQ0
ZWRhNjYxMzAzMmE0NTU3ZjI4NWE4MTUwN2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisy
MDE5LTAzLTI4ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENs
b3NlIG9wZW4gSURCRGF0YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3Vz
cGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2
MzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIG5ldHdvcmsgcHJvY2VzcyBpcyBn
b2luZyB0byBzdXNwZW5kLCBpdCBuZWVkcyB0byBzdG9wIElEQlNlcnZlciBzbyBpdCB3b24ndCB0
YWtlIGFueSBvcGVuIG9yIGRlbGV0ZQorICAgICAgICByZXF1ZXN0LgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcmVtb3ZlcyBwcm9jZXNzIGFzc2VydGlvbiBmb3IgSURCIGNsb3NlIGJlY2F1c2UgU1FM
aXRlRGF0YWJhc2UgYWxyZWFkeSB0YWtlcyBjYXJlIG9mIHRoYXQuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpzaHV0ZG93bklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpyZXN1bWVJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Om5v
dGlmeUhvbGRpbmdMb2NrZWRGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0lE
QkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wMy0yNyAgS2Vp
dGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jbHVkZSB0aGUgQ0ZO
ZXR3b3JraW5nIHRhc2sgVVVJRCB0byB0aGUgTlNFcnJvciB3aGVuIGEgcmVzb3VyY2UtbG9hZCBm
YWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCU2VydmVyLmNwcAppbmRleCA2MmYzMjBjZmIwM2NkZGIzZjczMjJkM2I0OGE0OTE3OGM3Mzk4
NzdiLi5kMzZmMDM4MGVhNDcwNjkzNzg5ODBmYTI0YTliNGJkY2NkMzgwNGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNw
cApAQCAtNDUsMzMgKzQ1LDI5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKIAotUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhh
bmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlciwgV1RGOjpGdW5j
dGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2spCitSZWY8SURCU2Vy
dmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElEQkJhY2tp
bmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0
dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElE
QlNlcnZlcihzZXNzaW9uSUQsIGZpbGVIYW5kbGVyLCBXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRl
ciksIFdURk1vdmUoaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJTZXJ2ZXIoc2Vzc2lvbklELCBmaWxlSGFuZGxlciwgV1RGTW92ZShxdW90
YU1hbmFnZXJHZXR0ZXIpKSk7CiB9CiAKLVJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9y
eVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwg
UXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykKK1JlZjxJREJTZXJ2ZXI+IElE
QlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVy
JiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlNlcnZlcihzZXNzaW9uSUQsIGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgZmlsZUhhbmRsZXIsIFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSwg
V1RGTW92ZShpc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IElEQlNlcnZlcihzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgZmlsZUhh
bmRsZXIsIFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSkpOwogfQogCi1JREJTZXJ2ZXI6OklE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFy
eUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5h
Z2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0YWJhc2VD
YWxsYmFjaykKK0lEQlNlcnZlcjo6SURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
SURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBRdW90YU1h
bmFnZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIpCiAgICAgOiBDcm9zc1RocmVhZFRhc2tI
YW5kbGVyKCJJbmRleGVkRGF0YWJhc2UgU2VydmVyIikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Np
b25JRCkKICAgICAsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIoZmlsZUhhbmRs
ZXIpCi0gICAgLCBtX2lzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2soV1RGTW92ZShpc0Nsb3NpbmdE
YXRhYmFzZUNhbGxiYWNrKSkKLSAgICAsIG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0ZXJlc2lzKFsm
XShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBtX2lzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJh
Y2soc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOyB9KQogICAgICwgbV9x
dW90YU1hbmFnZXJHZXR0ZXIoV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpKQogewogfQogCi1J
REJTZXJ2ZXI6OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFu
ZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRl
ciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2sp
CitJREJTZXJ2ZXI6OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxl
SGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdl
dHRlcikKICAgICA6IENyb3NzVGhyZWFkVGFza0hhbmRsZXIoIkluZGV4ZWREYXRhYmFzZSBTZXJ2
ZXIiKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9kYXRhYmFzZURpcmVj
dG9yeVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKQogICAgICwgbV9iYWNraW5nU3RvcmVUZW1w
b3JhcnlGaWxlSGFuZGxlcihmaWxlSGFuZGxlcikKLSAgICAsIG1faXNDbG9zaW5nRGF0YWJhc2VD
YWxsYmFjayhXVEZNb3ZlKGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2spKQotICAgICwgbV9pc0Ns
b3NpbmdEYXRhYmFzZUh5c3RlcmVzaXMoWyZdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7
IG1faXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjayhzdGF0ZSA9PSBQQUw6Okh5c3RlcmVzaXNTdGF0
ZTo6U3RhcnRlZCk7IH0pCiAgICAgLCBtX3F1b3RhTWFuYWdlckdldHRlcihXVEZNb3ZlKHF1b3Rh
TWFuYWdlckdldHRlcikpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlciBjcmVhdGVk
IGF0IHBhdGggJXMiLCBkYXRhYmFzZURpcmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CkBAIC0x
NDUsOCArMTQxLDYgQEAgdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6
b3BlbkRhdGFiYXNlIik7CiAKLSAgICBhdXRvJiB1bmlxdWVJREJEYXRhYmFzZSA9IGdldE9yQ3Jl
YXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwot
CiAgICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChyZXF1ZXN0RGF0YS5y
ZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICghY29u
bmVjdGlvbikgewogICAgICAgICAvLyBJZiB0aGUgY29ubmVjdGlvbiBiYWNrIHRvIHRoZSBjbGll
bnQgaXMgZ29uZSwgdGhlcmUncyBubyB3YXkgdG8gb3BlbiB0aGUgZGF0YWJhc2UgYXMKQEAgLTE1
NCw2ICsxNDgsMTUgQEAgdm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
bV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCkgeworICAgICAgICAvLyBTdG9wIHByb2Nl
c3NpbmcgaW5jb21pbmcgb3BlbiByZXF1ZXN0IGlmIHJlYWR5IHRvIHN1c3BlbmQuCisgICAgICAg
IGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElk
ZW50aWZpZXIoKSwgSURCRXJyb3IoVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIG9wZW4gZGF0YWJh
c2UgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgc3VzcGVuZGVkIl9zKSk7CisgICAgICAgIGNv
bm5lY3Rpb24tPmRpZE9wZW5EYXRhYmFzZShyZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byYgdW5pcXVlSURCRGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRh
dGFiYXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKwogICAgIHVuaXF1ZUlE
QkRhdGFiYXNlLm9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oKmNvbm5lY3Rpb24sIHJlcXVlc3REYXRh
KTsKIH0KIApAQCAtMTY5LDYgKzE3MiwxMyBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJh
c2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKG1fcHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQpIHsKKyAgICAg
ICAgLy8gU3RvcCBwcm9jZXNzaW5nIGluY29taW5nIGRlbGV0ZSByZXF1ZXN0IGlmIHJlYWR5IHRv
IHN1c3BlbmQuCisgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVx
dWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3IoVW5rbm93bkVycm9yLCAiVW5h
YmxlIHRvIGRlbGV0ZSBkYXRhYmFzZSBiZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5k
ZWQiX3MpKTsKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGF1dG8qIGRhdGFiYXNlID0gbV91bmlxdWVJ
REJEYXRhYmFzZU1hcC5nZXQocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAg
IGlmICghZGF0YWJhc2UpCiAgICAgICAgIGRhdGFiYXNlID0gJmdldE9yQ3JlYXRlVW5pcXVlSURC
RGF0YWJhc2UocmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwpAQCAtNzAyLDI5ICs3
MTIsNiBAQCB2b2lkIElEQlNlcnZlcjo6c2V0UGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEp
CiAgICAgICAgIGRhdGFiYXNlLT5zZXRRdW90YShxdW90YSk7CiB9CiAKLXZvaWQgSURCU2VydmVy
OjpjbG9zZURhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91bmlxdWVJ
REJEYXRhYmFzZXNJbkNsb3NlLmFkZChkYXRhYmFzZSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05l
d0VudHJ5ICYmIG1fdW5pcXVlSURCRGF0YWJhc2VzSW5DbG9zZS5zaXplKCkgPT0gMSkKLSAgICAg
ICAgbV9pc0Nsb3NpbmdEYXRhYmFzZUh5c3RlcmVzaXMuc3RhcnQoKTsKLX0KLQotdm9pZCBJREJT
ZXJ2ZXI6OmRpZENsb3NlRGF0YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdW5pcXVlSURCRGF0
YWJhc2VzSW5DbG9zZS5yZW1vdmUoZGF0YWJhc2UpKSB7Ci0gICAgICAgIGlmIChtX3VuaXF1ZUlE
QkRhdGFiYXNlc0luQ2xvc2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9pc0Nsb3NpbmdEYXRh
YmFzZUh5c3RlcmVzaXMuc3RvcCgpOwotICAgIH0KLX0KLQogSURCU2VydmVyOjpRdW90YVVzZXI6
OlF1b3RhVXNlcihJREJTZXJ2ZXImIHNlcnZlciwgU3RvcmFnZVF1b3RhTWFuYWdlciogbWFuYWdl
ciwgQ2xpZW50T3JpZ2luJiYgb3JpZ2luKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQogICAgICwg
bV9tYW5hZ2VyKG1ha2VXZWFrUHRyKG1hbmFnZXIpKQpAQCAtODU1LDYgKzg0Miw0MiBAQCB2b2lk
IElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQgSURC
U2VydmVyOjpzaHV0ZG93bkZvclN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fcHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQg
PSB0cnVlOworICAgIAorICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2UqPiBvcGVuRGF0YWJh
c2VzOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnZh
bHVlcygpKQorICAgICAgICBvcGVuRGF0YWJhc2VzLmFkZChkYXRhYmFzZS5nZXQoKSk7CisKKyAg
ICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogb3BlbkRhdGFiYXNlcykKKyAgICAgICAgZGF0YWJhc2Ut
PmltbWVkaWF0ZUNsb3NlRm9yU3VzcGVuZCgpOworICAgIAorICAgIG1fc3VzcGVuZENvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgcG9zdERhdGFiYXNl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZJREJTZXJ2ZXI6OmZpbmFsaXplU2h1
dGRvd25Gb3JTdXNwZW5kKSk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpmaW5hbGl6ZVNodXRkb3du
Rm9yU3VzcGVuZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgcG9zdERh
dGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJklEQlNlcnZlcjo6
ZGlkU2h1dGRvd25Gb3JTdXNwZW5kKSk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpkaWRTaHV0ZG93
bkZvclN1c3BlbmQoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1f
cHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQpIHsKKyAgICAgICAgbV9zdXNwZW5kQ29tcGxl
dGlvbkhhbmRsZXIoKTsKKyAgICAgICAgbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXIgPSB7IH07
CisgICAgfQorfQorCit2b2lkIElEQlNlcnZlcjo6cmVzdW1lRnJvbVN1c3BlbmQoKQoreworICAg
IEFTU0VSVChtX3ByZXBhcmluZ1RvU3VzcGVuZE9yU3VzcGVuZGVkKTsKKyAgICBtX3ByZXBhcmlu
Z1RvU3VzcGVuZE9yU3VzcGVuZGVkID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggYWU0YmZkODg5NzNlNzVi
MDAxNWY3ZmRlOGExNTAxZTI3ZGE1ZjE5Mi4uNDc3YWE3ZmZjYzdkOTI1ODRmOTY2YjI0MmU1ZTU3
M2IwZjg3NTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlN0b3JhZ2VR
dW90YVVzZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0
aXZpdHkuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3Nz
VGhyZWFkVGFza0hhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAsOCAr
NTksOCBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKIGNsYXNz
IElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyIHsKIHB1YmxpYzoKICAgICB1c2luZyBRdW90YU1hbmFnZXJHZXR0ZXIg
PSBXVEY6OkZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXIqKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBDbGllbnRPcmlnaW4mKT47Ci0gICAgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6
OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1h
bmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFi
YXNlQ2FsbGJhY2sgPSBbXShib29sKSB7IH0pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1
b3RhTWFuYWdlckdldHRlciYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5n
RGF0YWJhc2VDYWxsYmFjayA9IFtdKGJvb2wpIHsgfSk7CisgICAgc3RhdGljIFJlZjxJREJTZXJ2
ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhh
bmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwg
UXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
ckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTEx
NSwxMCArMTE0LDYgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHBlck9yaWdpblF1b3RhKCkgY29u
c3QgeyByZXR1cm4gbV9wZXJPcmlnaW5RdW90YTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UGVyT3JpZ2luUXVvdGEodWludDY0X3QpOwogCi0gICAgdm9pZCBjbG9zZURhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlKik7Ci0gICAgdm9pZCBkaWRDbG9zZURhdGFiYXNlKFVuaXF1ZUlEQkRh
dGFiYXNlKik7Ci0gICAgdm9pZCBoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0
ZSk7Ci0KICAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlUXVvdGFNYW5hZ2VyOjpE
ZWNpc2lvbik+JiYpOwogICAgIHZvaWQgaW5jcmVhc2VQb3RlbnRpYWxTcGFjZVVzZWQoY29uc3Qg
Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIHZvaWQgZGVjcmVhc2VQb3Rl
bnRpYWxTcGFjZVVzZWQoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwpA
QCAtMTI3LDkgKzEyMiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVRdW90YVVz
ZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pIHsgZW5zdXJlUXVvdGFVc2VyKG9yaWdpbik7
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2h1dGRvd25Gb3JTdXNwZW5kKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVGcm9t
U3VzcGVuZCgpOworCiBwcml2YXRlOgotICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURC
QmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsKLSAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVU
ZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYpOworICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURCQmFja2lu
Z1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CisgICAg
SURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJH
ZXR0ZXImJik7CiAKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJE
YXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKIApAQCAtMTQ0LDYgKzE0Miw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNNb2RpZmllZFNpbmNlRm9yVmVy
c2lvbihXYWxsVGltZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNX
aXRoT3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBj
b25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZmluYWxpemVTaHV0ZG93bkZvclN1c3BlbmQoKTsK
KyAgICB2b2lkIGRpZFNodXRkb3duRm9yU3VzcGVuZCgpOworCiAgICAgY2xhc3MgUXVvdGFVc2Vy
IGZpbmFsIDogcHVibGljIFN0b3JhZ2VRdW90YVVzZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC0xODUsNyArMTg2LDYgQEAgcHJpdmF0ZToKICAg
ICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SURCQ29ubmVjdGlvblRvQ2xpZW50Pj4gbV9jb25uZWN0aW9uTWFwOwogICAgIEhhc2hNYXA8
SURCRGF0YWJhc2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+
PiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwOwotICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2Uq
PiBtX3VuaXF1ZUlEQkRhdGFiYXNlc0luQ2xvc2U7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24qPiBtX2RhdGFiYXNlQ29ubmVjdGlvbnM7CiAgICAg
SGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24qPiBtX3RyYW5zYWN0aW9uczsKQEAgLTE5NywxMSArMTk3LDExIEBAIHByaXZhdGU6CiAKICAg
ICB1aW50NjRfdCBtX3Blck9yaWdpblF1b3RhIHsgZGVmYXVsdFBlck9yaWdpblF1b3RhIH07CiAK
LSAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IG1faXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFj
azsKLSAgICBQQUw6Okh5c3RlcmVzaXNBY3Rpdml0eSBtX2lzQ2xvc2luZ0RhdGFiYXNlSHlzdGVy
ZXNpczsKLQogICAgIEhhc2hNYXA8Q2xpZW50T3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UXVvdGFV
c2VyPj4gbV9xdW90YVVzZXJzOwogICAgIFF1b3RhTWFuYWdlckdldHRlciBtX3F1b3RhTWFuYWdl
ckdldHRlcjsKKworICAgIGJvb2wgbV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCB7IGZh
bHNlIH07CisgICAgRnVuY3Rpb248dm9pZCgpPiBtX3N1c3BlbmRDb21wbGV0aW9uSGFuZGxlcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
aW5kZXggYTYyOTcwYTUzYjEwMTAzYjFhNmVlOTQ5NmQzMTMzMGE0OTk4ODgyMS4uZjIwMWIwZDNi
MjcyMDgyNGY5MGUzMmNhYzAzNzhkNmZlZTczZmVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCkBAIC0zMzAsNyArMzMwLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1
cnJlbnREZWxldGVPcGVyYXRpb24oKQogICAgICAgICAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3Jl
KDApOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZGVsZXRlQmFja2luZ1N0b3JlSW5Q
cm9ncmVzcyA9IHRydWU7Ci0gICAgICAgICAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3Nl
U3RhdGU6OlN0YXJ0KTsKICAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSwg
bV9pZGVudGlmaWVyKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zODMsNyArMzgyLDYgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6c2NoZWR1bGVTaHV0ZG93bkZvckNsb3NlKCkKICAgICBSRUxF
QVNFX0FTU0VSVCghbV9vd25pbmdQb2ludGVyRm9yQ2xvc2UpOwogICAgIG1fb3duaW5nUG9pbnRl
ckZvckNsb3NlID0gbV9zZXJ2ZXItPmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlz
KTsKIAotICAgIG5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZTo6U3RhcnQpOwogICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OnNodXRkb3duRm9yQ2xvc2UpKTsKIH0KIApAQCAtNDExLDcgKzQwOSw2IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duRm9yQ2xvc2UoKQogewogICAgIEFTU0VS
VChtX2RhdGFiYXNlUmVwbHlRdWV1ZS5pc0VtcHR5KCkpOwogICAgIG1fZGF0YWJhc2VSZXBseVF1
ZXVlLmtpbGwoKTsKLSAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3RhdGU6OkRvbmUp
OwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUodWlu
dDY0X3QgZGVsZXRlZFZlcnNpb24pCkBAIC00NDcsNyArNDQ0LDYgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQog
CiAgICAgaWYgKG1faGFyZENsb3NlZEZvclVzZXJEZWxldGUpCiAgICAgICAgIHJldHVybjsKLSAg
ICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3RhdGU6OkRvbmUpOwogCiAgICAgaW52b2tl
T3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lcigpOwogfQpAQCAtMjEyNiwzMyArMjEyMiwzMSBA
QCBzdGF0aWMgdm9pZCBlcnJvck9wZW5EQlJlcXVlc3RGb3JVc2VyRGVsZXRlKFNlcnZlck9wZW5E
QlJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbigpLmRpZERlbGV0
ZURhdGFiYXNlKHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0
ZUNsb3NlRm9yVXNlckRlbGV0ZSgpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVD
bG9zZSgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlh
dGVDbG9zZUZvclVzZXJEZWxldGUgLSBDYW5jZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJh
Y2tzIiwgbV9lcnJvckNhbGxiYWNrcy5zaXplKCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCks
IG1fZ2V0UmVzdWx0Q2FsbGJhY2tzLnNpemUoKSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOwot
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQorICAgIAogICAgIG1fcGVuZGluZ1NwYWNl
SW5jcmVhc2luZ1Rhc2tzLmNsZWFyKCk7CiAgICAgbV9zZXJ2ZXItPnJlc2V0U3BhY2VVc2VkKG1f
aWRlbnRpZmllci5vcmlnaW4oKSk7Ci0KKyAgICAKICAgICAvLyBFcnJvciBvdXQgYWxsIHRyYW5z
YWN0aW9ucwogICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJv
Z3Jlc3NUcmFuc2FjdGlvbnMua2V5cygpKSkKICAgICAgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rp
b25zLmdldChpZGVudGlmaWVyKS0+YWJvcnRXaXRob3V0Q2FsbGJhY2soKTsKLQorICAgIAogICAg
IEFTU0VSVChtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKLQorICAgIAogICAg
IGZvciAoYXV0byYgdHJhbnNhY3Rpb24gOiBtX3BlbmRpbmdUcmFuc2FjdGlvbnMpCiAgICAgICAg
IHRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKS5kZWxldGVUcmFuc2FjdGlvbigqdHJh
bnNhY3Rpb24pOwogICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9ucy5jbGVhcigpOwogICAgIG1fb2Jq
ZWN0U3RvcmVUcmFuc2FjdGlvbkNvdW50cy5jbGVhcigpOwogICAgIG1fb2JqZWN0U3RvcmVXcml0
ZVRyYW5zYWN0aW9ucy5jbGVhcigpOwotCisgICAgCiAgICAgLy8gRXJyb3Igb3V0IGFsbCBwZW5k
aW5nIGNhbGxiYWNrcwogICAgIElEQkVycm9yIGVycm9yID0gSURCRXJyb3I6OnVzZXJEZWxldGVF
cnJvcigpOwogICAgIElEQktleURhdGEga2V5RGF0YTsKICAgICBJREJHZXRSZXN1bHQgZ2V0UmVz
dWx0OwogICAgIElEQkdldEFsbFJlc3VsdCBnZXRBbGxSZXN1bHQ7Ci0KKyAgICAKICAgICB3aGls
ZSAoIW1fY2FsbGJhY2tRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVy
ID0gbV9jYWxsYmFja1F1ZXVlLmZpcnN0KCk7CiAgICAgICAgIGlmIChtX2Vycm9yQ2FsbGJhY2tz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKQpAQCAtMjE2OCw0MyArMjE2Miw1NyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKQogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0KKyAgICAKICAgICAv
LyBFcnJvciBvdXQgYWxsIElEQk9wZW5EQlJlcXVlc3RzCiAgICAgaWYgKG1fY3VycmVudE9wZW5E
QlJlcXVlc3QpIHsKICAgICAgICAgZXJyb3JPcGVuREJSZXF1ZXN0Rm9yVXNlckRlbGV0ZSgqbV9j
dXJyZW50T3BlbkRCUmVxdWVzdCk7CiAgICAgICAgIG1fY3VycmVudE9wZW5EQlJlcXVlc3QgPSBu
dWxscHRyOwogICAgIH0KLQorICAgIAogICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcGVuZGlu
Z09wZW5EQlJlcXVlc3RzKQogICAgICAgICBlcnJvck9wZW5EQlJlcXVlc3RGb3JVc2VyRGVsZXRl
KCpyZXF1ZXN0KTsKLQorICAgIAogICAgIG1fcGVuZGluZ09wZW5EQlJlcXVlc3RzLmNsZWFyKCk7
Ci0KKyAgICAKICAgICAvLyBDbG9zZSBhbGwgb3BlbiBjb25uZWN0aW9ucwogICAgIGF1dG8gb3Bl
bkRhdGFiYXNlQ29ubmVjdGlvbnMgPSBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOwogICAgIGZv
ciAoYXV0byYgY29ubmVjdGlvbiA6IG9wZW5EYXRhYmFzZUNvbm5lY3Rpb25zKQogICAgICAgICBj
b25uZWN0aW9uQ2xvc2VkRnJvbVNlcnZlcigqY29ubmVjdGlvbik7Ci0KKyAgICAKICAgICAvLyBD
YW5jZWwgdGhlIG9wZXJhdGlvbiB0aW1lcgogICAgIG1fb3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25U
aW1lci5zdG9wKCk7Ci0KKyAgICAKICAgICAvLyBTZXQgdXAgdGhlIGRhdGFiYXNlIHRvIHJlbWFp
biBhbGl2ZS1idXQtaW5lcnQgdW50aWwgYWxsIG9mIGl0cyBiYWNrZ3JvdW5kIGFjdGl2aXR5IGZp
bmlzaGVzIGFuZCBhbGwKICAgICAvLyBkYXRhYmFzZSBjb25uZWN0aW9ucyBjb25maXJtIHRoYXQg
dGhleSBoYXZlIGNsb3NlZC4KICAgICBtX2hhcmRDbG9zZWRGb3JVc2VyRGVsZXRlID0gdHJ1ZTsK
LQorICAgIAogICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgYWxyZWFkeSBvd25zIGl0c2VsZiwgaXQg
aXMgYWxyZWFkeSBjbG9zaW5nIG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAvLyBBZnRl
ciB0aGF0IGNsb3NlIGNvbXBsZXRlcywgdGhlIG5leHQgZGF0YWJhc2UgdGhyZWFkIHRhc2sgd2ls
bCBiZSAiZGVsZXRlIGFsbCBjdXJyZW50bHkgY2xvc2VkIGRhdGFiYXNlcyIKICAgICAvLyB3aGlj
aCB3aWxsIGFsc28gY292ZXIgdGhpcyBkYXRhYmFzZS4KICAgICBpZiAobV9vd25pbmdQb2ludGVy
Rm9yQ2xvc2UpCiAgICAgICAgIHJldHVybjsKLQotICAgIG5vdGlmeVNlcnZlckFib3V0Q2xvc2Uo
Q2xvc2VTdGF0ZTo6U3RhcnQpOworICAgIAogICAgIC8vIE90aGVyd2lzZSwgdGhpcyBkYXRhYmFz
ZSBpcyBzdGlsbCBwb3RlbnRpYWxseSBhY3RpdmUuCiAgICAgLy8gU28gd2UnbGwgaGF2ZSBpdCBv
d24gaXRzZWxmIGFuZCB0aGVuIHBlcmZvcm0gYSBjbGVhbiB1bmNvbmRpdGlvbmFsIGRlbGV0ZSBv
biB0aGUgYmFja2dyb3VuZCB0aHJlYWQuCiAgICAgbV9vd25pbmdQb2ludGVyRm9yQ2xvc2UgPSBt
X3NlcnZlci0+Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJhc2UoKnRoaXMpOworfQorCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKQoreworICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2Vy
RGVsZXRlIC0gQ2FuY2VsbGluZyAoJWksICVpLCAlaSwgJWkpIGNhbGxiYWNrcyIsIG1fZXJyb3JD
YWxsYmFja3Muc2l6ZSgpLCBtX2tleURhdGFDYWxsYmFja3Muc2l6ZSgpLCBtX2dldFJlc3VsdENh
bGxiYWNrcy5zaXplKCksIG1fY291bnRDYWxsYmFja3Muc2l6ZSgpKTsKKworICAgIGltbWVkaWF0
ZUNsb3NlKCk7CiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybVVuY29uZGl0aW9uYWxEZWxldGVCYWNraW5n
U3RvcmUpKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JT
dXNwZW5kKCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmltbWVk
aWF0ZUNsb3NlRm9yU3VzcGVuZCAtIENhbmNlbGxpbmcgKCVpLCAlaSwgJWksICVpKSBjYWxsYmFj
a3MiLCBtX2Vycm9yQ2FsbGJhY2tzLnNpemUoKSwgbV9rZXlEYXRhQ2FsbGJhY2tzLnNpemUoKSwg
bV9nZXRSZXN1bHRDYWxsYmFja3Muc2l6ZSgpLCBtX2NvdW50Q2FsbGJhY2tzLnNpemUoKSk7Cisg
ICAgCisgICAgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNy
b3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bkZvckNsb3Nl
KSk7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnVwZGF0ZVNwYWNlVXNlZElmTmVlZGVk
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9w
ZW5kaW5nU3BhY2VJbmNyZWFzaW5nVGFza3MuZmluZChjYWxsYmFja0lkZW50aWZpZXIpOwpAQCAt
MjI5MSwxOSArMjI5OSw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNldFF1b3RhKHVpbnQ2
NF90IHF1b3RhKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+c2V0UXVvdGEocXVvdGEpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3Rh
dGUgc3RhdGUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIGlmIChzdGF0ZSA9PSBDbG9zZVN0YXRlOjpTdGFydCkgCi0gICAgICAg
IG1fc2VydmVyLT5jbG9zZURhdGFiYXNlKHRoaXMpOwotICAgIGVsc2UKLSAgICAgICAgbV9zZXJ2
ZXItPmRpZENsb3NlRGF0YWJhc2UodGhpcyk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYmNlNjc0NWE2YTNhMzE4YmJl
OTIyNDY3Y2EzNjljYzBmYThlOGFlNi4uZTIxMmFmY2U0YzFkOTU5ZWEyZjUzNjFjMjlhMTg0NTI5
OWVlMjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25z
dCBJREJSZXF1ZXN0RGF0YSYpOwogICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRl
KCk7CisgICAgdm9pZCBpbW1lZGlhdGVDbG9zZUZvclN1c3BlbmQoKTsKIAogICAgIHN0YXRpYyBK
U0M6OlZNJiBkYXRhYmFzZVRocmVhZFZNKCk7CiAgICAgc3RhdGljIEpTQzo6RXhlY1N0YXRlJiBk
YXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpOwpAQCAtMTI4LDggKzEyOSw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KTsKIAogcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNzIENs
b3NlU3RhdGUgeyBTdGFydCwgRG9uZSB9OwotCiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJh
dGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAgICB2b2lkIHBl
cmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMjUxLDExICsyNTAsMTEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG1heWJlRmluaXNoSGFyZENsb3NlKCk7CiAgICAgYm9vbCBpc0RvbmVXaXRo
SGFyZENsb3NlKCk7CiAKLSAgICB2b2lkIG5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0
ZSk7Ci0KICAgICB2b2lkIHJlcXVlc3RTcGFjZSh1aW50NjRfdCB0YXNrU2l6ZSwgY29uc3QgY2hh
ciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9y
PiYmKT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJik7CiAgICAgdm9pZCB1cGRh
dGVTcGFjZVVzZWRJZk5lZWRlZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpOworICAgIAor
ICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKIAogICAgIFJlZjxJREJTZXJ2ZXI+IG1fc2VydmVy
OwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDczZjFiNDgzNzY5
ZWJkZGNlZjliZDRiN2Y0ZWMxMDNhYzVhOWY0YTIuLjU4N2YwODEyMzFlN2EyODk4NjZmOGUyODNi
YzViNDUzNWRiZGM5OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0xNDAxLDcgKzE0MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxX
ZWJzaQogICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBuZWVkIHRvIHJlLWdyYW5kZmF0aGVy
IG9sZCBkYXRhLgogICAgICAgICAgICAgICAgIGF1dG8gc2hvdWxkR3JhbmRmYXRoZXIgPSAoKG1v
bml0b3JlZFR5cGVzUmF3ICYgZGVsZXRlZFR5cGVzUmF3KSA9PSBtb25pdG9yZWRUeXBlc1Jhdykg
PyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vIDogU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzOjpZZXM7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChtb2RpZmll
ZFNpbmNlLCBzaG91bGRHcmFuZGZhdGhlciwgW2NsZWFyVGFza3NIYW5kbGVyID0gY2xlYXJUYXNr
c0hhbmRsZXIuY29weVJlZigpXSB7IH0pOworICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRTaW5j
ZSwgc2hvdWxkR3JhbmRmYXRoZXIsIFtjbGVhckhhbmRsZXIgPSBjbGVhclRhc2tzSGFuZGxlci5j
b3B5UmVmKCldIHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xOTYx
LDEwICsxOTYxLDMzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKICAgICAgICAgY29ubmVjdGlv
bi0+Y2xlYW51cEZvclN1c3BlbnNpb24oW2RlbGF5ZWRUYXNrQ291bnRlcl0geyB9KTsKIH0KIAor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2h1dGRvd25JREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHRhc2tzSGFuZGxl
ciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRi
U2VydmVycykgeworICAgICAgICBpZiAoIXNlcnZlci5rZXkuaXNFcGhlbWVyYWwoKSkKKyAgICAg
ICAgICAgIHNlcnZlci52YWx1ZS0+c2h1dGRvd25Gb3JTdXNwZW5kKFt0YXNrc0hhbmxkZXJDb3B5
ID0gdGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlc3VtZUlEQlNlcnZlcigpCit7CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBt
X2lkYlNlcnZlcnMpIHsKKyAgICAgICAgaWYgKCFzZXJ2ZXIua2V5LmlzRXBoZW1lcmFsKCkpCisg
ICAgICAgICAgICBzZXJ2ZXIudmFsdWUtPnJlc3VtZUZyb21TdXNwZW5kKCk7CisgICAgfQorfQor
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYWN0
dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6
Tm8pOworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIHNodXRkb3duSURCU2VydmVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3Vz
cGVuZCgpCkBAIC0xOTgzLDYgKzIwMDYsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQ
cmVwYXJlVG9TdXNwZW5kKCkKICAgICBwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKTsKICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAg
Y29ubmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorICAgIHJlc3VtZUlEQlNlcnZlcigpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIwMDEsNiArMjAyNyw5IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogICAgIHBsYXRmb3JtUHJv
Y2Vzc0RpZFJlc3VtZSgpOwogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9uKCk7CisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcmVzdW1lSURCU2VydmVyKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKQEAgLTIxMDUsMTAgKzIxMzQsNiBAQCBSZWY8SURCU2VydmVyOjpJREJTZXJ2ZXI+IE5l
dHdvcmtQcm9jZXNzOjpjcmVhdGVJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IHJldHVybiAmdGhpcy0+c3RvcmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbik7Ci0g
ICAgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgaXNIb2xkaW5n
TG9ja2VkRmlsZXMpIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdGhpcy0+bm90aWZ5SG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tl
ZEZpbGVzKTsKICAgICB9KTsKICAgICBzZXJ2ZXItPnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVy
T3JpZ2luUXVvdGEpOwogICAgIHJldHVybiBzZXJ2ZXI7CkBAIC0yNDg3LDkgKzI1MTIsNCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6Om5vdGlmeUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2V0SXNJREJEYXRhYmFzZUhv
bGRpbmdMb2NrZWRGaWxlcyhpc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSwgMCk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDUyOWY4NzkyMjBmNmU1MWEzNDBlZTRiNzYzYTIwMjMx
YTc0NjdlZWEuLjAzMDQ5NjMxYjExMTY0MGM2ZDBjN2I2MGYyZWY5Y2UwOGUwYmZkYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQwNSw4
ICs0MDUsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAg
ICB2b2lkIGRpZFN5bmNBbGxDb29raWVzKCk7Ci0KLSAgICB2b2lkIG5vdGlmeUhvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpOwogI2lmIFVTRShT
T1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJyb3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKQEAgLTQzNiw2
ICs0MzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29sbGVjdEluZGV4ZWREYXRhYmFzZU9yaWdp
bnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYpOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRl
eGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgUmVmPFdlYkNvcmU6
OklEQlNlcnZlcjo6SURCU2VydmVyPiBjcmVhdGVJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgc2h1dGRvd25JREJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCByZXN1bWVJREJTZXJ2ZXIoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMGI5MWUzOTFlMzk4M2Q0MWViNTIyNjQx
NjM0YmRiYTRmOTZhNWUxYS4uY2RmNjk2ODg2ODIxZjY4NzYwOGNlZmMzZDk4OTdlMWQzMDMwNjhk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yNzksNyArMjc5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAKICAgICBtX3Rva2Vu
Rm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKLSAgICBtX3Rva2VuRm9ySURCRGF0YWJh
c2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogICAgIAogICAgIG1fc3luY0FsbENvb2tp
ZXNUb2tlbiA9IG51bGxwdHI7CiAgICAgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgPSAwOwpAQCAt
MTA0MiwxOSArMTA0MSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5n
TG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKICAgICB9CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhi
b29sIGlzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgaWYgKCFpc0lEQkRh
dGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9u
IGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQg
ZmlsZXMgZm9yIElEQkRhdGFiYXNlIik7Ci0gICAgICAgIG1fdG9rZW5Gb3JJREJEYXRhYmFzZUhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
aWYgKCFtX3Rva2VuRm9ySURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFj
a2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIGhvbGRpbmcg
bG9ja2VkIGZpbGVzIGZvciBJREJEYXRhYmFzZSIpOwotICAgICAgICBtX3Rva2VuRm9ySURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29v
a2llcygpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNBbGxDb29r
aWVzKCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzNzIzNTZiODY4MmMyOTkzMzk1MGQ3NWEwYmYzMWI4
ODdkMjEzNTBjLi4wZTM4MWViZWJjZDNjNmMxYWE0YTMyODIxYzMxMmIzOThjNDNjMzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMTU4LDcgKzE1OCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVB
cHBJc0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5kKTsKIAogICAgIHZvaWQgc2V0SXNIb2xkaW5n
TG9ja2VkRmlsZXMoYm9vbCk7Ci0gICAgdm9pZCBzZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tl
ZEZpbGVzKGJvb2wpOwogCiAgICAgdm9pZCBzeW5jQWxsQ29va2llcygpOwogICAgIHZvaWQgZGlk
U3luY0FsbENvb2tpZXMoKTsKQEAgLTI2MCw3ICsyNTksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpC
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAg
IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JJREJE
YXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlczsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBtX3N5bmNBbGxDb29raWVzVG9rZW47CiAgICAgCiAgICAgdW5zaWdu
ZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4ZjE3YzQ2NTJlYTQ5YjgxNmZjMzM2NzdkYmFhZS4uOTU1
NjVhYzU0Y2IyZTk0YTU2M2QyNDYwMDgwMzY0NmFkMDU1MTZhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzMsNyArMzMsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCiAg
ICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKLSAg
ICBTZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNJREJEYXRhYmFzZUhv
bGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMgRGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCiAg
ICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwg
U3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366210</attachid>
            <date>2019-03-28 14:45:33 -0700</date>
            <delta_ts>2019-04-01 16:14:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190328144533.patch</filename>
            <type>text/plain</type>
            <size>33096</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE5MGI4ODljMWEzYTAy
NzlhNmNhNjUxNTBjNmE1ZjE3ZjRhNTAwYy4uNTdiMTY5MTA3MTA5ODMzMWI2MDMyM2I5ZWZkN2Yy
OWI4MGJiMjJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTAzLTI4ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIG9wZW4gSURCRGF0
YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJREJEYXRhYmFzZSBzaG91bGQgc2h1dCBkb3duIGltbWVkaWF0ZWx5
IGFuZCBzdG9wIGhvbGRpbmcgbG9ja2VkIGRhdGFiYXNlIGZpbGVzIGluIHByZXBhcmF0aW9uIGZv
ciBuZXR3b3JrIAorICAgICAgICBwcm9jZXNzIHN1c3BlbnNpb24uCisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjpJREJTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OnNodXRkb3duRm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6ZmluYWxpemVTaHV0ZG93bkZvclN1c3BlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpZFNodXRkb3duRm9yU3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVzdW1lRnJvbVN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjptX3F1b3RhTWFuYWdlckdldHRlcik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y2xvc2VEYXRhYmFzZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlkQ2xv
c2VEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmNy
ZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmludGVycnVwdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZTo6c2NoZWR1bGVTaHV0ZG93bkZvckNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duRm9yQ2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1dGRvd25Gb3JD
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWREZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVzZXJE
ZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
aW1tZWRpYXRlQ2xvc2VGb3JTdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6Om5vdGlmeVNlcnZlckFib3V0Q2xvc2UpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCiAy
MDE5LTAzLTI3ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYiBHUFVdIFN0YW5kYXJkaXplIFdlYiBHUFUgb2JqZWN0IHJlZmVyZW5jZSBjb3VudGluZyBh
bmQgY3JlYXRpb24gbG9naWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDY2YzMwYTY4ZTVmYWY1MjMzZTViYmVhZTE4
ZWQyNjYxOWZhM2NlOC4uZDQ4ZWZkODVhYWFiOTI0ZmQ5N2IzNzIyYjVmNThjN2MwODQ5NTYyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOS0wMy0yOCAgU2lodWkgTGl1ICA8c2lodWlf
bGl1QGFwcGxlLmNvbT4KKworICAgICAgICBDbG9zZSBvcGVuIElEQkRhdGFiYXNlIHdoZW4gbmV0
d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgZ29pbmcgdG8gc3VzcGVuZCwgaXQgc2hvdWxkIHN0
b3AgaGFuZGxpbmcgcmVxdWVzdHMgdGhhdCBvcGVuIGRhdGFiYXNlIGZpbGUuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgcHJvY2VzcyBhc3NlcnRpb24gZm9yIElEQiBjbG9zZSBi
ZWNhdXNlIFNRTGl0ZURhdGFiYXNlIGFscmVhZHkgdGFrZXMgY2FyZSBvZiB0aGF0LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2h1dGRvd25JREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzRGlkUmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZUlEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpub3RpZnlIb2xkaW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIw
MTktMDMtMjcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIElu
Y2x1ZGUgdGhlIENGTmV0d29ya2luZyB0YXNrIFVVSUQgdG8gdGhlIE5TRXJyb3Igd2hlbiBhIHJl
c291cmNlLWxvYWQgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRleCBjNmQ3ZDQzZjllYmFkZDI5
MjQ4MGNmNGVhYzQwNzg3NTEwMDlhNDAxLi4yNTUwODJmNjlhOGEyOGViOWRlN2VhNmUyYTc2ZGE4
ZjBmOTgzNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMDEsNiArMTAxLDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB1aW50NjRfdCBkYXRhYmFzZXNTaXplRm9yT3JpZ2luKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRRdW90YSh1aW50NjRfdCkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIGludGVycnVwdCgpID0gMDsKIHByb3RlY3RlZDoKICAgICBJREJCYWNraW5nU3Rv
cmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmlu
ZGV4IDYyZjMyMGNmYjAzY2RkYjNmNzMyMmQzYjQ4YTQ5MTc4YzczOTg3N2IuLjY5NGYxMjRhYjlk
OTY5NjZhNTA4Yjg0MDUwMWM3ODhjMWFmNmRkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC00NSwzMyArNDUs
MjkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCi1SZWY8
SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElE
QkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5h
Z2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+
JiYgaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykKK1JlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6
Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5
RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBRdW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFn
ZXJHZXR0ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCU2VydmVyKHNlc3Npb25J
RCwgZmlsZUhhbmRsZXIsIFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSwgV1RGTW92ZShpc0Ns
b3NpbmdEYXRhYmFzZUNhbGxiYWNrKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlNl
cnZlcihzZXNzaW9uSUQsIGZpbGVIYW5kbGVyLCBXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRlcikp
KTsKIH0KIAotUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFja2lu
Z1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBRdW90YU1hbmFnZXJHZXR0
ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBpc0Ns
b3NpbmdEYXRhYmFzZUNhbGxiYWNrKQorUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBR
dW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSURCU2VydmVyKHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBm
aWxlSGFuZGxlciwgV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpLCBXVEZNb3ZlKGlzQ2xvc2lu
Z0RhdGFiYXNlQ2FsbGJhY2spKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCU2VydmVy
KHNlc3Npb25JRCwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBmaWxlSGFuZGxlciwgV1RGTW92ZShx
dW90YU1hbmFnZXJHZXR0ZXIpKSk7CiB9CiAKLUlEQlNlcnZlcjo6SURCU2VydmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZp
bGVIYW5kbGVyLCBRdW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJiBpc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKQorSURCU2Vy
dmVyOjpJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJREJCYWNraW5nU3RvcmVU
ZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1
b3RhTWFuYWdlckdldHRlcikKICAgICA6IENyb3NzVGhyZWFkVGFza0hhbmRsZXIoIkluZGV4ZWRE
YXRhYmFzZSBTZXJ2ZXIiKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9i
YWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcihmaWxlSGFuZGxlcikKLSAgICAsIG1faXND
bG9zaW5nRGF0YWJhc2VDYWxsYmFjayhXVEZNb3ZlKGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2sp
KQotICAgICwgbV9pc0Nsb3NpbmdEYXRhYmFzZUh5c3RlcmVzaXMoWyZdKFBBTDo6SHlzdGVyZXNp
c1N0YXRlIHN0YXRlKSB7IG1faXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjayhzdGF0ZSA9PSBQQUw6
Okh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7IH0pCiAgICAgLCBtX3F1b3RhTWFuYWdlckdldHRl
cihXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRlcikpCiB7CiB9CiAKLUlEQlNlcnZlcjo6SURCU2Vy
dmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVj
dG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxl
ciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykKK0lEQlNlcnZlcjo6SURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURp
cmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFu
ZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyKQogICAgIDogQ3Jv
c3NUaHJlYWRUYXNrSGFuZGxlcigiSW5kZXhlZERhdGFiYXNlIFNlcnZlciIpCiAgICAgLCBtX3Nl
c3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgpCiAgICAgLCBtX2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVy
KGZpbGVIYW5kbGVyKQotICAgICwgbV9pc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKFdURk1vdmUo
aXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykpCi0gICAgLCBtX2lzQ2xvc2luZ0RhdGFiYXNlSHlz
dGVyZXNpcyhbJl0oUEFMOjpIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgbV9pc0Nsb3NpbmdEYXRh
YmFzZUNhbGxiYWNrKHN0YXRlID09IFBBTDo6SHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKTsgfSkK
ICAgICAsIG1fcXVvdGFNYW5hZ2VyR2V0dGVyKFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyIGNyZWF0ZWQgYXQgcGF0aCAlcyIsIGRh
dGFiYXNlRGlyZWN0b3J5UGF0aC51dGY4KCkuZGF0YSgpKTsKQEAgLTE0NSw4ICsxNDEsNiBAQCB2
b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjpvcGVuRGF0YWJhc2UiKTsK
IAotICAgIGF1dG8mIHVuaXF1ZUlEQkRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRh
YmFzZShyZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0KICAgICBhdXRvIGNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFjb25uZWN0aW9uKSB7CiAgICAg
ICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGJhY2sgdG8gdGhlIGNsaWVudCBpcyBnb25lLCB0aGVy
ZSdzIG5vIHdheSB0byBvcGVuIHRoZSBkYXRhYmFzZSBhcwpAQCAtMTU0LDYgKzE0OCwxNCBAQCB2
b2lkIElEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX3ByZXBhcmluZ1RvU3Vz
cGVuZE9yU3VzcGVuZGVkKSB7CisgICAgICAgIC8vIFN0b3AgcHJvY2Vzc2luZyBpbmNvbWluZyBv
cGVuIHJlcXVlc3QgaWYgcmVhZHkgdG8gc3VzcGVuZC4KKyAgICAgICAgYXV0byByZXN1bHQgPSBJ
REJSZXN1bHREYXRhOjplcnJvcihyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBJREJF
cnJvcihVbmtub3duRXJyb3IsICJVbmFibGUgdG8gb3BlbiBkYXRhYmFzZSBiZWNhdXNlIG5ldHdv
cmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQiX3MpKTsKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkT3Bl
bkRhdGFiYXNlKHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiB1
bmlxdWVJREJEYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERh
dGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIHVuaXF1ZUlEQkRhdGFiYXNlLm9wZW5EYXRh
YmFzZUNvbm5lY3Rpb24oKmNvbm5lY3Rpb24sIHJlcXVlc3REYXRhKTsKIH0KIApAQCAtMTY5LDYg
KzE3MSwxMyBAQCB2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1f
cHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQpIHsKKyAgICAgICAgLy8gU3RvcCBwcm9jZXNz
aW5nIGluY29taW5nIGRlbGV0ZSByZXF1ZXN0IGlmIHJlYWR5IHRvIHN1c3BlbmQuCisgICAgICAg
IGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElk
ZW50aWZpZXIoKSwgSURCRXJyb3IoVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIGRlbGV0ZSBkYXRh
YmFzZSBiZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBzdXNwZW5kZWQiX3MpKTsKKyAgICAgICAg
Y29ubmVjdGlvbi0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKwogICAgIGF1dG8qIGRhdGFiYXNlID0gbV91bmlxdWVJREJEYXRhYmFzZU1hcC5nZXQo
cmVxdWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgIGlmICghZGF0YWJhc2UpCiAg
ICAgICAgIGRhdGFiYXNlID0gJmdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERh
dGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwpAQCAtNzAyLDI5ICs3MTEsNiBAQCB2b2lkIElEQlNl
cnZlcjo6c2V0UGVyT3JpZ2luUXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgICAgIGRhdGFiYXNl
LT5zZXRRdW90YShxdW90YSk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpjbG9zZURhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91bmlxdWVJREJEYXRhYmFzZXNJbkNsb3Nl
LmFkZChkYXRhYmFzZSk7Ci0gICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5ICYmIG1fdW5pcXVl
SURCRGF0YWJhc2VzSW5DbG9zZS5zaXplKCkgPT0gMSkKLSAgICAgICAgbV9pc0Nsb3NpbmdEYXRh
YmFzZUh5c3RlcmVzaXMuc3RhcnQoKTsKLX0KLQotdm9pZCBJREJTZXJ2ZXI6OmRpZENsb3NlRGF0
YWJhc2UoVW5pcXVlSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdW5pcXVlSURCRGF0YWJhc2VzSW5DbG9zZS5yZW1v
dmUoZGF0YWJhc2UpKSB7Ci0gICAgICAgIGlmIChtX3VuaXF1ZUlEQkRhdGFiYXNlc0luQ2xvc2Uu
aXNFbXB0eSgpKQotICAgICAgICAgICAgbV9pc0Nsb3NpbmdEYXRhYmFzZUh5c3RlcmVzaXMuc3Rv
cCgpOwotICAgIH0KLX0KLQogSURCU2VydmVyOjpRdW90YVVzZXI6OlF1b3RhVXNlcihJREJTZXJ2
ZXImIHNlcnZlciwgU3RvcmFnZVF1b3RhTWFuYWdlciogbWFuYWdlciwgQ2xpZW50T3JpZ2luJiYg
b3JpZ2luKQogICAgIDogbV9zZXJ2ZXIoc2VydmVyKQogICAgICwgbV9tYW5hZ2VyKG1ha2VXZWFr
UHRyKG1hbmFnZXIpKQpAQCAtODU1LDYgKzg0MSw0MiBAQCB2b2lkIElEQlNlcnZlcjo6dXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQgSURCU2VydmVyOjpzaHV0ZG93bkZv
clN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIG1fcHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQgPSB0cnVlOworICAgIAorICAg
IEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2UqPiBvcGVuRGF0YWJhc2VzOworICAgIGZvciAoYXV0
byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnZhbHVlcygpKQorICAgICAgICBv
cGVuRGF0YWJhc2VzLmFkZChkYXRhYmFzZS5nZXQoKSk7CisKKyAgICBmb3IgKGF1dG8mIGRhdGFi
YXNlIDogb3BlbkRhdGFiYXNlcykKKyAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlRm9y
U3VzcGVuZCgpOworICAgIAorICAgIG1fc3VzcGVuZENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZJREJTZXJ2ZXI6OmZpbmFsaXplU2h1dGRvd25Gb3JTdXNwZW5kKSk7
Cit9CisKK3ZvaWQgSURCU2VydmVyOjpmaW5hbGl6ZVNodXRkb3duRm9yU3VzcGVuZCgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJklEQlNlcnZlcjo6ZGlkU2h1dGRvd25Gb3JTdXNw
ZW5kKSk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpkaWRTaHV0ZG93bkZvclN1c3BlbmQoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fcHJlcGFyaW5nVG9TdXNwZW5k
T3JTdXNwZW5kZWQpIHsKKyAgICAgICAgbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXIgPSB7IH07CisgICAgfQorfQorCit2b2lk
IElEQlNlcnZlcjo6cmVzdW1lRnJvbVN1c3BlbmQoKQoreworICAgIEFTU0VSVChtX3ByZXBhcmlu
Z1RvU3VzcGVuZE9yU3VzcGVuZGVkKTsKKyAgICBtX3ByZXBhcmluZ1RvU3VzcGVuZE9yU3VzcGVu
ZGVkID0gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggYWU0YmZkODg5NzNlNzViMDAxNWY3ZmRlOGExNTAxZTI3
ZGE1ZjE5Mi4uNDc3YWE3ZmZjYzdkOTI1ODRmOTY2YjI0MmU1ZTU3M2IwZjg3NTlkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YVVzZXIuaCIKICNpbmNs
dWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbi5oIgotI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAsOCArNTksOCBAQCBjbGFzcyBJREJC
YWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKIGNsYXNzIElEQlNlcnZlciA6IHB1Ymxp
YyBSZWZDb3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5kbGVyIHsK
IHB1YmxpYzoKICAgICB1c2luZyBRdW90YU1hbmFnZXJHZXR0ZXIgPSBXVEY6OkZ1bmN0aW9uPFN0
b3JhZ2VRdW90YU1hbmFnZXIqKFBBTDo6U2Vzc2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mKT47
Ci0gICAgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSURCQmFj
a2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2sgPSBbXShi
b29sKSB7IH0pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVh
dGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJ
REJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjayA9
IFtdKGJvb2wpIHsgfSk7CisgICAgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNl
c3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFn
ZXJHZXR0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNy
ZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgs
IElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVy
JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlckNvbm5lY3Rpb24oSURCQ29u
bmVjdGlvblRvQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyQ29u
bmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTExNSwxMCArMTE0LDYgQEAgcHVi
bGljOgogICAgIHVpbnQ2NF90IHBlck9yaWdpblF1b3RhKCkgY29uc3QgeyByZXR1cm4gbV9wZXJP
cmlnaW5RdW90YTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGVyT3JpZ2luUXVvdGEo
dWludDY0X3QpOwogCi0gICAgdm9pZCBjbG9zZURhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlKik7
Ci0gICAgdm9pZCBkaWRDbG9zZURhdGFiYXNlKFVuaXF1ZUlEQkRhdGFiYXNlKik7Ci0gICAgdm9p
ZCBoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSk7Ci0KICAgICB2b2lkIHJl
cXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRfdCB0YXNrU2l6ZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbik+JiYpOwogICAg
IHZvaWQgaW5jcmVhc2VQb3RlbnRpYWxTcGFjZVVzZWQoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWlu
dDY0X3QgdGFza1NpemUpOwogICAgIHZvaWQgZGVjcmVhc2VQb3RlbnRpYWxTcGFjZVVzZWQoY29u
c3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwpAQCAtMTI3LDkgKzEyMiwxMiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3Jp
Z2luJiBvcmlnaW4pIHsgZW5zdXJlUXVvdGFVc2VyKG9yaWdpbik7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2h1dGRvd25Gb3JTdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVGcm9tU3VzcGVuZCgpOworCiBwcml2
YXRlOgotICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9y
YXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmKTsKLSAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxl
ciYsIFF1b3RhTWFuYWdlckdldHRlciYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOwor
ICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5Rmls
ZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CisgICAgSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0
b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CiAKICAgICBV
bmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImKTsKIApAQCAtMTQ0LDYgKzE0Miw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVEYXRhYmFzZXNNb2RpZmllZFNpbmNlRm9yVmVyc2lvbihXYWxsVGltZSwgY29u
c3QgU3RyaW5nJik7CiAgICAgdm9pZCByZW1vdmVEYXRhYmFzZXNXaXRoT3JpZ2luc0ZvclZlcnNp
b24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCBjb25zdCBTdHJpbmcmKTsKIAor
ICAgIHZvaWQgZmluYWxpemVTaHV0ZG93bkZvclN1c3BlbmQoKTsKKyAgICB2b2lkIGRpZFNodXRk
b3duRm9yU3VzcGVuZCgpOworCiAgICAgY2xhc3MgUXVvdGFVc2VyIGZpbmFsIDogcHVibGljIFN0
b3JhZ2VRdW90YVVzZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CkBAIC0xODUsNyArMTg2LDYgQEAgcHJpdmF0ZToKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SURCQ29ubmVjdGlvblRv
Q2xpZW50Pj4gbV9jb25uZWN0aW9uTWFwOwogICAgIEhhc2hNYXA8SURCRGF0YWJhc2VJZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8VW5pcXVlSURCRGF0YWJhc2U+PiBtX3VuaXF1ZUlEQkRhdGFi
YXNlTWFwOwotICAgIEhhc2hTZXQ8VW5pcXVlSURCRGF0YWJhc2UqPiBtX3VuaXF1ZUlEQkRhdGFi
YXNlc0luQ2xvc2U7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24qPiBtX2RhdGFiYXNlQ29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxJREJSZXNvdXJj
ZUlkZW50aWZpZXIsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24qPiBtX3RyYW5zYWN0aW9u
czsKQEAgLTE5NywxMSArMTk3LDExIEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3Blck9y
aWdpblF1b3RhIHsgZGVmYXVsdFBlck9yaWdpblF1b3RhIH07CiAKLSAgICBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+IG1faXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjazsKLSAgICBQQUw6Okh5c3Rl
cmVzaXNBY3Rpdml0eSBtX2lzQ2xvc2luZ0RhdGFiYXNlSHlzdGVyZXNpczsKLQogICAgIEhhc2hN
YXA8Q2xpZW50T3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UXVvdGFVc2VyPj4gbV9xdW90YVVzZXJz
OwogICAgIFF1b3RhTWFuYWdlckdldHRlciBtX3F1b3RhTWFuYWdlckdldHRlcjsKKworICAgIGJv
b2wgbV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgRnVuY3Rp
b248dm9pZCgpPiBtX3N1c3BlbmRDb21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDY0ZTZjYzdk
ZTBjYTY3NjdlYzE4ZDUxNGJjYWFmNGJkOGE1NjJjN2YuLmEzNGY3YzFhOTk0OTAyZGU4ZGZhMTJi
MjU0OGI3NzgwMmI2YTkxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTg1
LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9u
Q2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RT
dG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwogCisg
ICAgdm9pZCBpbnRlcnJ1cHQoKSBmaW5hbCB7IH07CiBwcml2YXRlOgogICAgIFJlZlB0cjxNZW1v
cnlPYmplY3RTdG9yZT4gdGFrZU9iamVjdFN0b3JlQnlJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50
aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDYzMGI2OWQx
ZjQ1YjlhNDhhMzNmOTY1ZjMyZmI0NWU0YzNkM2Q0YTEuLjFjMmZhYmY3MTljNzdlODRhMTc0MTZj
Zjk0N2EwODI5OTZmMzRjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBA
IC0yNjkxLDYgKzI2OTEsMTIgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsb3NlU1FM
aXRlREIoKQogICAgIG1fc3FsaXRlREIgPSBudWxscHRyOwogfQogCit2b2lkIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6aW50ZXJydXB0KCkKK3sKKyAgICBpZiAobV9zcWxpdGVEQi0+aXNPcGVuKCkp
CisgICAgICAgIG1fc3FsaXRlREItPmludGVycnVwdCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5oCmluZGV4IDU2YjUxN2MyYTYxMDc0NGJkZWYyMGUxODg5YzA2MzFjMzBhYWZiNTguLjlk
NDkwNzFiOWUyYTJjM2ExOTM2NjRlYjMzOWE0Y2UyMzFkMzgzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogICAgIHN0
YXRpYyBTdHJpbmcgZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2
b2lkIGludGVycnVwdCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIFN0cmluZyBmaWxlbmFtZUZv
ckRhdGFiYXNlTmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBhNjI5NzBhNTNiMTAxMDNiMWE2ZWU5
NDk2ZDMxMzMwYTQ5OTg4ODIxLi41YTU0MjJkZTcxMWVmNjIyYzM2ZGU1NjM5Y2Y5YTM3NjVmNzBi
ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTMzMCw3ICszMzAsNiBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3VycmVudERlbGV0ZU9wZXJhdGlvbigpCiAgICAg
ICAgICAgICBkaWREZWxldGVCYWNraW5nU3RvcmUoMCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgbV9kZWxldGVCYWNraW5nU3RvcmVJblByb2dyZXNzID0gdHJ1ZTsKLSAgICAgICAgICAg
IG5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZTo6U3RhcnQpOwogICAgICAgICAgICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlLCBtX2lkZW50aWZpZXIpKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTM0NCw2ICszNDMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVC
YWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaQogICAgIHVp
bnQ2NF90IGRlbGV0ZWRWZXJzaW9uID0gMDsKIAogICAgIGlmIChtX2JhY2tpbmdTdG9yZSkgewor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9iYWNraW5nU3RvcmVNdXRleCk7CiAgICAgICAgIG1f
YmFja2luZ1N0b3JlLT5kZWxldGVCYWNraW5nU3RvcmUoKTsKICAgICAgICAgbV9iYWNraW5nU3Rv
cmUgPSBudWxscHRyOwogICAgICAgICBtX2JhY2tpbmdTdG9yZVN1cHBvcnRzU2ltdWx0YW5lb3Vz
VHJhbnNhY3Rpb25zID0gZmFsc2U7CkBAIC0zODMsNyArMzgzLDYgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6c2NoZWR1bGVTaHV0ZG93bkZvckNsb3NlKCkKICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9vd25pbmdQb2ludGVyRm9yQ2xvc2UpOwogICAgIG1fb3duaW5nUG9pbnRlckZvckNsb3NlID0g
bV9zZXJ2ZXItPmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsKIAotICAgIG5v
dGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZTo6U3RhcnQpOwogICAgIHBvc3REYXRhYmFz
ZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnNo
dXRkb3duRm9yQ2xvc2UpKTsKIH0KIApAQCAtMzk0LDcgKzM5MywxMCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpzaHV0ZG93bkZvckNsb3NlKCkKIAogICAgIExPRyhJbmRleGVkREIsICIoZGIp
IFVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93bkZvckNsb3NlIik7CiAKLSAgICBtX2JhY2tpbmdT
dG9yZSA9IG51bGxwdHI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9iYWNraW5n
U3RvcmVNdXRleCk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKKyAgICB9CiAg
ICAgbV9iYWNraW5nU3RvcmVTdXBwb3J0c1NpbXVsdGFuZW91c1RyYW5zYWN0aW9ucyA9IGZhbHNl
OwogICAgIG1fYmFja2luZ1N0b3JlSXNFcGhlbWVyYWwgPSBmYWxzZTsKIApAQCAtNDExLDcgKzQx
Myw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFNodXRkb3duRm9yQ2xvc2UoKQogewog
ICAgIEFTU0VSVChtX2RhdGFiYXNlUmVwbHlRdWV1ZS5pc0VtcHR5KCkpOwogICAgIG1fZGF0YWJh
c2VSZXBseVF1ZXVlLmtpbGwoKTsKLSAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3Rh
dGU6OkRvbmUpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5n
U3RvcmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCkBAIC00NDcsNyArNDQ4LDYgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkRGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRW
ZXJzaW9uKQogCiAgICAgaWYgKG1faGFyZENsb3NlZEZvclVzZXJEZWxldGUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3RhdGU6OkRvbmUpOwogCiAg
ICAgaW52b2tlT3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lcigpOwogfQpAQCAtNzUyLDYgKzc1
Miw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyCiAgICAgTE9HKEluZGV4ZWREQiwgIihkYikg
VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmUgKCVwKSIsIHRoaXMpOwogCiAgICAg
QVNTRVJUKCFtX2JhY2tpbmdTdG9yZSk7CisgICAgTG9ja0hvbGRlciBsb2NrKG1fYmFja2luZ1N0
b3JlTXV0ZXgpOwogICAgIG1fYmFja2luZ1N0b3JlID0gbV9zZXJ2ZXItPmNyZWF0ZUJhY2tpbmdT
dG9yZShpZGVudGlmaWVyKTsKICAgICBtX2JhY2tpbmdTdG9yZVN1cHBvcnRzU2ltdWx0YW5lb3Vz
VHJhbnNhY3Rpb25zID0gbV9iYWNraW5nU3RvcmUtPnN1cHBvcnRzU2ltdWx0YW5lb3VzVHJhbnNh
Y3Rpb25zKCk7CiAgICAgbV9iYWNraW5nU3RvcmVJc0VwaGVtZXJhbCA9IG1fYmFja2luZ1N0b3Jl
LT5pc0VwaGVtZXJhbCgpOwpAQCAtMjEyNiwxMCArMjEyNyw4IEBAIHN0YXRpYyB2b2lkIGVycm9y
T3BlbkRCUmVxdWVzdEZvclVzZXJEZWxldGUoU2VydmVyT3BlbkRCUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uKCkuZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0KTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRl
KCkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlKCkKIHsKLSAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0
ZSAtIENhbmNlbGxpbmcgKCVpLCAlaSwgJWksICVpKSBjYWxsYmFja3MiLCBtX2Vycm9yQ2FsbGJh
Y2tzLnNpemUoKSwgbV9rZXlEYXRhQ2FsbGJhY2tzLnNpemUoKSwgbV9nZXRSZXN1bHRDYWxsYmFj
a3Muc2l6ZSgpLCBtX2NvdW50Q2FsbGJhY2tzLnNpemUoKSk7Ci0KICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgbV9wZW5kaW5nU3BhY2VJbmNyZWFzaW5nVGFza3MuY2xlYXIoKTsK
QEAgLTIxOTgsMTMgKzIxOTcsMzIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRl
Q2xvc2VGb3JVc2VyRGVsZXRlKCkKICAgICBpZiAobV9vd25pbmdQb2ludGVyRm9yQ2xvc2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZTo6
U3RhcnQpOwogICAgIC8vIE90aGVyd2lzZSwgdGhpcyBkYXRhYmFzZSBpcyBzdGlsbCBwb3RlbnRp
YWxseSBhY3RpdmUuCiAgICAgLy8gU28gd2UnbGwgaGF2ZSBpdCBvd24gaXRzZWxmIGFuZCB0aGVu
IHBlcmZvcm0gYSBjbGVhbiB1bmNvbmRpdGlvbmFsIGRlbGV0ZSBvbiB0aGUgYmFja2dyb3VuZCB0
aHJlYWQuCiAgICAgbV9vd25pbmdQb2ludGVyRm9yQ2xvc2UgPSBtX3NlcnZlci0+Y2xvc2VBbmRU
YWtlVW5pcXVlSURCRGF0YWJhc2UoKnRoaXMpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjppbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKQoreworICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlIC0gQ2FuY2VsbGlu
ZyAoJWksICVpLCAlaSwgJWkpIGNhbGxiYWNrcyIsIG1fZXJyb3JDYWxsYmFja3Muc2l6ZSgpLCBt
X2tleURhdGFDYWxsYmFja3Muc2l6ZSgpLCBtX2dldFJlc3VsdENhbGxiYWNrcy5zaXplKCksIG1f
Y291bnRDYWxsYmFja3Muc2l6ZSgpKTsKKworICAgIGltbWVkaWF0ZUNsb3NlKCk7CiAgICAgcG9z
dERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybVVuY29uZGl0aW9uYWxEZWxldGVCYWNraW5nU3RvcmUpKTsKIH0KIAordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JTdXNwZW5kKCkKK3sKKyAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yU3VzcGVu
ZCAtIENhbmNlbGxpbmcgKCVpLCAlaSwgJWksICVpKSBjYWxsYmFja3MiLCBtX2Vycm9yQ2FsbGJh
Y2tzLnNpemUoKSwgbV9rZXlEYXRhQ2FsbGJhY2tzLnNpemUoKSwgbV9nZXRSZXN1bHRDYWxsYmFj
a3Muc2l6ZSgpLCBtX2NvdW50Q2FsbGJhY2tzLnNpemUoKSk7CisKKyAgICBpbW1lZGlhdGVDbG9z
ZSgpOworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fYmFja2luZ1N0b3JlTXV0ZXgp
OworICAgICAgICBpZiAobV9iYWNraW5nU3RvcmUpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9y
ZS0+aW50ZXJydXB0KCk7CisgICAgfQorICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NU
aHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duRm9yQ2xvc2UpKTsK
K30KKwogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6dXBkYXRlU3BhY2VVc2VkSWZOZWVkZWQodWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3BlbmRp
bmdTcGFjZUluY3JlYXNpbmdUYXNrcy5maW5kKGNhbGxiYWNrSWRlbnRpZmllcik7CkBAIC0yMjkx
LDE5ICsyMzA5LDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c2V0UXVvdGEodWludDY0X3Qg
cXVvdGEpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5zZXRRdW90YShxdW90YSk7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6Om5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZSBz
dGF0ZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgaWYgKHN0YXRlID09IENsb3NlU3RhdGU6OlN0YXJ0KSAKLSAgICAgICAgbV9z
ZXJ2ZXItPmNsb3NlRGF0YWJhc2UodGhpcyk7Ci0gICAgZWxzZQotICAgICAgICBtX3NlcnZlci0+
ZGlkQ2xvc2VEYXRhYmFzZSh0aGlzKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
LSNlbmRpZgotfQotCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCBiY2U2NzQ1YTZhM2EzMThiYmU5MjI0
NjdjYTM2OWNjMGZhOGU4YWU2Li5hOGMzZGMwNWQ4OGUzZTJmZGVlMTg3N2NlYmUxYzBhNDNkNTlh
NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaGFuZGxlRGVsZXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElE
QlJlcXVlc3REYXRhJik7CiAgICAgdm9pZCBpbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKTsK
KyAgICB2b2lkIGltbWVkaWF0ZUNsb3NlRm9yU3VzcGVuZCgpOwogCiAgICAgc3RhdGljIEpTQzo6
Vk0mIGRhdGFiYXNlVGhyZWFkVk0oKTsKICAgICBzdGF0aWMgSlNDOjpFeGVjU3RhdGUmIGRhdGFi
YXNlVGhyZWFkRXhlY1N0YXRlKCk7CkBAIC0xMjgsOCArMTI5LDYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0UXVvdGEodWludDY0X3QpOwogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgQ2xvc2VT
dGF0ZSB7IFN0YXJ0LCBEb25lIH07Ci0KICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9u
cygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwogICAgIHZvaWQgcGVyZm9y
bUN1cnJlbnRPcGVuT3BlcmF0aW9uKCk7CkBAIC0yNTEsMTIgKzI1MCwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbWF5YmVGaW5pc2hIYXJkQ2xvc2UoKTsKICAgICBib29sIGlzRG9uZVdpdGhIYXJk
Q2xvc2UoKTsKIAotICAgIHZvaWQgbm90aWZ5U2VydmVyQWJvdXRDbG9zZShDbG9zZVN0YXRlKTsK
LQogICAgIHZvaWQgcmVxdWVzdFNwYWNlKHVpbnQ2NF90IHRhc2tTaXplLCBjb25zdCBjaGFyKiBl
cnJvck1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8SURCRXJyb3I+JiYp
PiYmKTsKICAgICB2b2lkIHdhaXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8SURCRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNw
YWNlVXNlZElmTmVlZGVkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7CiAKKyAgICB2b2lk
IGltbWVkaWF0ZUNsb3NlKCk7CisgICAgdm9pZCBpbnRlcnJ1cHQoKTsKKwogICAgIFJlZjxJREJT
ZXJ2ZXI+IG1fc2VydmVyOwogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAKQEAgLTMxMCw2ICszMTAsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
dWludDY0X3Q+IG1fcGVuZGluZ1NwYWNlSW5jcmVhc2luZ1Rhc2tzOwogICAgIHVpbnQ2NF90IG1f
ZGF0YWJhc2VzU2l6ZUZvck9yaWdpbiB7IDAgfTsKKworICAgIG11dGFibGUgTG9jayBtX2JhY2tp
bmdTdG9yZU11dGV4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDczZjFiNDgz
NzY5ZWJkZGNlZjliZDRiN2Y0ZWMxMDNhYzVhOWY0YTIuLmE1MmJmOWI3ODEwOWE2OWNjNWM0MGMx
MGZmZWQ0MjgyMzlhYWIzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xOTYxLDEwICsxOTYxLDMzIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlU
b1N1c3BlbmQKICAgICAgICAgY29ubmVjdGlvbi0+Y2xlYW51cEZvclN1c3BlbnNpb24oW2RlbGF5
ZWRUYXNrQ291bnRlcl0geyB9KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2h1dGRvd25J
REJTZXJ2ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBhdXRvIHRhc2tzSGFuZGxlciA9IFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICB9KTsKKyAg
ICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2VydmVycykgeworICAgICAgICBpZiAoIXNlcnZl
ci5rZXkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIHNlcnZlci52YWx1ZS0+c2h1dGRvd25G
b3JTdXNwZW5kKFt0YXNrc0hhbmxkZXJDb3B5ID0gdGFza3NIYW5kbGVyLmNvcHlSZWYoKV0geyB9
KTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZUlEQlNlcnZlcigpCit7
CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMpIHsKKyAgICAgICAgaWYgKCFz
ZXJ2ZXIua2V5LmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBzZXJ2ZXIudmFsdWUtPnJlc3Vt
ZUZyb21TdXNwZW5kKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorICAgIHNodXRkb3duSURCU2VydmVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisjZW5kaWYKIH0KIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCkBAIC0xOTgzLDYgKzIwMDYsOSBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkKICAgICBwbGF0Zm9y
bVByb2Nlc3NEaWRSZXN1bWUoKTsKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlBy
b2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOwor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIHJlc3VtZUlEQlNlcnZlcigpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKCkKQEAgLTIwMDEsNiArMjAyNyw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NE
aWRSZXN1bWUoKQogICAgIHBsYXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpOwogICAgIGZvciAoYXV0
byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0
aW9uLT5lbmRTdXNwZW5zaW9uKCk7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAg
cmVzdW1lSURCU2VydmVyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIxMDUsMTAgKzIxMzQsNiBAQCBS
ZWY8SURCU2VydmVyOjpJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVJREJTZXJ2ZXIo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiAmdGhpcy0+c3RvcmFnZVF1b3RhTWFu
YWdlcihzZXNzaW9uSUQsIG9yaWdpbik7Ci0gICAgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIodGhpcyldKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgaWYgKCF3
ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy0+bm90aWZ5SG9sZGlu
Z0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsKICAgICB9KTsKICAgICBzZXJ2ZXIt
PnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVyT3JpZ2luUXVvdGEpOwogICAgIHJldHVybiBzZXJ2
ZXI7CkBAIC0yNDg3LDkgKzI1MTIsNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckFkQ2xp
Y2tBdHRyaWJ1dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpbwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Om5vdGlmeUhvbGRp
bmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0g
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6U2V0SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhpc0lEQkRhdGFiYXNl
SG9sZGluZ0xvY2tlZEZpbGVzKSwgMCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDUyOWY4
NzkyMjBmNmU1MWEzNDBlZTRiNzYzYTIwMjMxYTc0NjdlZWEuLjAzMDQ5NjMxYjExMTY0MGM2ZDBj
N2I2MGYyZWY5Y2UwOGUwYmZkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTQwNSw4ICs0MDUsNiBAQCBwcml2YXRlOgogICAgIAogICAg
IHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAgICB2b2lkIGRpZFN5bmNBbGxDb29raWVzKCk7Ci0K
LSAgICB2b2lkIG5vdGlmeUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xk
aW5nTG9ja2VkRmlsZXMpOwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJy
b3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKQEAgLTQzNiw2ICs0MzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29sbGVjdEluZGV4ZWREYXRhYmFzZU9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFN0cmluZyYsIEhh
c2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpOwogICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiAgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBjcmVhdGVJ
REJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgc2h1dGRvd25JREJTZXJ2ZXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWVJREJTZXJ2ZXIo
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5k
ZXggMGI5MWUzOTFlMzk4M2Q0MWViNTIyNjQxNjM0YmRiYTRmOTZhNWUxYS4uY2RmNjk2ODg2ODIx
ZjY4NzYwOGNlZmMzZDk4OTdlMWQzMDMwNjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yNzksNyAr
Mjc5LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mKQogI2VuZGlmCiAKICAgICBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0
cjsKLSAgICBtX3Rva2VuRm9ySURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRy
OwogICAgIAogICAgIG1fc3luY0FsbENvb2tpZXNUb2tlbiA9IG51bGxwdHI7CiAgICAgbV9zeW5j
QWxsQ29va2llc0NvdW50ZXIgPSAwOwpAQCAtMTA0MiwxOSArMTA0MSw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2Nr
ZWRGaWxlcykKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNJREJE
YXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2Vk
RmlsZXMpCi17Ci0gICAgaWYgKCFpc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVh
c2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5ldHdvcmsgcHJvY2VzcyBp
cyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmlsZXMgZm9yIElEQkRhdGFiYXNlIik7Ci0gICAg
ICAgIG1fdG9rZW5Gb3JJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFtX3Rva2VuRm9ySURCRGF0YWJhc2VIb2xk
aW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
TmV0d29yayBwcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIGZvciBJREJEYXRhYmFzZSIp
OwotICAgICAgICBtX3Rva2VuRm9ySURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Ro
cm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2llcygpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzNzIz
NTZiODY4MmMyOTkzMzk1MGQ3NWEwYmYzMWI4ODdkMjEzNTBjLi4wZTM4MWViZWJjZDNjNmMxYWE0
YTMyODIxYzMxMmIzOThjNDNjMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTU4LDcgKzE1OCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJc0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5k
KTsKIAogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7Ci0gICAgdm9pZCBz
ZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogCiAgICAgdm9pZCBzeW5j
QWxsQ29va2llcygpOwogICAgIHZvaWQgZGlkU3luY0FsbENvb2tpZXMoKTsKQEAgLTI2MCw3ICsy
NTksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxl
cjsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2Vu
Rm9ySG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRB
Y3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlczsKICAg
ICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N5bmNBbGxDb29r
aWVzVG9rZW47CiAgICAgCiAgICAgdW5zaWduZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAw
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTYzODg5YmQ4ZjY4ZjE3YzQ2
NTJlYTQ5YjgxNmZjMzM2NzdkYmFhZS4uOTU1NjVhYzU0Y2IyZTk0YTU2M2QyNDYwMDgwMzY0NmFk
MDU1MTZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMsNyArMzMsNiBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAg
IFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9v
bCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKLSAgICBTZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tl
ZEZpbGVzKGJvb2wgaXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMgRGlh
Z25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCiAgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0
X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366438</attachid>
            <date>2019-04-01 16:14:35 -0700</date>
            <delta_ts>2019-04-03 08:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190401161434.patch</filename>
            <type>text/plain</type>
            <size>43248</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBkNTg4NDk1NGQ0NGFj
ODMzZjdhYjRkZjdhMzQyZTEyMGNiZGNhZC4uMzU1NmE2ZTZiYjlmNzk1NzM3YzM5NWZhZWU5ZDQ2
NTQ4NmY3ZjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA0LTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIG9wZW4gSURCRGF0
YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBJbmRleGVkREIuSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpJREJTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnNodXRkb3duRm9yU3VzcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZmluYWxpemVTaHV0ZG93bkZvclN1c3Bl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRpZFNodXRkb3du
Rm9yU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVz
dW1lRnJvbVN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjptX3F1b3RhTWFu
YWdlckdldHRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6Y2xvc2VEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQlNlcnZlcjo6ZGlkQ2xvc2VEYXRhYmFzZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpJREJTZXJ2ZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmludGVycnVwdCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtQ3VycmVudERlbGV0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2NoZWR1bGVTaHV0ZG93bkZvckNsb3Nl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnNodXRk
b3duRm9yQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkU2h1dGRvd25Gb3JDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVD
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpp
bW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JTdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om5vdGlmeVNlcnZlckFib3V0
Q2xvc2UpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5oOgorCiAyMDE5LTAzLTI5ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBHUFVdIFJlcGxhY2UgdW5zaWduZWQgbG9uZ3MgaW4g
V2ViR1BVIHdpdGggdWludDY0X3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzlhZjlmYjcxNzcwYTMzMzBkM2NmM2U4
NzQxYzkwODQ5OGI4N2Q2Ni4uNDk0ODg1YTMwYTYwMzhlNzA3OTM0OGIyOGRlZmM5YjNkMjA2NmFk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxOS0wNC0wMSAgU2lodWkgTGl1ICA8c2lo
dWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBDbG9zZSBvcGVuIElEQkRhdGFiYXNlIHdoZW4g
bmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSURCRGF0YWJhc2Ugc2hvdWxkIHNodXQgZG93biBpbW1lZGlhdGVseSBhbmQgc3RvcCBo
b2xkaW5nIGxvY2tlZCBkYXRhYmFzZSBmaWxlcyBpbiBwcmVwYXJhdGlvbiBmb3IgbmV0d29yayAK
KyAgICAgICAgcHJvY2VzcyBzdXNwZW5zaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2h1
dGRvd25JREJTZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
SURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsUHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzRGlkUmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0
ZUlEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpub3RpZnlIb2xk
aW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9wcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5Rm9yVGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xv
c2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0lEQkRhdGFi
YXNlSG9sZGluZ0xvY2tlZEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29y
a1Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJ
bW1pbmVudGx5KToKKwogMjAxOS0wMy0yOSAgVGFrYXNoaSBLb21vcmkgIDxUYWthc2hpLktvbW9y
aUBzb255LmNvbT4KIAogICAgICAgICBbQ3VybF0gQWRkIFNlcnZlciBUcnVzdCBFdmFsdWF0aW9u
IFN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggYzZkN2Q0M2Y5ZWJhZGQyOTI0ODBjZjRl
YWM0MDc4NzUxMDA5YTQwMS4uMjU1MDgyZjY5YThhMjhlYjlkZTdlYTZlMmE3NmRhOGYwZjk4MzQ2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvck9yaWdpbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEodWludDY0X3QpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBpbnRlcnJ1cHQoKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2luZ1N0b3JlKCkgeyBS
RUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA2MmYz
MjBjZmIwM2NkZGIzZjczMjJkM2I0OGE0OTE3OGM3Mzk4NzdiLi4zZDRkZTJiOWNiOTQ5NjcwNjQ3
MjkwYjdmODViOGExYjQyODJjODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtNDUsMzMgKzQ1LDI5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAotUmVmPElEQlNlcnZl
cj4gSURCU2VydmVyOjpjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJREJCYWNraW5n
U3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRl
ciYmIHF1b3RhTWFuYWdlckdldHRlciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xv
c2luZ0RhdGFiYXNlQ2FsbGJhY2spCitSZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5k
bGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVy
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlNlcnZlcihzZXNzaW9uSUQsIGZpbGVI
YW5kbGVyLCBXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRlciksIFdURk1vdmUoaXNDbG9zaW5nRGF0
YWJhc2VDYWxsYmFjaykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoc2Vz
c2lvbklELCBmaWxlSGFuZGxlciwgV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpKSk7CiB9CiAK
LVJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVv
dGFNYW5hZ2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0
YWJhc2VDYWxsYmFjaykKK1JlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIElE
QkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5h
Z2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IElEQlNlcnZlcihzZXNzaW9uSUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgZmlsZUhhbmRs
ZXIsIFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSwgV1RGTW92ZShpc0Nsb3NpbmdEYXRhYmFz
ZUNhbGxiYWNrKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlNlcnZlcihzZXNzaW9u
SUQsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgZmlsZUhhbmRsZXIsIFdURk1vdmUocXVvdGFNYW5h
Z2VyR2V0dGVyKSkpOwogfQogCi1JREJTZXJ2ZXI6OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxl
ciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVvdGFNYW5hZ2VyR2V0dGVyLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykKK0lEQlNlcnZlcjo6SURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5
RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBRdW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFn
ZXJHZXR0ZXIpCiAgICAgOiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyKCJJbmRleGVkRGF0YWJhc2Ug
U2VydmVyIikKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fYmFja2luZ1N0
b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIoZmlsZUhhbmRsZXIpCi0gICAgLCBtX2lzQ2xvc2luZ0Rh
dGFiYXNlQ2FsbGJhY2soV1RGTW92ZShpc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKSkKLSAgICAs
IG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0ZXJlc2lzKFsmXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBz
dGF0ZSkgeyBtX2lzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2soc3RhdGUgPT0gUEFMOjpIeXN0ZXJl
c2lzU3RhdGU6OlN0YXJ0ZWQpOyB9KQogICAgICwgbV9xdW90YU1hbmFnZXJHZXR0ZXIoV1RGTW92
ZShxdW90YU1hbmFnZXJHZXR0ZXIpKQogewogfQogCi1JREJTZXJ2ZXI6OklEQlNlcnZlcihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3Rh
TWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmIGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2spCitJREJTZXJ2ZXI6OklEQlNlcnZlcihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1
b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlcikKICAgICA6IENyb3NzVGhyZWFk
VGFza0hhbmRsZXIoIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiKQogICAgICwgbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQogICAgICwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKQogICAgICwgbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcihmaWxlSGFu
ZGxlcikKLSAgICAsIG1faXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjayhXVEZNb3ZlKGlzQ2xvc2lu
Z0RhdGFiYXNlQ2FsbGJhY2spKQotICAgICwgbV9pc0Nsb3NpbmdEYXRhYmFzZUh5c3RlcmVzaXMo
WyZdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IG1faXNDbG9zaW5nRGF0YWJhc2VDYWxs
YmFjayhzdGF0ZSA9PSBQQUw6Okh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCk7IH0pCiAgICAgLCBt
X3F1b3RhTWFuYWdlckdldHRlcihXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRlcikpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQlNlcnZlciBjcmVhdGVkIGF0IHBhdGggJXMiLCBkYXRhYmFzZURp
cmVjdG9yeVBhdGgudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDUsOCArMTQxLDYgQEAgdm9pZCBJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlIik7CiAKLSAgICBh
dXRvJiB1bmlxdWVJREJEYXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVx
dWVzdERhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotCiAgICAgYXV0byBjb25uZWN0aW9uID0g
bV9jb25uZWN0aW9uTWFwLmdldChyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5l
Y3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICghY29ubmVjdGlvbikgewogICAgICAgICAvLyBJ
ZiB0aGUgY29ubmVjdGlvbiBiYWNrIHRvIHRoZSBjbGllbnQgaXMgZ29uZSwgdGhlcmUncyBubyB3
YXkgdG8gb3BlbiB0aGUgZGF0YWJhc2UgYXMKQEAgLTE1NCw2ICsxNDgsMTQgQEAgdm9pZCBJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1
c3BlbmRlZCkgeworICAgICAgICAvLyBTdG9wIHByb2Nlc3NpbmcgaW5jb21pbmcgb3BlbiByZXF1
ZXN0IGlmIHJlYWR5IHRvIHN1c3BlbmQuCisgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3IoVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UgYmVjYXVzZSBuZXR3b3JrIHByb2Nl
c3MgaXMgc3VzcGVuZGVkIl9zKSk7CisgICAgICAgIGNvbm5lY3Rpb24tPmRpZE9wZW5EYXRhYmFz
ZShyZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgdW5pcXVlSURC
RGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKICAgICB1bmlxdWVJREJEYXRhYmFzZS5vcGVuRGF0YWJhc2VDb25u
ZWN0aW9uKCpjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7CiB9CiAKQEAgLTE2OSw2ICsxNzEsMTMg
QEAgdm9pZCBJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX3ByZXBhcmlu
Z1RvU3VzcGVuZE9yU3VzcGVuZGVkKSB7CisgICAgICAgIC8vIFN0b3AgcHJvY2Vzc2luZyBpbmNv
bWluZyBkZWxldGUgcmVxdWVzdCBpZiByZWFkeSB0byBzdXNwZW5kLgorICAgICAgICBhdXRvIHJl
c3VsdCA9IElEQlJlc3VsdERhdGE6OmVycm9yKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVy
KCksIElEQkVycm9yKFVua25vd25FcnJvciwgIlVuYWJsZSB0byBkZWxldGUgZGF0YWJhc2UgYmVj
YXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgc3VzcGVuZGVkIl9zKSk7CisgICAgICAgIGNvbm5lY3Rp
b24tPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBhdXRvKiBkYXRhYmFzZSA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAuZ2V0KHJlcXVlc3RE
YXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICBpZiAoIWRhdGFiYXNlKQogICAgICAgICBk
YXRhYmFzZSA9ICZnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKQEAgLTcwMiwyOSArNzExLDYgQEAgdm9pZCBJREJTZXJ2ZXI6OnNl
dFBlck9yaWdpblF1b3RhKHVpbnQ2NF90IHF1b3RhKQogICAgICAgICBkYXRhYmFzZS0+c2V0UXVv
dGEocXVvdGEpOwogfQogCi12b2lkIElEQlNlcnZlcjo6Y2xvc2VEYXRhYmFzZShVbmlxdWVJREJE
YXRhYmFzZSogZGF0YWJhc2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBp
ZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdW5pcXVlSURCRGF0YWJhc2VzSW5DbG9zZS5hZGQoZGF0
YWJhc2UpOwotICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSAmJiBtX3VuaXF1ZUlEQkRhdGFi
YXNlc0luQ2xvc2Uuc2l6ZSgpID09IDEpCi0gICAgICAgIG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0
ZXJlc2lzLnN0YXJ0KCk7Ci19Ci0KLXZvaWQgSURCU2VydmVyOjpkaWRDbG9zZURhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlKiBkYXRhYmFzZSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIGlmIChtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChtX3VuaXF1ZUlEQkRhdGFiYXNlc0luQ2xvc2UucmVtb3ZlKGRhdGFi
YXNlKSkgewotICAgICAgICBpZiAobV91bmlxdWVJREJEYXRhYmFzZXNJbkNsb3NlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0ZXJlc2lzLnN0b3AoKTsKLSAg
ICB9Ci19Ci0KIElEQlNlcnZlcjo6UXVvdGFVc2VyOjpRdW90YVVzZXIoSURCU2VydmVyJiBzZXJ2
ZXIsIFN0b3JhZ2VRdW90YU1hbmFnZXIqIG1hbmFnZXIsIENsaWVudE9yaWdpbiYmIG9yaWdpbikK
ICAgICA6IG1fc2VydmVyKHNlcnZlcikKICAgICAsIG1fbWFuYWdlcihtYWtlV2Vha1B0cihtYW5h
Z2VyKSkKQEAgLTg1NSw2ICs4NDEsNDIgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lm
TmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1Zl
cnNpb25EaXJlY3RvcnkpOwogfQogCit2b2lkIElEQlNlcnZlcjo6c2h1dGRvd25Gb3JTdXNwZW5k
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X3ByZXBhcmluZ1RvU3VzcGVuZE9yU3VzcGVuZGVkID0gdHJ1ZTsKKworICAgIEhhc2hTZXQ8VW5p
cXVlSURCRGF0YWJhc2UqPiBvcGVuRGF0YWJhc2VzOworICAgIGZvciAoYXV0byYgZGF0YWJhc2Ug
OiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLnZhbHVlcygpKQorICAgICAgICBvcGVuRGF0YWJhc2Vz
LmFkZChkYXRhYmFzZS5nZXQoKSk7CisKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogb3BlbkRh
dGFiYXNlcykKKyAgICAgICAgZGF0YWJhc2UtPmltbWVkaWF0ZUNsb3NlRm9yU3VzcGVuZCgpOwor
CisgICAgbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JklEQlNlcnZlcjo6ZmluYWxpemVTaHV0ZG93bkZvclN1c3BlbmQpKTsKK30KKwordm9pZCBJREJT
ZXJ2ZXI6OmZpbmFsaXplU2h1dGRvd25Gb3JTdXNwZW5kKCkKK3sKKyAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmSURCU2VydmVyOjpkaWRTaHV0ZG93bkZvclN1c3BlbmQpKTsKK30KKwordm9p
ZCBJREJTZXJ2ZXI6OmRpZFNodXRkb3duRm9yU3VzcGVuZCgpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBpZiAobV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCkgewor
ICAgICAgICBtX3N1c3BlbmRDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBtX3N1c3BlbmRD
b21wbGV0aW9uSGFuZGxlciA9IG51bGxwdHI7CisgICAgfQorfQorCit2b2lkIElEQlNlcnZlcjo6
cmVzdW1lRnJvbVN1c3BlbmQoKQoreworICAgIEFTU0VSVChtX3ByZXBhcmluZ1RvU3VzcGVuZE9y
U3VzcGVuZGVkKTsKKyAgICBtX3ByZXBhcmluZ1RvU3VzcGVuZE9yU3VzcGVuZGVkID0gZmFsc2U7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmgKaW5kZXggYWU0YmZkODg5NzNlNzViMDAxNWY3ZmRlOGExNTAxZTI3ZGE1ZjE5Mi4uYjZm
NDljYzMwZDg2NDFhNzJkZDM5NDI4ZDNmM2MwNTllYzNjMWU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNjAsOCAr
NjAsOCBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKIGNsYXNz
IElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyIHsKIHB1YmxpYzoKICAgICB1c2luZyBRdW90YU1hbmFnZXJHZXR0ZXIg
PSBXVEY6OkZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXIqKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBDbGllbnRPcmlnaW4mKT47Ci0gICAgc3RhdGljIFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6
OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1h
bmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFi
YXNlQ2FsbGJhY2sgPSBbXShib29sKSB7IH0pOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWY8SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1
b3RhTWFuYWdlckdldHRlciYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgaXNDbG9zaW5n
RGF0YWJhc2VDYWxsYmFjayA9IFtdKGJvb2wpIHsgfSk7CisgICAgc3RhdGljIFJlZjxJREJTZXJ2
ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhh
bmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZjxJREJTZXJ2ZXI+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwg
UXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
ckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCB1bnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKQEAgLTEx
NSwxMCArMTE1LDYgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHBlck9yaWdpblF1b3RhKCkgY29u
c3QgeyByZXR1cm4gbV9wZXJPcmlnaW5RdW90YTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UGVyT3JpZ2luUXVvdGEodWludDY0X3QpOwogCi0gICAgdm9pZCBjbG9zZURhdGFiYXNlKFVu
aXF1ZUlEQkRhdGFiYXNlKik7Ci0gICAgdm9pZCBkaWRDbG9zZURhdGFiYXNlKFVuaXF1ZUlEQkRh
dGFiYXNlKik7Ci0gICAgdm9pZCBoeXN0ZXJlc2lzVXBkYXRlZChQQUw6Okh5c3RlcmVzaXNTdGF0
ZSk7Ci0KICAgICB2b2lkIHJlcXVlc3RTcGFjZShjb25zdCBDbGllbnRPcmlnaW4mLCB1aW50NjRf
dCB0YXNrU2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlUXVvdGFNYW5hZ2VyOjpE
ZWNpc2lvbik+JiYpOwogICAgIHZvaWQgaW5jcmVhc2VQb3RlbnRpYWxTcGFjZVVzZWQoY29uc3Qg
Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIHZvaWQgZGVjcmVhc2VQb3Rl
bnRpYWxTcGFjZVVzZWQoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwpA
QCAtMTI2LDEwICsxMjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRTcGFjZVVzZWQoY29u
c3QgQ2xpZW50T3JpZ2luJik7CiAKICAgICB2b2lkIGluaXRpYWxpemVRdW90YVVzZXIoY29uc3Qg
Q2xpZW50T3JpZ2luJiBvcmlnaW4pIHsgZW5zdXJlUXVvdGFVc2VyKG9yaWdpbik7IH0KKyAgICAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNodXRkb3duRm9yU3VzcGVuZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lRnJvbVN1c3Bl
bmQoKTsKIAogcHJpdmF0ZToKLSAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tp
bmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJik7Ci0gICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9y
YXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmKTsKKyAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9y
ZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOworICAgIElEQlNl
cnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgs
IElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVy
JiYpOwogCiAgICAgVW5pcXVlSURCRGF0YWJhc2UmIGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJh
c2UoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKQEAgLTE0NCw2ICsxNDMsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24o
V2FsbFRpbWUsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2VzV2l0aE9y
aWdpbnNGb3JWZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgY29uc3Qg
U3RyaW5nJik7CiAKKyAgICB2b2lkIGZpbmFsaXplU2h1dGRvd25Gb3JTdXNwZW5kKCk7CisgICAg
dm9pZCBkaWRTaHV0ZG93bkZvclN1c3BlbmQoKTsKKwogICAgIGNsYXNzIFF1b3RhVXNlciBmaW5h
bCA6IHB1YmxpYyBTdG9yYWdlUXVvdGFVc2VyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgcHVibGljOgpAQCAtMTg1LDcgKzE4Nyw2IEBAIHByaXZhdGU6CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElE
QkNvbm5lY3Rpb25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbk1hcDsKICAgICBIYXNoTWFwPElEQkRh
dGFiYXNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFVuaXF1ZUlEQkRhdGFiYXNlPj4gbV91
bmlxdWVJREJEYXRhYmFzZU1hcDsKLSAgICBIYXNoU2V0PFVuaXF1ZUlEQkRhdGFiYXNlKj4gbV91
bmlxdWVJREJEYXRhYmFzZXNJbkNsb3NlOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uKj4gbV9kYXRhYmFzZUNvbm5lY3Rpb25zOwogICAgIEhhc2hN
YXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKj4g
bV90cmFuc2FjdGlvbnM7CkBAIC0xOTcsMTEgKzE5OCwxMSBAQCBwcml2YXRlOgogCiAgICAgdWlu
dDY0X3QgbV9wZXJPcmlnaW5RdW90YSB7IGRlZmF1bHRQZXJPcmlnaW5RdW90YSB9OwogCi0gICAg
V1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiBtX2lzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2s7Ci0g
ICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9pc0Nsb3NpbmdEYXRhYmFzZUh5c3RlcmVzaXM7
Ci0KICAgICBIYXNoTWFwPENsaWVudE9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFF1b3RhVXNlcj4+
IG1fcXVvdGFVc2VyczsKICAgICBRdW90YU1hbmFnZXJHZXR0ZXIgbV9xdW90YU1hbmFnZXJHZXR0
ZXI7CisKKyAgICBib29sIG1fcHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5kZWQgeyBmYWxzZSB9
OworICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXI7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApp
bmRleCA2NGU2Y2M3ZGUwY2E2NzY3ZWMxOGQ1MTRiY2FhZjRiZDhhNTYyYzdmLi5hMzRmN2MxYTk5
NDkwMmRlOGRmYTEyYjI1NDhiNzc4MDJiNmE5MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdT
dG9yZS5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCBy
ZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0
b3JlPiYmKTsKIAorICAgIHZvaWQgaW50ZXJydXB0KCkgZmluYWwgeyB9OwogcHJpdmF0ZToKICAg
ICBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHRha2VPYmplY3RTdG9yZUJ5SWRlbnRpZmllcih1
aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApp
bmRleCA2MjQ5OTc2NWFiOWQ0YWJkMTNmNTk3MGQyY2ZlNTVmM2IyYzE5M2EwLi4xNDA4ZmNjNWIz
MjZiZmIyZGNhZjFjMzk0NzU1ZWJlZGRhMjBmMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtMjY5Nyw2ICsyNjk3LDEyIEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjbG9zZVNRTGl0ZURCKCkKICAgICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKIH0KIAordm9p
ZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmludGVycnVwdCgpCit7CisgICAgaWYgKG1fc3FsaXRl
REItPmlzT3BlbigpKQorICAgICAgICBtX3NxbGl0ZURCLT5pbnRlcnJ1cHQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuaAppbmRleCA1NmI1MTdjMmE2MTA3NDRiZGVmMjBlMTg4OWMwNjMx
YzMwYWFmYjU4Li45ZDQ5MDcxYjllMmEyYzNhMTkzNjY0ZWIzMzlhNGNlMjMxZDM4MzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlTmFtZUZyb21GaWxlKGNvbnN0IFN0cmlu
ZyYpOwogCisgICAgdm9pZCBpbnRlcnJ1cHQoKSBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBTdHJp
bmcgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgZnVsbERhdGFi
YXNlUGF0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggOWFlNDkyMjgx
N2ZhYmNhNzRmYzU0MDhiMWM1ZjM3ZTdmOTFhOTUzYi4uYWU4MTg4NDIxMjM1NTg4ZmVlNGNmM2I4
ZDJlYzMwZTQwYjNlM2NmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zMzAsNyAr
MzMwLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUN1cnJlbnREZWxldGVPcGVy
YXRpb24oKQogICAgICAgICAgICAgZGlkRGVsZXRlQmFja2luZ1N0b3JlKDApOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIG1fZGVsZXRlQmFja2luZ1N0b3JlSW5Qcm9ncmVzcyA9IHRydWU7
Ci0gICAgICAgICAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3RhdGU6OlN0YXJ0KTsK
ICAgICAgICAgICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSwgbV9pZGVudGlmaWVyKSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDQsNiArMzQzLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGVsZXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmkKICAgICB1aW50NjRfdCBkZWxldGVkVmVyc2lvbiA9IDA7CiAKICAgICBpZiAobV9iYWNr
aW5nU3RvcmUpIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fYmFja2luZ1N0b3JlTXV0ZXgp
OwogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlQmFja2luZ1N0b3JlKCk7CiAgICAgICAg
IG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKICAgICAgICAgbV9iYWNraW5nU3RvcmVTdXBwb3J0
c1NpbXVsdGFuZW91c1RyYW5zYWN0aW9ucyA9IGZhbHNlOwpAQCAtMzgzLDcgKzM4Myw2IEBAIHZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnNjaGVkdWxlU2h1dGRvd25Gb3JDbG9zZSgpCiAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fb3duaW5nUG9pbnRlckZvckNsb3NlKTsKICAgICBtX293bmluZ1BvaW50
ZXJGb3JDbG9zZSA9IG1fc2VydmVyLT5jbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZSgqdGhp
cyk7CiAKLSAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3NlKENsb3NlU3RhdGU6OlN0YXJ0KTsKICAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpzaHV0ZG93bkZvckNsb3NlKSk7CiB9CiAKQEAgLTM5NCw3ICszOTMsMTAgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25Gb3JDbG9zZSgpCiAKICAgICBMT0coSW5k
ZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25Gb3JDbG9zZSIpOwogCi0g
ICAgbV9iYWNraW5nU3RvcmUgPSBudWxscHRyOworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrKG1fYmFja2luZ1N0b3JlTXV0ZXgpOworICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG51bGxw
dHI7CisgICAgfQogICAgIG1fYmFja2luZ1N0b3JlU3VwcG9ydHNTaW11bHRhbmVvdXNUcmFuc2Fj
dGlvbnMgPSBmYWxzZTsKICAgICBtX2JhY2tpbmdTdG9yZUlzRXBoZW1lcmFsID0gZmFsc2U7CiAK
QEAgLTQxMSw3ICs0MTMsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRTaHV0ZG93bkZv
ckNsb3NlKCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZVJlcGx5UXVldWUuaXNFbXB0eSgpKTsK
ICAgICBtX2RhdGFiYXNlUmVwbHlRdWV1ZS5raWxsKCk7Ci0gICAgbm90aWZ5U2VydmVyQWJvdXRD
bG9zZShDbG9zZVN0YXRlOjpEb25lKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
RGVsZXRlQmFja2luZ1N0b3JlKHVpbnQ2NF90IGRlbGV0ZWRWZXJzaW9uKQpAQCAtNDQ3LDcgKzQ0
OCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50
NjRfdCBkZWxldGVkVmVyc2lvbikKIAogICAgIGlmIChtX2hhcmRDbG9zZWRGb3JVc2VyRGVsZXRl
KQogICAgICAgICByZXR1cm47Ci0gICAgbm90aWZ5U2VydmVyQWJvdXRDbG9zZShDbG9zZVN0YXRl
OjpEb25lKTsKIAogICAgIGludm9rZU9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXIoKTsKIH0K
QEAgLTc1Miw2ICs3NTIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0
b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcgogICAgIExPRyhJbmRl
eGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlICglcCkiLCB0
aGlzKTsKIAogICAgIEFTU0VSVCghbV9iYWNraW5nU3RvcmUpOworICAgIExvY2tIb2xkZXIgbG9j
ayhtX2JhY2tpbmdTdG9yZU11dGV4KTsKICAgICBtX2JhY2tpbmdTdG9yZSA9IG1fc2VydmVyLT5j
cmVhdGVCYWNraW5nU3RvcmUoaWRlbnRpZmllcik7CiAgICAgbV9iYWNraW5nU3RvcmVTdXBwb3J0
c1NpbXVsdGFuZW91c1RyYW5zYWN0aW9ucyA9IG1fYmFja2luZ1N0b3JlLT5zdXBwb3J0c1NpbXVs
dGFuZW91c1RyYW5zYWN0aW9ucygpOwogICAgIG1fYmFja2luZ1N0b3JlSXNFcGhlbWVyYWwgPSBt
X2JhY2tpbmdTdG9yZS0+aXNFcGhlbWVyYWwoKTsKQEAgLTIxNDAsMTAgKzIxNDEsOCBAQCBzdGF0
aWMgdm9pZCBlcnJvck9wZW5EQlJlcXVlc3RGb3JVc2VyRGVsZXRlKFNlcnZlck9wZW5EQlJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbigpLmRpZERlbGV0ZURhdGFi
YXNlKHJlc3VsdCk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3Nl
Rm9yVXNlckRlbGV0ZSgpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZSgp
CiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9z
ZUZvclVzZXJEZWxldGUgLSBDYW5jZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJhY2tzIiwg
bV9lcnJvckNhbGxiYWNrcy5zaXplKCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCksIG1fZ2V0
UmVzdWx0Q2FsbGJhY2tzLnNpemUoKSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOwotCiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fcGVuZGluZ1NwYWNlSW5jcmVhc2luZ1Rh
c2tzLmNsZWFyKCk7CkBAIC0yMjEyLDEzICsyMjExLDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSgpCiAgICAgaWYgKG1fb3duaW5nUG9pbnRl
ckZvckNsb3NlKQogICAgICAgICByZXR1cm47CiAKLSAgICBub3RpZnlTZXJ2ZXJBYm91dENsb3Nl
KENsb3NlU3RhdGU6OlN0YXJ0KTsKICAgICAvLyBPdGhlcndpc2UsIHRoaXMgZGF0YWJhc2UgaXMg
c3RpbGwgcG90ZW50aWFsbHkgYWN0aXZlLgogICAgIC8vIFNvIHdlJ2xsIGhhdmUgaXQgb3duIGl0
c2VsZiBhbmQgdGhlbiBwZXJmb3JtIGEgY2xlYW4gdW5jb25kaXRpb25hbCBkZWxldGUgb24gdGhl
IGJhY2tncm91bmQgdGhyZWFkLgogICAgIG1fb3duaW5nUG9pbnRlckZvckNsb3NlID0gbV9zZXJ2
ZXItPmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlzKTsKK30KKwordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlKCkKK3sKKyAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0
ZSAtIENhbmNlbGxpbmcgKCVpLCAlaSwgJWksICVpKSBjYWxsYmFja3MiLCBtX2Vycm9yQ2FsbGJh
Y2tzLnNpemUoKSwgbV9rZXlEYXRhQ2FsbGJhY2tzLnNpemUoKSwgbV9nZXRSZXN1bHRDYWxsYmFj
a3Muc2l6ZSgpLCBtX2NvdW50Q2FsbGJhY2tzLnNpemUoKSk7CisKKyAgICBpbW1lZGlhdGVDbG9z
ZSgpOwogICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1VbmNvbmRpdGlvbmFsRGVsZXRlQmFja2luZ1N0b3Jl
KSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yU3VzcGVu
ZCgpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVD
bG9zZUZvclN1c3BlbmQgLSBDYW5jZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJhY2tzIiwg
bV9lcnJvckNhbGxiYWNrcy5zaXplKCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCksIG1fZ2V0
UmVzdWx0Q2FsbGJhY2tzLnNpemUoKSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOworCisgICAg
aW1tZWRpYXRlQ2xvc2UoKTsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2JhY2tp
bmdTdG9yZU11dGV4KTsKKyAgICAgICAgaWYgKG1fYmFja2luZ1N0b3JlKQorICAgICAgICAgICAg
bV9iYWNraW5nU3RvcmUtPmludGVycnVwdCgpOworICAgIH0KKyAgICBwb3N0RGF0YWJhc2VUYXNr
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpzaHV0ZG93
bkZvckNsb3NlKSk7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnVwZGF0ZVNwYWNlVXNl
ZElmTmVlZGVkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKIHsKICAgICBhdXRvIGl0ZXJh
dG9yID0gbV9wZW5kaW5nU3BhY2VJbmNyZWFzaW5nVGFza3MuZmluZChjYWxsYmFja0lkZW50aWZp
ZXIpOwpAQCAtMjMwNSwxOSArMjMyMyw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNldFF1
b3RhKHVpbnQ2NF90IHF1b3RhKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+c2V0UXVvdGEocXVv
dGEpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpub3RpZnlTZXJ2ZXJBYm91dENsb3Nl
KENsb3NlU3RhdGUgc3RhdGUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmIChzdGF0ZSA9PSBDbG9zZVN0YXRlOjpTdGFydCkg
Ci0gICAgICAgIG1fc2VydmVyLT5jbG9zZURhdGFiYXNlKHRoaXMpOwotICAgIGVsc2UKLSAgICAg
ICAgbV9zZXJ2ZXItPmRpZENsb3NlRGF0YWJhc2UodGhpcyk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7Ci0jZW5kaWYKLX0KLQogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYmNlNjc0NWE2
YTNhMzE4YmJlOTIyNDY3Y2EzNjljYzBmYThlOGFlNi4uYThjM2RjMDVkODhlM2UyZmRlZTE4Nzdj
ZWJlMWMwYTQzZDU5YTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTExNyw2ICsxMTcs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGll
bnQmLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOwogICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2VGb3JV
c2VyRGVsZXRlKCk7CisgICAgdm9pZCBpbW1lZGlhdGVDbG9zZUZvclN1c3BlbmQoKTsKIAogICAg
IHN0YXRpYyBKU0M6OlZNJiBkYXRhYmFzZVRocmVhZFZNKCk7CiAgICAgc3RhdGljIEpTQzo6RXhl
Y1N0YXRlJiBkYXRhYmFzZVRocmVhZEV4ZWNTdGF0ZSgpOwpAQCAtMTI4LDggKzEyOSw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KTsKIAogcHJpdmF0ZToKLSAgICBlbnVt
IGNsYXNzIENsb3NlU3RhdGUgeyBTdGFydCwgRG9uZSB9OwotCiAgICAgdm9pZCBoYW5kbGVEYXRh
YmFzZU9wZXJhdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZUN1cnJlbnRPcGVyYXRpb24oKTsKICAg
ICB2b2lkIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMjUxLDEyICsyNTAsMTMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlRmluaXNoSGFyZENsb3NlKCk7CiAgICAgYm9vbCBp
c0RvbmVXaXRoSGFyZENsb3NlKCk7CiAKLSAgICB2b2lkIG5vdGlmeVNlcnZlckFib3V0Q2xvc2Uo
Q2xvc2VTdGF0ZSk7Ci0KICAgICB2b2lkIHJlcXVlc3RTcGFjZSh1aW50NjRfdCB0YXNrU2l6ZSwg
Y29uc3QgY2hhciogZXJyb3JNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PElEQkVycm9yPiYmKT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yUmVxdWVzdFNwYWNlQ29tcGxldGlv
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPElEQkVycm9yPiYmKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVTcGFjZVVzZWRJZk5lZWRlZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIp
OwogCisgICAgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOworICAgIHZvaWQgaW50ZXJydXB0KCk7CisK
ICAgICBSZWY8SURCU2VydmVyPiBtX3NlcnZlcjsKICAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogCkBAIC0zMTAsNiArMzEwLDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hN
YXA8dWludDY0X3QsIHVpbnQ2NF90PiBtX3BlbmRpbmdTcGFjZUluY3JlYXNpbmdUYXNrczsKICAg
ICB1aW50NjRfdCBtX2RhdGFiYXNlc1NpemVGb3JPcmlnaW4geyAwIH07CisKKyAgICBtdXRhYmxl
IExvY2sgbV9iYWNraW5nU3RvcmVNdXRleDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApp
bmRleCA2NjRmYTU3N2E0NTk5ZDI2ZDc0NDQ1M2U0ZjA5NDYyZGMwY2U3YTllLi43YzIyMGQ1OGFm
YmY2NWY1ZTQzMTU1NmFkZmYyMWRjNjQwODE4MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk3MywxMCArMTk3MywzMyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xl
ZGdlV2hlblJlYWR5VG9TdXNwZW5kCiAgICAgICAgIGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNw
ZW5zaW9uKFtkZWxheWVkVGFza0NvdW50ZXJdIHsgfSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNodXRkb3duSURCU2VydmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byB0YXNrc0hhbmRsZXIgPSBXVEY6OkNhbGxiYWNr
QWdncmVnYXRvcjo6Y3JlYXRlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
CisgICAgfSk7CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMpIHsKKyAgICAg
ICAgaWYgKCFzZXJ2ZXIua2V5LmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBzZXJ2ZXIudmFs
dWUtPnNodXRkb3duRm9yU3VzcGVuZChbdGFza3NIYW5sZGVyQ29weSA9IHRhc2tzSGFuZGxlci5j
b3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVJ
REJTZXJ2ZXIoKQoreworICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzKSB7Cisg
ICAgaWYgKCFzZXJ2ZXIua2V5LmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHNlcnZlci52YWx1ZS0+
cmVzdW1lRnJvbVN1c3BlbmQoKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3Vs
ZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObyk7CisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisgICAgc2h1dGRvd25JREJTZXJ2ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworI2Vsc2UKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyNlbmRpZgogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKQEAgLTE5OTUsNiArMjAxOCw5
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQoKQogICAgIHBs
YXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpOwogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9u
KCk7CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcmVzdW1lSURCU2VydmVyKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoKQpAQCAtMjAxMyw2ICsyMDM5LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc0RpZFJlc3VtZSgpCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKCk7CiAgICAgZm9y
IChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCiAgICAgICAgIGNv
bm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KyAgICByZXN1bWVJREJTZXJ2ZXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMjExNywxMCArMjE0Niw2
IEBAIFJlZjxJREJTZXJ2ZXI6OklEQlNlcnZlcj4gTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZUlEQlNl
cnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uCiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuICZ0aGlzLT5zdG9yYWdlUXVv
dGFNYW5hZ2VyKHNlc3Npb25JRCwgb3JpZ2luKTsKLSAgICB9LCBbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cih0aGlzKV0oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLT5ub3RpZnlI
b2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOwogICAgIH0pOwogICAgIHNl
cnZlci0+c2V0UGVyT3JpZ2luUXVvdGEobV9pZGJQZXJPcmlnaW5RdW90YSk7CiAgICAgcmV0dXJu
IHNlcnZlcjsKQEAgLTI0OTksOSArMjUyNCw0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bm90aWZ5
SG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykK
LXsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpTZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGlzSURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpLCAwKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXgg
ZDg1MzAxYzhhYjVkNTY1ZGRhMzQxMmQyMjlmN2IxZjdjMjNlZDllZC4uODNiYjM5NTAxNmI5NjFi
YjI4ZGE2ZGI2YTU2MjdmNTBkYjk3OGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDA3LDcgKzQwNyw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzeW5jQWxsQ29va2llcygpOwogICAgIHZvaWQgZGlkU3luY0FsbENvb2tpZXMoKTsKIAot
ICAgIHZvaWQgbm90aWZ5SG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNJREJEYXRhYmFzZUhvbGRp
bmdMb2NrZWRGaWxlcyk7CiAjaWYgVVNFKFNPVVApCiAgICAgdm9pZCBzZXRJZ25vcmVUTFNFcnJv
cnMoYm9vbCk7CiAgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpOwpAQCAtNDM3LDYgKzQzNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b2xsZWN0SW5kZXhlZERhdGFiYXNlT3JpZ2luc0ZvclZlcnNpb24oY29uc3QgU3RyaW5nJiwgSGFz
aFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik7CiAgICAgSGFzaFNldDxXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5n
JiBwYXRoKTsKICAgICBSZWY8V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI+IGNyZWF0ZUlE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBzaHV0ZG93bklEQlNlcnZlcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUlEQlNlcnZlcigp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGMzNWQ1MzQ0
MzIyMzFmOWE2YTcxNTMwY2M2YzFhZWZjM2VkN2Y1OTQuLjVhN2YwMGRjNjQ1NGVjMTI5YWNjNTNl
MjA1NWQ3MGRhMGFiNmNmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00MjUsNiArNDI1LDExIEBAIC0gKHZvaWQpX3Rl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzCiAgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcygpOwogfQogCistICh2b2lkKV9wcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9y
VGVzdGluZworeworICAgIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKTsKK30KKwogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Nl
cwogewogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Nlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaAppbmRleCA2Y2JlNDcyNTUwZTQ1OTQzYmE1Nzc3MzgxZTk0YjU0ZmVl
ZTRkZjFkLi4zZWE4MGM1YWNhODRlOTE1ODdlYjUzODI3YWZiZDNiZjVkYzZlMmE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaApAQCAtODQsNiArODQsNyBAQAogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBj
YWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAt
ICh2b2lkKV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzczsKKy0gKHZvaWQpX3Byb2Nlc3NXaWxsU3Vz
cGVuZEltbWluZW50bHlGb3JUZXN0aW5nOwogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtl
clByb2Nlc3NlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIC0g
KHZvaWQpX2Rpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IGMxNjMxZjk3MTE1OWQzMDI4ZGU5ZjI5MTkzOWY5MjcyNzUxZGI0YmEuLjg5YTdjMjY5OGIzNjFi
OTU2YmQ4NWNiYmI2YWM1NzU2OTk5YzBiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMjc5LDcgKzI3
OSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9u
JikKICNlbmRpZgogCiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7
Ci0gICAgbV90b2tlbkZvcklEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsK
ICAgICAKICAgICBtX3N5bmNBbGxDb29raWVzVG9rZW4gPSBudWxscHRyOwogICAgIG1fc3luY0Fs
bENvb2tpZXNDb3VudGVyID0gMDsKQEAgLTEwNTgsMTkgKzEwNTcsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2Vk
RmlsZXMpCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZp
bGVzKQotewotICAgIGlmICghaXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykgewotICAg
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyByZWxlYXNp
bmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMg
bm8gbG9uZ2VyIGhvbGRpbmcgbG9ja2VkIGZpbGVzIGZvciBJREJEYXRhYmFzZSIpOwotICAgICAg
ICBtX3Rva2VuRm9ySURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV90b2tlbkZvcklEQkRhdGFiYXNlSG9sZGlu
Z0xvY2tlZEZpbGVzKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
VUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIE5l
dHdvcmsgcHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyBmb3IgSURCRGF0YWJhc2UiKTsK
LSAgICAgICAgbV90b2tlbkZvcklEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzID0gbV90aHJv
dHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKLSAgICB9Ci19Ci0KIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c3luY0FsbENvb2tpZXMoKQogewogICAgIHNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpTeW5jQWxsQ29va2llcygpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNWVmNTEx
MTdkMjljODE1OWNlZDQ0NzU2MWQ1ZDgyNjlhNGYwODFiOS4uNDAxNjc4NDI1YWQxNGY3ZmUzNWI1
YTY2N2JhMzI5Mjk5NTI3MTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE1OSw3ICsxNTksNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzeW50aGVzaXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7
CiAKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotICAgIHZvaWQgc2V0
SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKIAogICAgIHZvaWQgc3luY0Fs
bENvb2tpZXMoKTsKICAgICB2b2lkIGRpZFN5bmNBbGxDb29raWVzKCk7CkBAIC0xODQsNiArMTgz
LDggQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlU3ltTGlua0ZvckZpbGVVcGdyYWRlKGNvbnN0
IFN0cmluZyYgaW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5KTsKICNlbmRpZgogCisgICAgdm9pZCBz
ZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIG92ZXJyaWRlOworCiBwcml2YXRlOgog
ICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQogICAgIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQ
cm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSBvdmVycmlkZTsKQEAgLTE5NCw3ICsxOTUs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJDYWxsYmFja1N0YXRlcygpOwogCiAgICAgLy8g
UHJvY2Vzc1Rocm90dGxlckNsaWVudAotICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZElt
bWluZW50bHkoKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRQcmVwYXJlVG9TdXNwZW5kKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZW5kQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBvdmVycmlkZTsKQEAgLTI2MSw3ICsyNjEs
NiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsK
ICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9y
SG9sZGluZ0xvY2tlZEZpbGVzOwotICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rp
dml0eVRva2VuIG1fdG9rZW5Gb3JJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlczsKICAgICBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N5bmNBbGxDb29raWVz
VG9rZW47CiAgICAgCiAgICAgdW5zaWduZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMTZlNWYzMDVmYjBlYzQyYzllNzMw
ODdlZTQ1ZGVlYzVkMmRhMjhmYy4uYmU5OGU2NjYzMGZhZDc5MDYxMDkyMGNlZjg1Mjc1ZGM5N2Fk
MWYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMsNyArMzMsNiBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFBy
b2Nlc3NSZWFkeVRvU3VzcGVuZCgpCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBp
c0hvbGRpbmdMb2NrZWRGaWxlcykKLSAgICBTZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZp
bGVzKGJvb2wgaXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMgRGlhZ25v
c3RpYyBtZXNzYWdlcyBsb2dnaW5nCiAgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA0YzNmMWU3NGFhY2UzNGE1YTc0ZmU1Yjg3MmRmNTBj
NTI0N2E5YWMzLi4xMjdiODc0ZjRmNjQzMDg5YjQ0YzkxODQ1N2IzYjgyN2U0ZjMyMjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNzQwLDYgKzE3
NDAsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQog
ICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IHRydWU7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6Om5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKK3sKKyAgICBpZiAo
IW1fbmV0d29ya1Byb2Nlc3MpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX25ldHdvcmtQ
cm9jZXNzLT5zZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpOworfQorCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCkKIHsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCAyMTU3YjZiMDlhY2MwY2E1MGU4NjEyODI4MjFiMTllYWE1ZWFkODY2Li5mODlj
MjllNjY1YzE2Y2RhMDA1MWUzMjA2NTNlNjYyNzllNWYzMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKTsKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKCk7CisgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRs
eSgpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NlcygpOwogICAgIHZv
aWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlYTc0MTQxYWRj
ZDI3MjQ1OTBiZjRmMzJmNWMyZDRlNDY1OTQ0ZjRlLi4zMTQ0MDk0MzExYzA1MjQwYjM3ZDc3YWVk
Y2E1ZWI0OGVlNjZjMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTExMzEsNiArMTEzMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5k
UHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJv
b2wgaGFuZGxlZCA9IGZhbHNlOworICAgIC8vIE9uZSBzZWNvbmQgaXMgcHJvYmFibHkgbm90IGVu
b3VnaCBmb3Igc2h1dHRpbmcgZG93biBhbGwgVW5pcXVlSURCRGF0YWJhc2VzLgogICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCks
IE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5OjpSZXBs
eShoYW5kbGVkKSwgMCwgMV9zKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFkMGE1MWJhOWRlY2Q3OTE3MDU5ZjNlN2RiYWJiMTI2ZDJl
MTdmZGUuLjg2NjRmZmE3MzgyZWMxZDczZjU2MDFhNjc0MjAzZDZmMzJmZjVlMGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxOS0wNC0wMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBDbG9zZSBvcGVuIElEQkRhdGFiYXNlIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRv
IHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0yOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNDM1MjMp
OiBTaXggZm9ybS1yZWxhdGVkIHdhdGNoT1MgbGF5b3V0IHRlc3RzIGFyZSB0aW1pbmcgb3V0CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3MTZhZjI5Mjk1OTlmOWJiNzRjM2NmYzViMGJkOTMz
YTI3NDRiNGEuLjk5ZjI0OGIxZjIzZGM4YzhiOTRiZWNhNjE1YjI2NmJjZWM0ZmI4ZDAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODcsNiArNzg3LDggQEAKIAkJQ0FCMEZGNTIyMjMzMjQw
NzAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1lLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUIwRkY1MTIyMzMyM0Y2MDA2Q0E1
QjAgLyogSW5kZXhlZERCRmlsZU5hbWUtMS5odG1sICovOyB9OwogCQlDQUIwRkY1MzIyMzMyNDA3
MDA2Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5hbWUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBQjBGRjUwMjIzMzIzRjYwMDZDQTVC
MCAvKiBJbmRleGVkREJGaWxlTmFtZS0yLmh0bWwgKi87IH07CiAJCUNBQjBGRjU1MjIzMzJDNTcw
MDZDQTVCMCAvKiBJbmRleGVkREJGaWxlTmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBQjBGRjU0MjIzMzJDM0EwMDZDQTVCMCAvKiBJbmRleGVk
REJGaWxlTmFtZS5tbSAqLzsgfTsKKwkJQ0FFMTAzNjcyMjUyNzNBQjAwQ0RDODY0IC8qIEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0FFMTAzNjUyMjUyNkRGQzAwQ0RDODY0IC8qIEluZGV4ZWREQlN1c3Bl
bmRJbW1pbmVudGx5Lm1tICovOyB9OworCQlDQUUxMDM2ODIyNTI3M0MxMDBDREM4NjQgLyogSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUUxMDM2NjIyNTI3MTRGMDBDREM4NjQgLyogSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLzsgfTsKIAkJQ0QwQkQwQTYxRjc5OTI0RDAw
MUFCMkNGIC8qIENvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QwQkQwQTUxRjc5OTIyMDAwMUFCMkNGIC8qIENv
bnRleHRNZW51SW1nV2l0aFZpZGVvLm1tICovOyB9OwogCQlDRDBCRDBBODFGNzk5ODJEMDAxQUIy
Q0YgLyogQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDBCRDBBNzFGNzk5N0MyMDAxQUIyQ0Yg
LyogQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8uaHRtbCAqLzsgfTsKIAkJQ0QyMjdFNDQyMTFBNEQ1
RDAwRDI4NUFGIC8qIFByZWZlcnJlZEF1ZGlvQnVmZmVyU2l6ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI3RTQzMjExQTRENUQwMEQyODVBRiAv
KiBQcmVmZXJyZWRBdWRpb0J1ZmZlclNpemUubW0gKi87IH07CkBAIC0xMTcxLDYgKzExNzMsNyBA
QAogCQkJCTU3MUY3RkQwMUYyOTYxRkIwMDk0NjY0OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJNTc1OTlFMkExRjA3MUFBMDAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9u
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk1NzU5OUUyQjFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFj
a3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlD
QUUxMDM2ODIyNTI3M0MxMDBDREM4NjQgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDQTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyog
SW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
QTVCOTREMzIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDQTk3QjM5NTIxOTM2NjdBMDA0NURGNkYgLyogSW5k
ZXhlZERCVXNlckRlbGV0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjEzMCw2ICsy
MTMzLDggQEAKIAkJQ0FCMEZGNTAyMjMzMjNGNjAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1l
LTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJGaWxlTmFtZS0y
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQUIwRkY1MTIyMzMyM0Y2MDA2
Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5hbWUtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIkluZGV4ZWREQkZpbGVOYW1lLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNBQjBGRjU0MjIzMzJDM0EwMDZDQTVCMCAvKiBJbmRleGVkREJGaWxlTmFtZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4ZWREQkZpbGVOYW1l
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQUUxMDM2NTIyNTI2REZDMDBDREM4
NjQgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0FFMTAzNjYyMjUyNzE0RjAwQ0RDODY0IC8qIEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJ
bmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDBCRDBBNTFGNzk5MjIwMDAxQUIyQ0YgLyogQ29udGV4dE1lbnVJbWdXaXRoVmlkZW8u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUltZ1dpdGhWaWRlby5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QwQkQwQTcxRjc5OTdDMjAwMUFCMkNGIC8qIENv
bnRleHRNZW51SW1nV2l0aFZpZGVvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb250ZXh0TWVudUltZ1dpdGhW
aWRlby5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwNzFDNDVBNjky
MDAxNDA3NjEgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhcnNlZENvbnRlbnRSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNTgzLDYgKzI1ODgsNyBAQAogCQkJCTUxQkNFRTQ5MUM4NEY0QUYwMDQy
QzgyRSAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8sCiAJCQkJNTFCMUVFOEQxQzgwRjU4
ODAwNjRGQjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovLAogCQkJCTU3NTk5RTIwMUYw
NzE5MTcwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGli
aWxpdHkubW0gKi8sCisJCQkJQ0FFMTAzNjUyMjUyNkRGQzAwQ0RDODY0IC8qIEluZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5Lm1tICovLAogCQkJCUNBNUI5NEQ2MjE5MTAwNUIwMDU5RkUzOCAvKiBJ
bmRleGVkREJUZW1wRmlsZVNpemUubW0gKi8sCiAJCQkJQ0E5N0IzOTIyMTkzNjYzQjAwNDVERjZG
IC8qIEluZGV4ZWREQlVzZXJEZWxldGUubW0gKi8sCiAJCQkJMEU0MDRBOEEyMTY2RERGODAwODI3
MUJBIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSAqLywKQEAg
LTI5OTAsNiArMjk5Niw3IEBACiAJCQkJNTcxRjdGQ0YxRjI5NjFFMTAwOTQ2NjQ4IC8qIEluZGV4
ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCAqLywK
IAkJCQk1NzU5OUUyNTFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25l
QmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1sICovLAogCQkJCTU3NTk5RTIzMUYwNzE5MkMw
MEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlX
cml0ZS5odG1sICovLAorCQkJCUNBRTEwMzY2MjI1MjcxNEYwMENEQzg2NCAvKiBJbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseS5odG1sICovLAogCQkJCUNBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAv
KiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovLAogCQkJCUNBNUI5NEQxMjE5MEMwRTAw
MDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5odG1sICovLAogCQkJCUNBOTdCMzkz
MjE5MzY2NDcwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLmh0bWwgKi8sCkBAIC00MTcy
LDYgKzQxNzksNyBAQAogCQkJCTdDODNFMEJFMUQwQTY1MTMwMEZFQkNGMyAvKiBJbmRleGVkREJN
dWx0aVByb2Nlc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRjFEMEE2NTIyMDBGRUJD
RjMgLyogSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzU5OUUy
MTFGMDcxOTE5MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21w
YXRpYmlsaXR5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0FFMTAzNjcyMjUyNzNBQjAwQ0RDODY0
IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0E1
Qjk0RDcyMTkxMDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUNBOTdCMzk0MjE5MzY2NjAwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVs
ZXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5NUJERTExRTlCRUM1RjAwODY1NDk4IC8qIElu
amVjdGVkQnVuZGxlQXBwbGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366608</attachid>
            <date>2019-04-03 08:42:41 -0700</date>
            <delta_ts>2019-04-08 17:03:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190403084240.patch</filename>
            <type>text/plain</type>
            <size>48428</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY5MmVmY2ZmNTZhZDc2
ZGZiMTlkYzc3YzA3ZWE2OTEzNzk1Yjk0OS4uNGYyMzQyMDdmY2JhZDUzZTZkYmQ5OWU3MDkzMTU2
NGY5M2JmNTlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTA0LTAzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIENsb3NlIG9wZW4gSURCRGF0
YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBJbmRleGVkREIuSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OklEQlNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6c2h1dGRvd25Gb3JTdXNwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpmaW5hbGl6ZVNodXRkb3duRm9yU3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGlkU2h1dGRvd25G
b3JTdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZXN1
bWVGcm9tU3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Om1fcXVvdGFNYW5h
Z2VyR2V0dGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpjbG9zZURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpkaWRDbG9zZURhdGFiYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW50ZXJydXB0KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZv
cm1DdXJyZW50RGVsZXRlT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpzY2hlZHVsZVNodXRkb3duRm9yQ2xvc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6c2h1dGRv
d25Gb3JDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRTaHV0ZG93bkZvckNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNs
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Omlt
bWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclN1c3BlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bm90aWZ5U2VydmVyQWJvdXRD
bG9zZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmg6CisKIDIwMTktMDQtMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW1vdGUgSW5zcGVjdG9yIGlu
ZGljYXRlIGNhbGxiYWNrIHNob3VsZCBhbHdheXMgaGFwcGVuIG9uIHRoZSBtYWluIHRocmVhZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBkMTA4M2U5NjEzZmIwNjZhMDFkODg3YTI1ZTIyZjdhNTFkZmEzZjBiLi5kNDgz
YjMwNjhjZjE0MDg2Y2MxMjhkNDk2ZGJlMGM3MWFkYzVlMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM2IEBACisyMDE5LTA0LTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisg
ICAgICAgIENsb3NlIG9wZW4gSURCRGF0YWJhc2Ugd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVh
ZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEYXRhYmFzZXMgc2hvdWxk
IHNodXQgZG93biBpbW1lZGlhdGVseSBhbmQgc3RvcCBob2xkaW5nIGxvY2tlZCBkYXRhYmFzZSBm
aWxlcyBpbiBwcmVwYXJhdGlvbiBmb3IgbmV0d29yayAKKyAgICAgICAgcHJvY2VzcyBzdXNwZW5z
aW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2h1dGRvd25JREJTZXJ2ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lSURCU2VydmVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsUHJlcGFyZVRvU3VzcGVuZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzRGlkUmVzdW1lKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZUlEQlNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpub3RpZnlIb2xkaW5nTG9ja2VkRmlsZXMpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9wcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZ10pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSURCRGF0YWJhc2VIb2xk
aW5nTG9ja2VkRmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisKIDIwMTktMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBhIGNvbXBhdGliaWxpdHkgbW9kZSBwcmVm
ZXJlbmNlIGluIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM2ZDdkNDNmOWViYWRkMjky
NDgwY2Y0ZWFjNDA3ODc1MTAwOWE0MDEuLjI1NTA4MmY2OWE4YTI4ZWI5ZGU3ZWE2ZTJhNzZkYThm
MGY5ODM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KSA9IDA7CisKKyAgICB2aXJ0
dWFsIHZvaWQgaW50ZXJydXB0KCkgPSAwOwogcHJvdGVjdGVkOgogICAgIElEQkJhY2tpbmdTdG9y
ZSgpIHsgUkVMRUFTRV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5k
ZXggNjJmMzIwY2ZiMDNjZGRiM2Y3MzIyZDNiNDhhNDkxNzhjNzM5ODc3Yi4uM2Q0ZGUyYjljYjk0
OTY3MDY0NzI5MGI3Zjg1YjhhMWI0MjgyYzgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ1LDMzICs0NSwy
OSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CiAKLVJlZjxJ
REJTZXJ2ZXI+IElEQlNlcnZlcjo6Y3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgSURC
QmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyLCBRdW90YU1hbmFn
ZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JiBpc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKQorUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpj
cmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlG
aWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdl
ckdldHRlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIoc2Vzc2lvbklE
LCBmaWxlSGFuZGxlciwgV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpLCBXVEZNb3ZlKGlzQ2xv
c2luZ0RhdGFiYXNlQ2FsbGJhY2spKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCU2Vy
dmVyKHNlc3Npb25JRCwgZmlsZUhhbmRsZXIsIFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSkp
OwogfQogCi1SZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5n
U3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRl
ciYmIHF1b3RhTWFuYWdlckdldHRlciwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xv
c2luZ0RhdGFiYXNlQ2FsbGJhY2spCitSZWY8SURCU2VydmVyPiBJREJTZXJ2ZXI6OmNyZWF0ZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIsIFF1
b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlcikKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJTZXJ2ZXIoc2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIGZp
bGVIYW5kbGVyLCBXVEZNb3ZlKHF1b3RhTWFuYWdlckdldHRlciksIFdURk1vdmUoaXNDbG9zaW5n
RGF0YWJhc2VDYWxsYmFjaykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJTZXJ2ZXIo
c2Vzc2lvbklELCBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIGZpbGVIYW5kbGVyLCBXVEZNb3ZlKHF1
b3RhTWFuYWdlckdldHRlcikpKTsKIH0KIAotSURCU2VydmVyOjpJREJTZXJ2ZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmls
ZUhhbmRsZXIsIFF1b3RhTWFuYWdlckdldHRlciYmIHF1b3RhTWFuYWdlckdldHRlciwgV1RGOjpG
dW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2spCitJREJTZXJ2
ZXI6OklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRl
bXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlciwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYgcXVv
dGFNYW5hZ2VyR2V0dGVyKQogICAgIDogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcigiSW5kZXhlZERh
dGFiYXNlIFNlcnZlciIpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2Jh
Y2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyKGZpbGVIYW5kbGVyKQotICAgICwgbV9pc0Ns
b3NpbmdEYXRhYmFzZUNhbGxiYWNrKFdURk1vdmUoaXNDbG9zaW5nRGF0YWJhc2VDYWxsYmFjaykp
Ci0gICAgLCBtX2lzQ2xvc2luZ0RhdGFiYXNlSHlzdGVyZXNpcyhbJl0oUEFMOjpIeXN0ZXJlc2lz
U3RhdGUgc3RhdGUpIHsgbV9pc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKHN0YXRlID09IFBBTDo6
SHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKTsgfSkKICAgICAsIG1fcXVvdGFNYW5hZ2VyR2V0dGVy
KFdURk1vdmUocXVvdGFNYW5hZ2VyR2V0dGVyKSkKIHsKIH0KIAotSURCU2VydmVyOjpJREJTZXJ2
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVy
LCBRdW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIsIFdURjo6RnVuY3Rpb248
dm9pZChib29sKT4mJiBpc0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKQorSURCU2VydmVyOjpJREJT
ZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5k
bGVyLCBRdW90YU1hbmFnZXJHZXR0ZXImJiBxdW90YU1hbmFnZXJHZXR0ZXIpCiAgICAgOiBDcm9z
c1RocmVhZFRhc2tIYW5kbGVyKCJJbmRleGVkRGF0YWJhc2UgU2VydmVyIikKICAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCkKICAgICAsIG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXIo
ZmlsZUhhbmRsZXIpCi0gICAgLCBtX2lzQ2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2soV1RGTW92ZShp
c0Nsb3NpbmdEYXRhYmFzZUNhbGxiYWNrKSkKLSAgICAsIG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0
ZXJlc2lzKFsmXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBtX2lzQ2xvc2luZ0RhdGFi
YXNlQ2FsbGJhY2soc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpOyB9KQog
ICAgICwgbV9xdW90YU1hbmFnZXJHZXR0ZXIoV1RGTW92ZShxdW90YU1hbmFnZXJHZXR0ZXIpKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXIgY3JlYXRlZCBhdCBwYXRoICVzIiwgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTQ1LDggKzE0MSw2IEBAIHZv
aWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSIpOwog
Ci0gICAgYXV0byYgdW5pcXVlSURCRGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFi
YXNlKHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLQogICAgIGF1dG8gY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIo
KS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pIHsKICAgICAg
ICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gYmFjayB0byB0aGUgY2xpZW50IGlzIGdvbmUsIHRoZXJl
J3Mgbm8gd2F5IHRvIG9wZW4gdGhlIGRhdGFiYXNlIGFzCkBAIC0xNTQsNiArMTQ4LDE0IEBAIHZv
aWQgSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fcHJlcGFyaW5nVG9TdXNw
ZW5kT3JTdXNwZW5kZWQpIHsKKyAgICAgICAgLy8gU3RvcCBwcm9jZXNzaW5nIGluY29taW5nIG9w
ZW4gcmVxdWVzdCBpZiByZWFkeSB0byBzdXNwZW5kLgorICAgICAgICBhdXRvIHJlc3VsdCA9IElE
QlJlc3VsdERhdGE6OmVycm9yKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIElEQkVy
cm9yKFVua25vd25FcnJvciwgIlVuYWJsZSB0byBvcGVuIGRhdGFiYXNlIGJlY2F1c2UgbmV0d29y
ayBwcm9jZXNzIGlzIHN1c3BlbmRlZCJfcykpOworICAgICAgICBjb25uZWN0aW9uLT5kaWRPcGVu
RGF0YWJhc2UocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIHVu
aXF1ZUlEQkRhdGFiYXNlID0gZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0
YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgdW5pcXVlSURCRGF0YWJhc2Uub3BlbkRhdGFi
YXNlQ29ubmVjdGlvbigqY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOwogfQogCkBAIC0xNjksNiAr
MTcxLDEzIEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9w
cmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCkgeworICAgICAgICAvLyBTdG9wIHByb2Nlc3Np
bmcgaW5jb21pbmcgZGVsZXRlIHJlcXVlc3QgaWYgcmVhZHkgdG8gc3VzcGVuZC4KKyAgICAgICAg
YXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjplcnJvcihyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRl
bnRpZmllcigpLCBJREJFcnJvcihVbmtub3duRXJyb3IsICJVbmFibGUgdG8gZGVsZXRlIGRhdGFi
YXNlIGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIHN1c3BlbmRlZCJfcykpOworICAgICAgICBj
b25uZWN0aW9uLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgYXV0byogZGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwLmdldChy
ZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFkYXRhYmFzZSkKICAg
ICAgICAgZGF0YWJhc2UgPSAmZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShyZXF1ZXN0RGF0
YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CkBAIC03MDIsMjkgKzcxMSw2IEBAIHZvaWQgSURCU2Vy
dmVyOjpzZXRQZXJPcmlnaW5RdW90YSh1aW50NjRfdCBxdW90YSkKICAgICAgICAgZGF0YWJhc2Ut
PnNldFF1b3RhKHF1b3RhKTsKIH0KIAotdm9pZCBJREJTZXJ2ZXI6OmNsb3NlRGF0YWJhc2UoVW5p
cXVlSURCRGF0YWJhc2UqIGRhdGFiYXNlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBhZGRSZXN1bHQgPSBtX3VuaXF1ZUlEQkRhdGFiYXNlc0luQ2xvc2Uu
YWRkKGRhdGFiYXNlKTsKLSAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkgJiYgbV91bmlxdWVJ
REJEYXRhYmFzZXNJbkNsb3NlLnNpemUoKSA9PSAxKQotICAgICAgICBtX2lzQ2xvc2luZ0RhdGFi
YXNlSHlzdGVyZXNpcy5zdGFydCgpOwotfQotCi12b2lkIElEQlNlcnZlcjo6ZGlkQ2xvc2VEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZSogZGF0YWJhc2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBpZiAobV9kYXRhYmFzZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAobV91bmlxdWVJREJEYXRhYmFzZXNJbkNsb3NlLnJlbW92
ZShkYXRhYmFzZSkpIHsKLSAgICAgICAgaWYgKG1fdW5pcXVlSURCRGF0YWJhc2VzSW5DbG9zZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBtX2lzQ2xvc2luZ0RhdGFiYXNlSHlzdGVyZXNpcy5zdG9w
KCk7Ci0gICAgfQotfQotCiBJREJTZXJ2ZXI6OlF1b3RhVXNlcjo6UXVvdGFVc2VyKElEQlNlcnZl
ciYgc2VydmVyLCBTdG9yYWdlUXVvdGFNYW5hZ2VyKiBtYW5hZ2VyLCBDbGllbnRPcmlnaW4mJiBv
cmlnaW4pCiAgICAgOiBtX3NlcnZlcihzZXJ2ZXIpCiAgICAgLCBtX21hbmFnZXIobWFrZVdlYWtQ
dHIobWFuYWdlcikpCkBAIC04NTUsNiArODQxLDQyIEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRl
RmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6OnNodXRkb3duRm9y
U3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgbV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCA9IHRydWU7CisKKyAgICBIYXNo
U2V0PFVuaXF1ZUlEQkRhdGFiYXNlKj4gb3BlbkRhdGFiYXNlczsKKyAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV91bmlxdWVJREJEYXRhYmFzZU1hcC52YWx1ZXMoKSkKKyAgICAgICAgb3BlbkRh
dGFiYXNlcy5hZGQoZGF0YWJhc2UuZ2V0KCkpOworCisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6
IG9wZW5EYXRhYmFzZXMpCisgICAgICAgIGRhdGFiYXNlLT5pbW1lZGlhdGVDbG9zZUZvclN1c3Bl
bmQoKTsKKworICAgIG1fc3VzcGVuZENvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZJREJTZXJ2ZXI6OmZpbmFsaXplU2h1dGRvd25Gb3JTdXNwZW5kKSk7Cit9CisKK3Zv
aWQgSURCU2VydmVyOjpmaW5hbGl6ZVNodXRkb3duRm9yU3VzcGVuZCgpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgcG9zdERhdGFiYXNlVGFza1JlcGx5KGNyZWF0ZUNyb3Nz
VGhyZWFkVGFzaygqdGhpcywgJklEQlNlcnZlcjo6ZGlkU2h1dGRvd25Gb3JTdXNwZW5kKSk7Cit9
CisKK3ZvaWQgSURCU2VydmVyOjpkaWRTaHV0ZG93bkZvclN1c3BlbmQoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgaWYgKG1fcHJlcGFyaW5nVG9TdXNwZW5kT3JTdXNwZW5k
ZWQpIHsKKyAgICAgICAgbV9zdXNwZW5kQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgbV9z
dXNwZW5kQ29tcGxldGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgIH0KK30KKwordm9pZCBJREJT
ZXJ2ZXI6OnJlc3VtZUZyb21TdXNwZW5kKCkKK3sKKyAgICBBU1NFUlQobV9wcmVwYXJpbmdUb1N1
c3BlbmRPclN1c3BlbmRlZCk7CisgICAgbV9wcmVwYXJpbmdUb1N1c3BlbmRPclN1c3BlbmRlZCA9
IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCmluZGV4IGFlNGJmZDg4OTczZTc1YjAwMTVmN2ZkZThhMTUwMWUyN2RhNWYx
OTIuLmI2ZjQ5Y2MzMGQ4NjQxYTcyZGQzOTQyOGQzZjNjMDU5ZWMzYzFlN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAg
LTYwLDggKzYwLDggQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXI7
CiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJTZXJ2ZXI+LCBwdWJsaWMg
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlciB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUXVvdGFNYW5hZ2Vy
R2V0dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyKihQQUw6OlNlc3Npb25J
RCwgY29uc3QgQ2xpZW50T3JpZ2luJik+OwotICAgIHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVh
dGUoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwg
UXVvdGFNYW5hZ2VyR2V0dGVyJiYsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBpc0Nsb3Np
bmdEYXRhYmFzZUNhbGxiYWNrID0gW10oYm9vbCkgeyB9KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmPElEQlNlcnZlcj4gY3JlYXRlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRs
ZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGlz
Q2xvc2luZ0RhdGFiYXNlQ2FsbGJhY2sgPSBbXShib29sKSB7IH0pOworICAgIHN0YXRpYyBSZWY8
SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFy
eUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8SURCU2VydmVyPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFu
ZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdW5yZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7
CkBAIC0xMTUsMTAgKzExNSw2IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBwZXJPcmlnaW5RdW90
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGVyT3JpZ2luUXVvdGE7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFBlck9yaWdpblF1b3RhKHVpbnQ2NF90KTsKIAotICAgIHZvaWQgY2xvc2VEYXRh
YmFzZShVbmlxdWVJREJEYXRhYmFzZSopOwotICAgIHZvaWQgZGlkQ2xvc2VEYXRhYmFzZShVbmlx
dWVJREJEYXRhYmFzZSopOwotICAgIHZvaWQgaHlzdGVyZXNpc1VwZGF0ZWQoUEFMOjpIeXN0ZXJl
c2lzU3RhdGUpOwotCiAgICAgdm9pZCByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwg
dWludDY0X3QgdGFza1NpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZVF1b3RhTWFu
YWdlcjo6RGVjaXNpb24pPiYmKTsKICAgICB2b2lkIGluY3JlYXNlUG90ZW50aWFsU3BhY2VVc2Vk
KGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHRhc2tTaXplKTsKICAgICB2b2lkIGRlY3Jl
YXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHRhc2tT
aXplKTsKQEAgLTEyNiwxMCArMTIyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U3BhY2VV
c2VkKGNvbnN0IENsaWVudE9yaWdpbiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplUXVvdGFVc2Vy
KGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKSB7IGVuc3VyZVF1b3RhVXNlcihvcmlnaW4pOyB9
CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaHV0ZG93bkZvclN1c3BlbmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUZy
b21TdXNwZW5kKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBJ
REJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYm
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpOwotICAgIElEQlNlcnZlcihQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9y
ZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJik7CisgICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBJREJCYWNr
aW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYmKTsKKyAg
ICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdl
ckdldHRlciYmKTsKIAogICAgIFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlE
QkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCkBAIC0xNDQsNiArMTQz
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JW
ZXJzaW9uKFdhbGxUaW1lLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHJlbW92ZURhdGFiYXNl
c1dpdGhPcmlnaW5zRm9yVmVyc2lvbihjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYs
IGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBmaW5hbGl6ZVNodXRkb3duRm9yU3VzcGVuZCgp
OworICAgIHZvaWQgZGlkU2h1dGRvd25Gb3JTdXNwZW5kKCk7CisKICAgICBjbGFzcyBRdW90YVVz
ZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFnZVF1b3RhVXNlciB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKQEAgLTE4NSw3ICsxODcsNiBAQCBwcml2YXRlOgog
ICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJREJDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rpb25NYXA7CiAgICAgSGFzaE1h
cDxJREJEYXRhYmFzZUlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxVbmlxdWVJREJEYXRhYmFz
ZT4+IG1fdW5pcXVlSURCRGF0YWJhc2VNYXA7Ci0gICAgSGFzaFNldDxVbmlxdWVJREJEYXRhYmFz
ZSo+IG1fdW5pcXVlSURCRGF0YWJhc2VzSW5DbG9zZTsKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbio+IG1fZGF0YWJhc2VDb25uZWN0aW9uczsKICAg
ICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbio+IG1fdHJhbnNhY3Rpb25zOwpAQCAtMTk3LDExICsxOTgsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHVpbnQ2NF90IG1fcGVyT3JpZ2luUXVvdGEgeyBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgfTsK
IAotICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4gbV9pc0Nsb3NpbmdEYXRhYmFzZUNhbGxi
YWNrOwotICAgIFBBTDo6SHlzdGVyZXNpc0FjdGl2aXR5IG1faXNDbG9zaW5nRGF0YWJhc2VIeXN0
ZXJlc2lzOwotCiAgICAgSGFzaE1hcDxDbGllbnRPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxRdW90
YVVzZXI+PiBtX3F1b3RhVXNlcnM7CiAgICAgUXVvdGFNYW5hZ2VyR2V0dGVyIG1fcXVvdGFNYW5h
Z2VyR2V0dGVyOworCisgICAgYm9vbCBtX3ByZXBhcmluZ1RvU3VzcGVuZE9yU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKKyAgICBGdW5jdGlvbjx2b2lkKCk+IG1fc3VzcGVuZENvbXBsZXRpb25IYW5kbGVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgKaW5kZXggNjRlNmNjN2RlMGNhNjc2N2VjMThkNTE0YmNhYWY0YmQ4YTU2MmM3Zi4uYTM0
ZjdjMWE5OTQ5MDJkZThkZmExMmIyNTQ4Yjc3ODAyYjZhOTEzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVP
YmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogICAg
IHZvaWQgcmVzdG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KFJlZjxNZW1vcnlP
YmplY3RTdG9yZT4mJik7CiAKKyAgICB2b2lkIGludGVycnVwdCgpIGZpbmFsIHsgfTsKIHByaXZh
dGU6CiAgICAgUmVmUHRyPE1lbW9yeU9iamVjdFN0b3JlPiB0YWtlT2JqZWN0U3RvcmVCeUlkZW50
aWZpZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKaW5kZXggNjI0OTk3NjVhYjlkNGFiZDEzZjU5NzBkMmNmZTU1ZjNiMmMxOTNhMC4uMTQw
OGZjYzViMzI2YmZiMmRjYWYxYzM5NDc1NWViZWRkYTIwZjFlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI2OTcsNiArMjY5NywxMiBAQCB2b2lkIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y2xvc2VTUUxpdGVEQigpCiAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CiB9
CiAKK3ZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjppbnRlcnJ1cHQoKQoreworICAgIGlmICht
X3NxbGl0ZURCLT5pc09wZW4oKSkKKyAgICAgICAgbV9zcWxpdGVEQi0+aW50ZXJydXB0KCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNTZiNTE3YzJhNjEwNzQ0YmRlZjIwZTE4
ODljMDYzMWMzMGFhZmI1OC4uOWQ0OTA3MWI5ZTJhMmMzYTE5MzY2NGViMzM5YTRjZTIzMWQzODMy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZU5hbWVGcm9tRmlsZShjb25z
dCBTdHJpbmcmKTsKIAorICAgIHZvaWQgaW50ZXJydXB0KCkgZmluYWw7CisKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3Q7CiAgICAgU3RyaW5nIGZ1
bGxEYXRhYmFzZVBhdGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDlh
ZTQ5MjI4MTdmYWJjYTc0ZmM1NDA4YjFjNWYzN2U3ZjkxYTk1M2IuLmFlODE4ODQyMTIzNTU4OGZl
ZTRjZjNiOGQyZWMzMGU0MGIzZTNjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAt
MzMwLDcgKzMzMCw2IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50RGVs
ZXRlT3BlcmF0aW9uKCkKICAgICAgICAgICAgIGRpZERlbGV0ZUJhY2tpbmdTdG9yZSgwKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2RlbGV0ZUJhY2tpbmdTdG9yZUluUHJvZ3Jlc3Mg
PSB0cnVlOwotICAgICAgICAgICAgbm90aWZ5U2VydmVyQWJvdXRDbG9zZShDbG9zZVN0YXRlOjpT
dGFydCk7CiAgICAgICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVCYWNraW5nU3RvcmUsIG1faWRlbnRp
ZmllcikpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ0LDYgKzM0Myw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpCiAgICAgdWludDY0X3QgZGVsZXRlZFZlcnNpb24gPSAwOwogCiAgICAgaWYg
KG1fYmFja2luZ1N0b3JlKSB7CisgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX2JhY2tpbmdTdG9y
ZU11dGV4KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUJhY2tpbmdTdG9yZSgpOwog
ICAgICAgICBtX2JhY2tpbmdTdG9yZSA9IG51bGxwdHI7CiAgICAgICAgIG1fYmFja2luZ1N0b3Jl
U3VwcG9ydHNTaW11bHRhbmVvdXNUcmFuc2FjdGlvbnMgPSBmYWxzZTsKQEAgLTM4Myw3ICszODMs
NiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzY2hlZHVsZVNodXRkb3duRm9yQ2xvc2UoKQog
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX293bmluZ1BvaW50ZXJGb3JDbG9zZSk7CiAgICAgbV9vd25p
bmdQb2ludGVyRm9yQ2xvc2UgPSBtX3NlcnZlci0+Y2xvc2VBbmRUYWtlVW5pcXVlSURCRGF0YWJh
c2UoKnRoaXMpOwogCi0gICAgbm90aWZ5U2VydmVyQWJvdXRDbG9zZShDbG9zZVN0YXRlOjpTdGFy
dCk7CiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25Gb3JDbG9zZSkpOwogfQogCkBAIC0zOTQsNyArMzkz
LDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duRm9yQ2xvc2UoKQogCiAgICAg
TE9HKEluZGV4ZWREQiwgIihkYikgVW5pcXVlSURCRGF0YWJhc2U6OnNodXRkb3duRm9yQ2xvc2Ui
KTsKIAotICAgIG1fYmFja2luZ1N0b3JlID0gbnVsbHB0cjsKKyAgICB7CisgICAgICAgIExvY2tI
b2xkZXIgbG9jayhtX2JhY2tpbmdTdG9yZU11dGV4KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUg
PSBudWxscHRyOworICAgIH0KICAgICBtX2JhY2tpbmdTdG9yZVN1cHBvcnRzU2ltdWx0YW5lb3Vz
VHJhbnNhY3Rpb25zID0gZmFsc2U7CiAgICAgbV9iYWNraW5nU3RvcmVJc0VwaGVtZXJhbCA9IGZh
bHNlOwogCkBAIC00MTEsNyArNDEzLDYgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkU2h1
dGRvd25Gb3JDbG9zZSgpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VSZXBseVF1ZXVlLmlzRW1w
dHkoKSk7CiAgICAgbV9kYXRhYmFzZVJlcGx5UXVldWUua2lsbCgpOwotICAgIG5vdGlmeVNlcnZl
ckFib3V0Q2xvc2UoQ2xvc2VTdGF0ZTo6RG9uZSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZERlbGV0ZUJhY2tpbmdTdG9yZSh1aW50NjRfdCBkZWxldGVkVmVyc2lvbikKQEAgLTQ0
Nyw3ICs0NDgsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVCYWNraW5nU3Rv
cmUodWludDY0X3QgZGVsZXRlZFZlcnNpb24pCiAKICAgICBpZiAobV9oYXJkQ2xvc2VkRm9yVXNl
ckRlbGV0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIG5vdGlmeVNlcnZlckFib3V0Q2xvc2UoQ2xv
c2VTdGF0ZTo6RG9uZSk7CiAKICAgICBpbnZva2VPcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVy
KCk7CiB9CkBAIC03NTIsNiArNzUyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJh
Y2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIKICAgICBM
T0coSW5kZXhlZERCLCAiKGRiKSBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSAo
JXApIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIW1fYmFja2luZ1N0b3JlKTsKKyAgICBMb2NrSG9s
ZGVyIGxvY2sobV9iYWNraW5nU3RvcmVNdXRleCk7CiAgICAgbV9iYWNraW5nU3RvcmUgPSBtX3Nl
cnZlci0+Y3JlYXRlQmFja2luZ1N0b3JlKGlkZW50aWZpZXIpOwogICAgIG1fYmFja2luZ1N0b3Jl
U3VwcG9ydHNTaW11bHRhbmVvdXNUcmFuc2FjdGlvbnMgPSBtX2JhY2tpbmdTdG9yZS0+c3VwcG9y
dHNTaW11bHRhbmVvdXNUcmFuc2FjdGlvbnMoKTsKICAgICBtX2JhY2tpbmdTdG9yZUlzRXBoZW1l
cmFsID0gbV9iYWNraW5nU3RvcmUtPmlzRXBoZW1lcmFsKCk7CkBAIC0yMTQwLDEwICsyMTQxLDgg
QEAgc3RhdGljIHZvaWQgZXJyb3JPcGVuREJSZXF1ZXN0Rm9yVXNlckRlbGV0ZShTZXJ2ZXJPcGVu
REJSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24oKS5kaWREZWxl
dGVEYXRhYmFzZShyZXN1bHQpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlh
dGVDbG9zZUZvclVzZXJEZWxldGUoKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRl
Q2xvc2UoKQogewotICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRp
YXRlQ2xvc2VGb3JVc2VyRGVsZXRlIC0gQ2FuY2VsbGluZyAoJWksICVpLCAlaSwgJWkpIGNhbGxi
YWNrcyIsIG1fZXJyb3JDYWxsYmFja3Muc2l6ZSgpLCBtX2tleURhdGFDYWxsYmFja3Muc2l6ZSgp
LCBtX2dldFJlc3VsdENhbGxiYWNrcy5zaXplKCksIG1fY291bnRDYWxsYmFja3Muc2l6ZSgpKTsK
LQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBtX3BlbmRpbmdTcGFjZUluY3Jl
YXNpbmdUYXNrcy5jbGVhcigpOwpAQCAtMjIxMiwxMyArMjIxMSwzMiBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKQogICAgIGlmIChtX293bmlu
Z1BvaW50ZXJGb3JDbG9zZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90aWZ5U2VydmVyQWJv
dXRDbG9zZShDbG9zZVN0YXRlOjpTdGFydCk7CiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGRhdGFi
YXNlIGlzIHN0aWxsIHBvdGVudGlhbGx5IGFjdGl2ZS4KICAgICAvLyBTbyB3ZSdsbCBoYXZlIGl0
IG93biBpdHNlbGYgYW5kIHRoZW4gcGVyZm9ybSBhIGNsZWFuIHVuY29uZGl0aW9uYWwgZGVsZXRl
IG9uIHRoZSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICBtX293bmluZ1BvaW50ZXJGb3JDbG9zZSA9
IG1fc2VydmVyLT5jbG9zZUFuZFRha2VVbmlxdWVJREJEYXRhYmFzZSgqdGhpcyk7Cit9CisKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSgpCit7Cisg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVz
ZXJEZWxldGUgLSBDYW5jZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJhY2tzIiwgbV9lcnJv
ckNhbGxiYWNrcy5zaXplKCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCksIG1fZ2V0UmVzdWx0
Q2FsbGJhY2tzLnNpemUoKSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOworCisgICAgaW1tZWRp
YXRlQ2xvc2UoKTsKICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtVW5jb25kaXRpb25hbERlbGV0ZUJhY2tp
bmdTdG9yZSkpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZv
clN1c3BlbmQoKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW1t
ZWRpYXRlQ2xvc2VGb3JTdXNwZW5kIC0gQ2FuY2VsbGluZyAoJWksICVpLCAlaSwgJWkpIGNhbGxi
YWNrcyIsIG1fZXJyb3JDYWxsYmFja3Muc2l6ZSgpLCBtX2tleURhdGFDYWxsYmFja3Muc2l6ZSgp
LCBtX2dldFJlc3VsdENhbGxiYWNrcy5zaXplKCksIG1fY291bnRDYWxsYmFja3Muc2l6ZSgpKTsK
KworICAgIGltbWVkaWF0ZUNsb3NlKCk7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2so
bV9iYWNraW5nU3RvcmVNdXRleCk7CisgICAgICAgIGlmIChtX2JhY2tpbmdTdG9yZSkKKyAgICAg
ICAgICAgIG1fYmFja2luZ1N0b3JlLT5pbnRlcnJ1cHQoKTsKKyAgICB9CisgICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
c2h1dGRvd25Gb3JDbG9zZSkpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjp1cGRhdGVT
cGFjZVVzZWRJZk5lZWRlZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCiB7CiAgICAgYXV0
byBpdGVyYXRvciA9IG1fcGVuZGluZ1NwYWNlSW5jcmVhc2luZ1Rhc2tzLmZpbmQoY2FsbGJhY2tJ
ZGVudGlmaWVyKTsKQEAgLTIzMDUsMTkgKzIzMjMsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpzZXRRdW90YSh1aW50NjRfdCBxdW90YSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnNldFF1
b3RhKHF1b3RhKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6bm90aWZ5U2VydmVyQWJv
dXRDbG9zZShDbG9zZVN0YXRlIHN0YXRlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpZiAoc3RhdGUgPT0gQ2xvc2VTdGF0ZTo6
U3RhcnQpIAotICAgICAgICBtX3NlcnZlci0+Y2xvc2VEYXRhYmFzZSh0aGlzKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fc2VydmVyLT5kaWRDbG9zZURhdGFiYXNlKHRoaXMpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwotI2VuZGlmCi19Ci0KIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZl
cgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGJj
ZTY3NDVhNmEzYTMxOGJiZTkyMjQ2N2NhMzY5Y2MwZmE4ZThhZTYuLmE4YzNkYzA1ZDg4ZTNlMmZk
ZWUxODc3Y2ViZTFjMGE0M2Q1OWE1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoYW5kbGVEZWxldGUoSURCQ29ubmVjdGlv
blRvQ2xpZW50JiwgY29uc3QgSURCUmVxdWVzdERhdGEmKTsKICAgICB2b2lkIGltbWVkaWF0ZUNs
b3NlRm9yVXNlckRlbGV0ZSgpOworICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2VGb3JTdXNwZW5kKCk7
CiAKICAgICBzdGF0aWMgSlNDOjpWTSYgZGF0YWJhc2VUaHJlYWRWTSgpOwogICAgIHN0YXRpYyBK
U0M6OkV4ZWNTdGF0ZSYgZGF0YWJhc2VUaHJlYWRFeGVjU3RhdGUoKTsKQEAgLTEyOCw4ICsxMjks
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRRdW90YSh1aW50NjRfdCk7CiAKIHByaXZhdGU6Ci0g
ICAgZW51bSBjbGFzcyBDbG9zZVN0YXRlIHsgU3RhcnQsIERvbmUgfTsKLQogICAgIHZvaWQgaGFu
ZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9u
KCk7CiAgICAgdm9pZCBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKTsKQEAgLTI1MSwxMiAr
MjUwLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZUZpbmlzaEhhcmRDbG9zZSgpOwogICAg
IGJvb2wgaXNEb25lV2l0aEhhcmRDbG9zZSgpOwogCi0gICAgdm9pZCBub3RpZnlTZXJ2ZXJBYm91
dENsb3NlKENsb3NlU3RhdGUpOwotCiAgICAgdm9pZCByZXF1ZXN0U3BhY2UodWludDY0X3QgdGFz
a1NpemUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxJREJFcnJvcj4mJik+JiYpOwogICAgIHZvaWQgd2FpdEZvclJlcXVlc3RTcGFjZUNv
bXBsZXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxJREJFcnJvcj4mJik+JiYp
OwogICAgIHZvaWQgdXBkYXRlU3BhY2VVc2VkSWZOZWVkZWQodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyKTsKIAorICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2UoKTsKKyAgICB2b2lkIGludGVycnVw
dCgpOworCiAgICAgUmVmPElEQlNlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKIApAQCAtMzEwLDYgKzMxMCw4IEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCB1aW50NjRfdD4gbV9wZW5kaW5nU3BhY2VJbmNyZWFzaW5nVGFz
a3M7CiAgICAgdWludDY0X3QgbV9kYXRhYmFzZXNTaXplRm9yT3JpZ2luIHsgMCB9OworCisgICAg
bXV0YWJsZSBMb2NrIG1fYmFja2luZ1N0b3JlTXV0ZXg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKaW5kZXggNjY0ZmE1NzdhNDU5OWQyNmQ3NDQ0NTNlNGYwOTQ2MmRjMGNlN2E5ZS4uN2My
MjBkNThhZmJmNjVmNWU0MzE1NTZhZGZmMjFkYzY0MDgxODFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5NzMsMTAgKzE5NzMs
MzMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRB
Y2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVw
Rm9yU3VzcGVuc2lvbihbZGVsYXllZFRhc2tDb3VudGVyXSB7IH0pOwogfQogCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzaHV0ZG93bklEQlNlcnZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gdGFza3NIYW5kbGVyID0gV1RGOjpD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHRydWUpOworICAgIH0pOworICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzKSB7
CisgICAgICAgIGlmICghc2VydmVyLmtleS5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgc2Vy
dmVyLnZhbHVlLT5zaHV0ZG93bkZvclN1c3BlbmQoW3Rhc2tzSGFubGRlckNvcHkgPSB0YXNrc0hh
bmRsZXIuY29weVJlZigpXSB7IH0pOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6
cmVzdW1lSURCU2VydmVyKCkKK3sKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2VydmVy
cykgeworICAgIGlmICghc2VydmVyLmtleS5pc0VwaGVtZXJhbCgpKQorICAgICAgICBzZXJ2ZXIu
dmFsdWUtPnJlc3VtZUZyb21TdXNwZW5kKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVu
ZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOworI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorICAgIHNodXRkb3duSURCU2VydmVyKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyNlbHNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisjZW5kaWYK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCkBAIC0xOTk1LDYg
KzIwMTgsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxQcmVwYXJlVG9TdXNwZW5kKCkK
ICAgICBwbGF0Zm9ybVByb2Nlc3NEaWRSZXN1bWUoKTsKICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rp
b24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykKICAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3Vz
cGVuc2lvbigpOworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIHJlc3VtZUlEQlNl
cnZlcigpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIwMTMsNiArMjAzOSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NEaWRSZXN1bWUoKQogICAgIHBsYXRmb3JtUHJvY2Vzc0RpZFJlc3VtZSgpOwog
ICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKQogICAg
ICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9uKCk7CisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisgICAgcmVzdW1lSURCU2VydmVyKCk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKQEAgLTIxMTcsMTAg
KzIxNDYsNiBAQCBSZWY8SURCU2VydmVyOjpJREJTZXJ2ZXI+IE5ldHdvcmtQcm9jZXNzOjpjcmVh
dGVJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiAmdGhpcy0+c3Rv
cmFnZVF1b3RhTWFuYWdlcihzZXNzaW9uSUQsIG9yaWdpbik7Ci0gICAgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy0+
bm90aWZ5SG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsKICAgICB9KTsK
ICAgICBzZXJ2ZXItPnNldFBlck9yaWdpblF1b3RhKG1faWRiUGVyT3JpZ2luUXVvdGEpOwogICAg
IHJldHVybiBzZXJ2ZXI7CkBAIC0yNDk5LDkgKzI1MjQsNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpbwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
Om5vdGlmeUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2Vk
RmlsZXMpCi17Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6U2V0SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhp
c0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSwgMCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IGQ4NTMwMWM4YWI1ZDU2NWRkYTM0MTJkMjI5ZjdiMWY3YzIzZWQ5ZWQuLjgzYmIzOTUw
MTZiOTYxYmIyOGRhNmRiNmE1NjI3ZjUwZGI5NzhiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQwNyw3ICs0MDcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAgICB2b2lkIGRpZFN5bmNBbGxDb29raWVz
KCk7CiAKLSAgICB2b2lkIG5vdGlmeUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJh
c2VIb2xkaW5nTG9ja2VkRmlsZXMpOwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3Jl
VExTRXJyb3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKQEAgLTQzNyw2ICs0MzYsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29sbGVjdEluZGV4ZWREYXRhYmFzZU9yaWdpbnNGb3JWZXJzaW9uKGNvbnN0IFN0cmlu
ZyYsIEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpOwogICAgIEhhc2hTZXQ8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0
IFN0cmluZyYgcGF0aCk7CiAgICAgUmVmPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBj
cmVhdGVJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgc2h1dGRvd25JREJTZXJ2
ZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXN1bWVJREJT
ZXJ2ZXIoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBj
ZTE3NzNlNWI4MjY5YmMxMjNlYzE0M2YzMDM0OGFkZTA1ODAxZDA1Li5mOThlMjYxOGEyOWRlODMy
MmRjY2Y5NDc0OGNiYjNlOGFhYTNiYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNDI1LDYgKzQyNSwxMSBAQCAtICh2
b2lkKV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRl
TmV0d29ya1Byb2Nlc3MoKTsKIH0KIAorLSAodm9pZClfcHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5l
bnRseUZvclRlc3RpbmcKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5KCk7Cit9CisKIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMKIHsKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggZjZlMDM2MTAyM2Q4OTNlZjJlYTZkOWEwNTRj
MTNjMjFjMGJmMTIxOC4uYTEwNzUzNzE2YjM3MTllZmMzNThjMTAxMDFlYTVhYTEyMGI4ZjNhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTg0LDYgKzg0LDcgQEAKIAogLy8gVGVzdCBvbmx5LiBTaG91
bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5u
aW5nLgogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CistICh2b2lkKV9wcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZzsKIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4w
KSk7CiAtICh2b2lkKV9kaXNhYmxlU2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBjMTYzMWY5NzExNTlkMzAyOGRlOWYyOTE5MzlmOTI3Mjc1MWRiNGJhLi5kOTFkNzM2
OGU1NzI4ZGEyODRlMDU3ZWM5MmQ0NDFmNmEwYWFlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTI3
OSw3ICsyNzksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiYpCiAjZW5kaWYKIAogICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBu
dWxscHRyOwotICAgIG1fdG9rZW5Gb3JJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyA9IG51
bGxwdHI7CiAgICAgCiAgICAgbV9zeW5jQWxsQ29va2llc1Rva2VuID0gbnVsbHB0cjsKICAgICBt
X3N5bmNBbGxDb29raWVzQ291bnRlciA9IDA7CkBAIC0xMDE1LDYgKzEwMTQsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgLy8gT25lIHNl
Y29uZCBpcyBwcm9iYWJseSBub3QgZW5vdWdoIGZvciBzaHV0dGluZyBkb3duIGFsbCBkYXRhYmFz
ZXMuCiAgICAgc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5KCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseTo6UmVwbHkoaGFuZGxlZCksIDAsIDFfcyk7CiB9CiAgICAgCkBAIC0x
MDU4LDE5ICsxMDU4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQogICAgIH0KIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wgaXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKLXsKLSAgICBpZiAoIWlzSURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSB0aGUgTmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBob2xkaW5nIGxvY2tlZCBm
aWxlcyBmb3IgSURCRGF0YWJhc2UiKTsKLSAgICAgICAgbV90b2tlbkZvcklEQkRhdGFiYXNlSG9s
ZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoIW1fdG9rZW5Gb3JJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNr
Z3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBs
b2NrZWQgZmlsZXMgZm9yIElEQkRhdGFiYXNlIik7Ci0gICAgICAgIG1fdG9rZW5Gb3JJREJEYXRh
YmFzZUhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bmNBbGxDb29r
aWVzKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3luY0FsbENvb2tp
ZXMoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDVlZjUxMTE3ZDI5YzgxNTljZWQ0NDc1NjFkNWQ4MjY5
YTRmMDgxYjkuLjQwMTY3ODQyNWFkMTRmN2ZlMzViNWE2NjdiYTMyOTI5OTUyNzE0MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0xNTksNyArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUFw
cElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwogCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdM
b2NrZWRGaWxlcyhib29sKTsKLSAgICB2b2lkIHNldElzSURCRGF0YWJhc2VIb2xkaW5nTG9ja2Vk
RmlsZXMoYm9vbCk7CiAKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAgdm9pZCBkaWRT
eW5jQWxsQ29va2llcygpOwpAQCAtMTg0LDYgKzE4Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNy
ZWF0ZVN5bUxpbmtGb3JGaWxlVXBncmFkZShjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeSk7CiAjZW5kaWYKIAorICAgIHZvaWQgc2VuZFByb2Nlc3NXaWxsU3VzcGVuZEltbWlu
ZW50bHkoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJv
eHkKICAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRp
b25zJikgb3ZlcnJpZGU7CkBAIC0xOTQsNyArMTk1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyQ2FsbGJhY2tTdGF0ZXMoKTsKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKLSAg
ICB2b2lkIHNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2VuZENhbmNl
bFByZXBhcmVUb1N1c3BlbmQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVz
dW1lKCkgb3ZlcnJpZGU7CkBAIC0yNjEsNyArMjYxLDYgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlczsKLSAgICBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySURCRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXM7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4gbV9zeW5jQWxsQ29va2llc1Rva2VuOwogICAgIAogICAgIHVuc2lnbmVk
IG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDE2ZTVmMzA1ZmIwZWM0MmM5ZTczMDg3ZWU0NWRlZWM1ZDJkYTI4ZmMuLmJlOThl
NjY2MzBmYWQ3OTA2MTA5MjBjZWY4NTI3NWRjOTdhZDFmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMzLDcgKzMzLDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAg
IFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi0gICAg
U2V0SXNJREJEYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSURCRGF0YWJhc2VIb2xk
aW5nTG9ja2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwogICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0
cmluZyBkZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXgg
MzVhN2U5MTQ4NjYzZGUxNTdlNjk1YWI3YzU1YmE4MDY3MjM2YzU4OS4uNmE1YzliNjgxYTBhMjJh
M2M1YWM0NTMzMGY1NThiNGJiYzgzMWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtMTc0Miw2ICsxNzQyLDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKICAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jh
c2ggPSB0cnVlOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc1dpbGxT
dXNwZW5kSW1taW5lbnRseSgpCit7CisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+c2VuZFByb2Nlc3NXaWxsU3Vz
cGVuZEltbWluZW50bHkoKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3NlcygpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOTliYTQ3NmU5ZmY3OTlm
MjM1MjRmMGZmZWJiMTY0ZWM4ZmNlYWIxNy4uZWQ2NjA1ZDkzZGE5OTI4MmNkODA2Yzc2ZDRiZTA5
OGY3ODJiNjkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBA
IC0yOTUsNiArMjk1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRp
YWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgbmV0
d29ya1Byb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXkoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAwMGQxYjM1ZTA5MzM3ZTY2NzIxZjhjYzA5ZjllYmYyNGZh
ZTJiZjIuLjY5YWQxOGJiMTg4MDM5YjM2MmQzMzZiYWYyMTZjNTU1MDU5OGVmN2EgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxOS0wNC0wMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBDbG9zZSBvcGVuIElEQkRhdGFiYXNlIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRv
IHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHkubW06IEFkZGVkLgorICAgICAgICAoLVtJbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA0LTAzICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwbHVtYmluZyBm
b3IgYSBjb21wYXRpYmlsaXR5IG1vZGUgcHJlZmVyZW5jZSBpbiBXZWJLaXQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWM3YTM3OWQ0N2Q1NDQwYjM4ZWE5M2ZhY2ZkOWU5ZDU0ZWE2YTNkNS4u
ZDlmOWJhMWMxMDkyNDgxOWQ4OWM2ODlkOTRmOTNiYjFjMDlhZmE3YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc4Myw2ICs3ODMsOCBAQAogCQlDQUIwRkY1MjIyMzMyNDA3MDA2Q0E1QjAg
LyogSW5kZXhlZERCRmlsZU5hbWUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBQjBGRjUxMjIzMzIzRjYwMDZDQTVCMCAvKiBJbmRl
eGVkREJGaWxlTmFtZS0xLmh0bWwgKi87IH07CiAJCUNBQjBGRjUzMjIzMzI0MDcwMDZDQTVCMCAv
KiBJbmRleGVkREJGaWxlTmFtZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0FCMEZGNTAyMjMzMjNGNjAwNkNBNUIwIC8qIEluZGV4
ZWREQkZpbGVOYW1lLTIuaHRtbCAqLzsgfTsKIAkJQ0FCMEZGNTUyMjMzMkM1NzAwNkNBNUIwIC8q
IEluZGV4ZWREQkZpbGVOYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0FCMEZGNTQyMjMzMkMzQTAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1l
Lm1tICovOyB9OworCQlDQUUxMDM2NzIyNTI3M0FCMDBDREM4NjQgLyogSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDQUUxMDM2NTIyNTI2REZDMDBDREM4NjQgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkubW0gKi87IH07CisJCUNBRTEwMzY4MjI1MjczQzEwMENEQzg2NCAvKiBJbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENBRTEwMzY2MjI1MjcxNEYwMENEQzg2NCAvKiBJbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseS5odG1sICovOyB9OwogCQlDRDBCRDBBNjFGNzk5MjREMDAxQUIyQ0YgLyog
Q29udGV4dE1lbnVJbWdXaXRoVmlkZW8ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDBCRDBBNTFGNzk5MjIwMDAxQUIyQ0YgLyogQ29udGV4dE1lbnVJ
bWdXaXRoVmlkZW8ubW0gKi87IH07CiAJCUNEMEJEMEE4MUY3OTk4MkQwMDFBQjJDRiAvKiBDb250
ZXh0TWVudUltZ1dpdGhWaWRlby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMEJEMEE3MUY3OTk3QzIwMDFBQjJDRiAvKiBDb250ZXh0
TWVudUltZ1dpdGhWaWRlby5odG1sICovOyB9OwogCQlDRDIyN0U0NDIxMUE0RDVEMDBEMjg1QUYg
LyogUHJlZmVycmVkQXVkaW9CdWZmZXJTaXplLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjdFNDMyMTFBNEQ1RDAwRDI4NUFGIC8qIFByZWZlcnJl
ZEF1ZGlvQnVmZmVyU2l6ZS5tbSAqLzsgfTsKQEAgLTExNjgsNiArMTE3MCw3IEBACiAJCQkJNTcx
RjdGRDAxRjI5NjFGQjAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJk
Q29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzU5
OUUyQTFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRD
b21wYXRpYmlsaXR5UmVhZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NTk5RTJC
MUYwNzFBQTAwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHlXcml0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNBRTEwMzY4MjI1
MjczQzEwMENEQzg2NCAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCUNBNUI5NEQyMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRleGVkREJU
ZW1wRmlsZVNpemUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNBNUI5NEQzMjE5
MEMwRjQwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCUNBOTdCMzk1MjE5MzY2N0EwMDQ1REY2RiAvKiBJbmRleGVkREJVc2Vy
RGVsZXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMTIyLDYgKzIxMjUsOCBAQAog
CQlDQUIwRkY1MDIyMzMyM0Y2MDA2Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5hbWUtMi5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQkZpbGVOYW1lLTIuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBQjBGRjUxMjIzMzIzRjYwMDZDQTVCMCAvKiBJ
bmRleGVkREJGaWxlTmFtZS0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5k
ZXhlZERCRmlsZU5hbWUtMS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0FC
MEZGNTQyMjMzMkMzQTAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCRmlsZU5hbWUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBRTEwMzY1MjI1MjZERkMwMENEQzg2NCAvKiBJbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDQUUxMDM2NjIyNTI3MTRGMDBDREM4NjQgLyogSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEluZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMEJE
MEE1MUY3OTkyMjAwMDFBQjJDRiAvKiBDb250ZXh0TWVudUltZ1dpdGhWaWRlby5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IENvbnRleHRNZW51SW1nV2l0aFZpZGVvLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDBCRDBBNzFGNzk5N0MyMDAxQUIyQ0YgLyogQ29udGV4dE1lbnVJ
bWdXaXRoVmlkZW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IENvbnRleHRNZW51SW1nV2l0aFZpZGVvLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzA3MUM0NUE2OTIwMDE0MDc2MSAv
KiBQYXJzZWRDb250ZW50UmFuZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFyc2VkQ29udGVudFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI1NzYsNiArMjU4MSw3IEBACiAJCQkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIElu
ZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAqLywKIAkJCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTgg
LyogSW5kZXhlZERCUGVyc2lzdGVuY2UubW0gKi8sCiAJCQkJNTc1OTlFMjAxRjA3MTkxNzAwQTNG
QjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSAq
LywKKwkJCQlDQUUxMDM2NTIyNTI2REZDMDBDREM4NjQgLyogSW5kZXhlZERCU3VzcGVuZEltbWlu
ZW50bHkubW0gKi8sCiAJCQkJQ0E1Qjk0RDYyMTkxMDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRl
bXBGaWxlU2l6ZS5tbSAqLywKIAkJCQlDQTk3QjM5MjIxOTM2NjNCMDA0NURGNkYgLyogSW5kZXhl
ZERCVXNlckRlbGV0ZS5tbSAqLywKIAkJCQkwRTQwNEE4QTIxNjZEREY4MDA4MjcxQkEgLyogSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNTZWxlY3RFbGVtZW50Lm1tICovLApAQCAtMjk3MSw2ICsy
OTc3LDcgQEAKIAkJCQk1NzFGN0ZDRjFGMjk2MUUxMDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0
dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2FsICovLAogCQkJCTU3NTk5
RTI1MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENv
bXBhdGliaWxpdHlSZWFkLmh0bWwgKi8sCiAJCQkJNTc1OTlFMjMxRjA3MTkyQzAwQTNGQjhDIC8q
IEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwg
Ki8sCisJCQkJQ0FFMTAzNjYyMjUyNzE0RjAwQ0RDODY0IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lmh0bWwgKi8sCiAJCQkJQ0E1Qjk0RDAyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWRE
QlRlbXBGaWxlU2l6ZS0xLmh0bWwgKi8sCiAJCQkJQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8q
IEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgKi8sCiAJCQkJQ0E5N0IzOTMyMTkzNjY0NzAw
NDVERjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUuaHRtbCAqLywKQEAgLTQxNDgsNiArNDE1NSw3
IEBACiAJCQkJN0M4M0UwQkUxRDBBNjUxMzAwRkVCQ0YzIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vz
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJGMUQwQTY1MjIwMEZFQkNGMyAvKiBJbmRl
eGVkREJQZXJzaXN0ZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NTk5RTIxMUYwNzE5MTkw
MEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHku
bW0gaW4gU291cmNlcyAqLywKKwkJCQlDQUUxMDM2NzIyNTI3M0FCMDBDREM4NjQgLyogSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0gaW4gU291cmNlcyAqLywKIAkJCQlDQTVCOTRENzIxOTEw
MDVCMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQ0E5N0IzOTQyMTkzNjY2MDAwNDVERjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QTk1QkRFMTFFOUJFQzVGMDA4NjU0OTggLyogSW5qZWN0ZWRCdW5k
bGVBcHBsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyYWY4YjY5MjU1ZWZlZTJjN2M5NGNjNWMxOTA1
MTgwMGZiMmZhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwKQEAgLTAsMCArMSwz
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0PgorCit2YXIgcmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkiKTsKK3JlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiQ29udGludWUiKTsKKworICAgIHRyYW5zYWN0
aW9uID0gZXZlbnQudGFyZ2V0LnJlc3VsdC50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwg
InJlYWR3cml0ZSIpOworICAgIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUo
IlRlc3RPYmplY3RTdG9yZSIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eworICAgICAgICBvYmplY3RTdG9yZS5wdXQoaSwgaSk7CisgICAgfQorICAgIHRyYW5zYWN0aW9u
Lm9uZXJyb3IgPSAoKSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFeHBlY3RlZCBFcnJvciIpOworICAgIH0KKyAgICB0
cmFuc2FjdGlvbi5vbnN1Y2Nlc3MgPSAoKSA9PiB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJVbnhwZWN0ZWQgU3VjY2VzcyIp
OworICAgIH0KK30KKworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkg
eworICAgIHZhciBjcmVhdGVSZXF1ZXN0ID0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmpl
Y3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgY3JlYXRlUmVxdWVzdC5vbmVycm9yID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
dGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIk9iamVjdFN0b3JlIEVycm9yIik7CisgICAgfQorfQor
CityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJPcGVuIEVycm9yIik7Cit9
CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWJlZDY5OTNkZTFlMzdlMzUxN2RjMDFkOTY0MWRiMjc1NDY0MGJlNQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHkubW0KQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdC5oIgorCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1l
c3NhZ2U7CitzdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3Nh
Z2U7CisKK0BpbnRlcmZhY2UgSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlcgorCistICh2b2lk
KXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29u
dGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAq
KW1lc3NhZ2UKK3sKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOworICAgIGxhc3RT
Y3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworQGVuZAorCitURVNUKEluZGV4ZWREQiwgSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkpCit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5k
bGVyIl07CisgICAgCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1l
c3NhZ2UpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nID0gKE5TU3RyaW5nICopW2xh
c3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIEVYUEVDVF9XS19TVFJFUShAIkNvbnRpbnVlIiwg
c3RyaW5nLmdldCgpKTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfcHJv
Y2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmddOworCisgICAgcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlID0gZmFsc2U7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5nMiA9IChOU1N0
cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJF
eHBlY3RlZCBFcnJvciIsIHN0cmluZzIuZ2V0KCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367001</attachid>
            <date>2019-04-08 17:03:29 -0700</date>
            <delta_ts>2019-04-22 08:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190408170329.patch</filename>
            <type>text/plain</type>
            <size>21324</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQwNDM4NTQ0OGZiMTFlNTY5ZWVkZGEx
NzNjZjkwYTMyMTg5Mzk0ZjIuLmI3MmVhNmVjY2RmMjkwNmFkYWIxZGJmNWQ4ODQ3MWJkYzZhYzUx
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xvc2Ugb3BlbiBJREJEYXRhYmFzZSB3aGVuIG5ldHdv
cmsgcHJvY2VzcyBpcyByZWFkeSB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4
OTMwMTE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1ha2UgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlciB3YWl0IHVudGlsIHRhc2tzIG9uIGRhdGFiYXNl
IHRocmVhZCBhcmUgY29tcGxldGVkLCBzbyBpdCdzIHBvc3NpYmxlIHRvIG1ha2UgCisgICAgICAg
IGNsb3NlQWxsRGF0YWJhc2VzIHN5bmMuCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRUYXNr
SGFuZGxlci5jcHA6CisgICAgICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OndhaXRG
b3JDdXJyZW50VGFza3NDb21wbGV0aW9uKToKKyAgICAgICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNr
SGFuZGxlcjo6Y3VycmVudFRhc2tzQ29tcGxldGVkKToKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTA4ICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1v
bnRAaWdhbGlhLmNvbT4KIAogICAgICAgICBFbmFibGUgREZHIG9uIE1JUFMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwOTE3MTNkYTIwNmI3ZWQ1MzM3YjUzNjIxZGM2YWY2MWFhOWM5MTY5Li5kZTJlNjY3NTE5ODgw
NmI5ZmVlMjEwMDkwYzQxMzgxNWFmNDU4ODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTktMDQtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2xvc2Ugb3BlbiBJREJEYXRhYmFzZSB3aGVuIG5ldHdvcmsgcHJvY2VzcyBpcyByZWFkeSB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTYzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTMwMTE2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIGFsbCBvcGVuZWQgU1FMaXRl
RGF0YXNlcyBzbyB3ZSBjYW4gaW50ZXJycHV0IGxvbmctcnVubmluZyB0cmFuc2FjdGlvbnMgb2Yg
dGhlbSBhbmQgbWFrZSBkYXRhYmFzZSBjbG9zZSAKKyAgICAgICAgZmFzdGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y2xvc2VBbGxEYXRhYmFzZXMpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VSb3V0aW5lKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0
ZUNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmltbWVkaWF0ZUNsb3NlRm9yVXNlckRlbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpyZWdp
c3Rlck9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6dW5y
ZWdpc3Rlck9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdEFsbE9wZW5EYXRhYmFzZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oOgorCiAyMDE5LTA0LTA1ICBT
ZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gb3V0bG9vay5saXZlLmNvbSBkaXNwbGF5cyBvbGQtZmFzaGlvbmVkIFVJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDNiZGUxMGY0NWY3OTgzMWE2Mzc1ZTBhZjlmYzMyM2VjMTQwMzEwYzQuLjMxYWEwYjVmOGMy
ZjRhMTg3MTBhNDBiMTM4NjdiZDMwZTY0ZjA0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTktMDQtMDggIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2xvc2Ugb3BlbiBJREJEYXRhYmFzZSB3aGVuIG5ldHdvcmsgcHJvY2VzcyBpcyByZWFkeSB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTYzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4OTMwMTE2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsb3NlIGFsbCBkYXRhYmFzZXMgd2hl
biBuZXR3b3JrIHByb2Nlc3Mga25vd3MgaXQgaXMgYWJvdXQgdG8gYmUgc3VzcGVuZGVkLCBzaW1p
bGFyIHRvIHdoYXQgd2UgZGlkIGZvciB3ZWIgCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNhbmNlbFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpjbG9zZUFsbFBlcnNpc3RlbnREYXRhYmFzZXMpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzczo6c2VuZFJlYWR5VG9TdXNwZW5kSWZEb25lKToKKyAgICAgICAgKFdlYktp
dDo6VGFza0NvdW50ZXI6OlRhc2tDb3VudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
VGFza0NvdW50ZXI6On5UYXNrQ291bnRlcik6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKwogMjAxOS0wNC0wNyAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI0Mzk1Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRs
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKaW5kZXgg
YjI0ZGZjYzk0ODhmM2Y3YWEzNjZkZjA0MmI0NjdkNDNkNmZlODFhOS4uMTRkYTk3ODIxM2E1ZjVj
YjFhNjZkNjQ2MzRlY2VjMTM1MDkzNzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jv
c3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRU
YXNrSGFuZGxlci5jcHAKQEAgLTgzLDUgKzgzLDIxIEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFu
ZGxlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJlYWQoKQogICAgICAgICB0YXNrLT5wZXJm
b3JtVGFzaygpOwogfQogCit2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OndhaXRGb3JDdXJy
ZW50VGFza3NDb21wbGV0aW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1fdGFza3NDb21wbGV0ZWQgPSBmYWxzZTsKKyAgICBwb3N0VGFzayhjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpjdXJyZW50VGFza3NDb21wbGV0
ZWQpKTsKKyAgICB3aGlsZSAoIW1fdGFza3NDb21wbGV0ZWQpCisgICAgICAgIG1fc3luY2hyb25v
dXNDb25kaXRpb24ud2FpdChtX3N5bmNocm9ub3VzTXV0ZXgpOworfQorCit2b2lkIENyb3NzVGhy
ZWFkVGFza0hhbmRsZXI6OmN1cnJlbnRUYXNrc0NvbXBsZXRlZCgpCit7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9zeW5jaHJv
bm91c011dGV4KTsKKyAgICBtX3Rhc2tzQ29tcGxldGVkID0gdHJ1ZTsKKyAgICBtX3N5bmNocm9u
b3VzQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaAppbmRleCAyNjNiM2QwMzVlY2JmYzJmOGI0
MTdhOWYwMjAwODMzMzY2ZGVkNjgxLi45Y2RjOTI1OWZhYzQ4ZDljOGU2NjJlN2Q2NjNkZDI5ZmJh
MmY1ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCkBAIC0zOSw2
ICszOSw4IEBAIGNsYXNzIENyb3NzVGhyZWFkVGFza0hhbmRsZXIgewogcHVibGljOgogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5Dcm9zc1RocmVhZFRhc2tIYW5kbGVyKCk7CiAKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWl0Rm9yQ3VycmVudFRhc2tzQ29tcGxldGlvbigp
OworCiBwcm90ZWN0ZWQ6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENyb3NzVGhyZWFkVGFza0hh
bmRsZXIoY29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKQEAgLTQ5LDEyICs1MSwxOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgaGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJlYWQoKTsKICAgICB2b2lk
IHRhc2tSdW5Mb29wKCk7CiAKKyAgICB2b2lkIGN1cnJlbnRUYXNrc0NvbXBsZXRlZCgpOworCiAg
ICAgTG9jayBtX3Rhc2tUaHJlYWRDcmVhdGlvbkxvY2s7CiAgICAgTG9jayBtX21haW5UaHJlYWRS
ZXBseUxvY2s7CiAgICAgYm9vbCBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7IGZhbHNlIH07
CiAKICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUXVldWU7CiAg
ICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fdGFza1JlcGx5UXVldWU7CisK
KyAgICBib29sIG1fdGFza3NDb21wbGV0ZWQgeyBmYWxzZSB9OworICAgIExvY2sgbV9zeW5jaHJv
bm91c011dGV4OworICAgIENvbmRpdGlvbiBtX3N5bmNocm9ub3VzQ29uZGl0aW9uOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDYyZjMyMGNmYjAzY2RkYjNmNzMyMmQz
YjQ4YTQ5MTc4YzczOTg3N2IuLjFjNjI3ZGZlNzY2YTFiYWVkNDk1MjdkNGJmMWVkZGZkZDM4Y2Ez
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJTZXJ2ZXIuY3BwCkBAIC04NTUsNiArODU1LDE4IEBAIHZvaWQgSURCU2VydmVyOjp1cGdy
YWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6OmNsb3NlQWxs
RGF0YWJhc2VzKCkKK3sKKyAgICBIYXNoU2V0PFVuaXF1ZUlEQkRhdGFiYXNlKj4gb3BlbkRhdGFi
YXNlczsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV91bmlxdWVJREJEYXRhYmFzZU1hcC52
YWx1ZXMoKSkKKyAgICAgICAgb3BlbkRhdGFiYXNlcy5hZGQoZGF0YWJhc2UuZ2V0KCkpOworICAg
IAorICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBvcGVuRGF0YWJhc2VzKQorICAgICAgICBkYXRh
YmFzZS0+aW1tZWRpYXRlQ2xvc2UoKTsKKyAgICAKKyAgICB3YWl0Rm9yQ3VycmVudFRhc2tzQ29t
cGxldGlvbigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oCmluZGV4IGFlNGJmZDg4OTczZTc1YjAwMTVmN2ZkZThhMTUwMWUyN2Rh
NWYxOTIuLmE2NTg1YWQ1NWQ1YTc5ZjJiODc1YTE1MmQ0MDFhZGRiOTc2Mjk0OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgK
QEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVRdW90YVVz
ZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pIHsgZW5zdXJlUXVvdGFVc2VyKG9yaWdpbik7
IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VBbGxEYXRhYmFzZXMoKTsKKwogcHJp
dmF0ZToKICAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9yZVRlbXBv
cmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYsIFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJik7CiAgICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRs
ZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDgzMzI1MDNlY2IwNzA5NGNhZjc2MmNjNjdk
YjZmOGZkY2QzN2IxZmYuLmU4MWRlNDM0OWZhZjE3M2NhYWY5MzhkNWFkOTRiMmM0NmM1ZDVmYWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMjE0OSwxMCArMjE0OSw4IEBAIHN0YXRp
YyB2b2lkIGVycm9yT3BlbkRCUmVxdWVzdEZvclVzZXJEZWxldGUoU2VydmVyT3BlbkRCUmVxdWVz
dCYgcmVxdWVzdCkKICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uKCkuZGlkRGVsZXRlRGF0YWJh
c2UocmVzdWx0KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VG
b3JVc2VyRGVsZXRlKCkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmltbWVkaWF0ZUNsb3NlUm91
dGluZSgpCiB7Ci0gICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjppbW1lZGlh
dGVDbG9zZUZvclVzZXJEZWxldGUgLSBDYW5jZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJh
Y2tzIiwgbV9lcnJvckNhbGxiYWNrcy5zaXplKCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCks
IG1fZ2V0UmVzdWx0Q2FsbGJhY2tzLnNpemUoKSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOwot
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIG1fcGVuZGluZ1NwYWNlSW5jcmVh
c2luZ1Rhc2tzLmNsZWFyKCk7CkBAIC0yMjI1LDYgKzIyMjMsMjEgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlKCkKICAgICAvLyBPdGhlcndpc2Us
IHRoaXMgZGF0YWJhc2UgaXMgc3RpbGwgcG90ZW50aWFsbHkgYWN0aXZlLgogICAgIC8vIFNvIHdl
J2xsIGhhdmUgaXQgb3duIGl0c2VsZiBhbmQgdGhlbiBwZXJmb3JtIGEgY2xlYW4gdW5jb25kaXRp
b25hbCBkZWxldGUgb24gdGhlIGJhY2tncm91bmQgdGhyZWFkLgogICAgIG1fb3duaW5nUG9pbnRl
ckZvckNsb3NlID0gbV9zZXJ2ZXItPmNsb3NlQW5kVGFrZVVuaXF1ZUlEQkRhdGFiYXNlKCp0aGlz
KTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2UoKQoreworICAg
IExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2UgLSBDYW5j
ZWxsaW5nICglaSwgJWksICVpLCAlaSkgY2FsbGJhY2tzIiwgbV9lcnJvckNhbGxiYWNrcy5zaXpl
KCksIG1fa2V5RGF0YUNhbGxiYWNrcy5zaXplKCksIG1fZ2V0UmVzdWx0Q2FsbGJhY2tzLnNpemUo
KSwgbV9jb3VudENhbGxiYWNrcy5zaXplKCkpOworCisgICAgaW1tZWRpYXRlQ2xvc2VSb3V0aW5l
KCk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6c2h1dGRvd25Gb3JDbG9zZSkpOworfQorCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjppbW1lZGlhdGVDbG9zZUZvclVzZXJEZWxldGUoKQoreworICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZTo6aW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRlIC0g
Q2FuY2VsbGluZyAoJWksICVpLCAlaSwgJWkpIGNhbGxiYWNrcyIsIG1fZXJyb3JDYWxsYmFja3Mu
c2l6ZSgpLCBtX2tleURhdGFDYWxsYmFja3Muc2l6ZSgpLCBtX2dldFJlc3VsdENhbGxiYWNrcy5z
aXplKCksIG1fY291bnRDYWxsYmFja3Muc2l6ZSgpKTsKKworICAgIGltbWVkaWF0ZUNsb3NlUm91
dGluZSgpOwogICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1VbmNvbmRpdGlvbmFsRGVsZXRlQmFja2luZ1N0
b3JlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYmNlNjc0NWE2YTNhMzE4YmJl
OTIyNDY3Y2EzNjljYzBmYThlOGFlNi4uYjFkN2JhNDhmYzRkN2MwY2I0Njc5YjViMGM4NDhkYWZj
YzA0NDBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25z
dCBJREJSZXF1ZXN0RGF0YSYpOwogICAgIHZvaWQgaW1tZWRpYXRlQ2xvc2VGb3JVc2VyRGVsZXRl
KCk7CisgICAgdm9pZCBpbW1lZGlhdGVDbG9zZSgpOwogCiAgICAgc3RhdGljIEpTQzo6Vk0mIGRh
dGFiYXNlVGhyZWFkVk0oKTsKICAgICBzdGF0aWMgSlNDOjpFeGVjU3RhdGUmIGRhdGFiYXNlVGhy
ZWFkRXhlY1N0YXRlKCk7CkBAIC0yNTcsNiArMjU4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHdh
aXRGb3JSZXF1ZXN0U3BhY2VDb21wbGV0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8SURCRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHVwZGF0ZVNwYWNlVXNlZElmTmVlZGVkKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGltbWVkaWF0ZUNsb3NlUm91
dGluZSgpOworCiAgICAgUmVmPElEQlNlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5jcHAKaW5kZXggM2ZmNTdlZDIwMTRkZGIxMWZlMTc4YWJlNDYyYTQ2
ZmI4YzFjYTcxNC4uMGZjNzNlNDkwMzBlZmZhNzBmYzE1MTBhZTVlMzQyNGEyNDA5ZmExYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUgPHRocmVhZD4KICNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC04
MCw2ICs4MSwyOCBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0Zv
cmJpZGRlbihib29sIGlzRm9yYmlkZGVuKQogICAgIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVu
ID0gaXNGb3JiaWRkZW47CiB9CiAKKy8vIGlzRGF0YWJhc2VPcGVuaW5nRm9yYmlkZGVuTXV0ZXgg
YmVmb3JlIGFsbE9wZW5EYXRhYmFzZXNNdXRleCBpZiBib3RoIGFyZSBuZWVkZWQuCitzdGF0aWMg
TG9jayBhbGxPcGVuRGF0YWJhc2VzTXV0ZXg7CisKK3N0YXRpYyBIYXNoU2V0PFNRTGl0ZURhdGFi
YXNlKj4mIGFsbE9wZW5EYXRhYmFzZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFNRTGl0ZURhdGFiYXNlKj4+IGRhdGFiYXNlczsKKyAgICByZXR1cm4gZGF0YWJhc2Vz
LmdldCgpOworfQorCit2b2lkIFNRTGl0ZURhdGFiYXNlOjpyZWdpc3Rlck9wZW5EYXRhYmFzZSgp
Cit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soYWxsT3BlbkRhdGFiYXNlc011dGV4
KTsKKyAgICBhbGxPcGVuRGF0YWJhc2VzKCkuYWRkKHRoaXMpOworfQorCit2b2lkIFNRTGl0ZURh
dGFiYXNlOjp1bnJlZ2lzdGVyT3BlbkRhdGFiYXNlKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhhbGxPcGVuRGF0YWJhc2VzTXV0ZXgpOworICAgIEFTU0VSVChhbGxPcGVuRGF0
YWJhc2VzKCkuY29udGFpbnModGhpcykpOworICAgIGFsbE9wZW5EYXRhYmFzZXMoKS5yZW1vdmUo
dGhpcyk7Cit9CisKIFNRTGl0ZURhdGFiYXNlOjpTUUxpdGVEYXRhYmFzZSgpID0gZGVmYXVsdDsK
IAogU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRhYmFzZSgpCkBAIC0xMTQsMTQgKzEzNywxNiBA
QCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5N
b2RlIG9wZW5Nb2RlKQogICAgICAgICB9CiAKICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUz
X29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5k
YXRhKCksICZtX2RiLCBmbGFncywgbnVsbHB0cik7Ci0gICAgICAgIGlmIChtX29wZW5FcnJvciAh
PSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZSA9IG1fZGIgPyBz
cWxpdGUzX2Vycm1zZyhtX2RiKSA6ICJzcWxpdGVfb3BlbiByZXR1cm5lZCBudWxsIjsKLSAgICAg
ICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRhdGFiYXNlIGZhaWxlZCB0byBsb2FkIGZyb20gJXNc
bkNhdXNlIC0gJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwKLSAgICAgICAgICAgICAgICBt
X29wZW5FcnJvck1lc3NhZ2UuZGF0YSgpKTsKLSAgICAgICAgICAgIHNxbGl0ZTNfY2xvc2UobV9k
Yik7Ci0gICAgICAgICAgICBtX2RiID0gMDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAobV9kYikKKyAgICAgICAgICAgIHJlZ2lzdGVyT3BlbkRhdGFi
YXNlKCk7CisgICAgfQorCisgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgeworICAg
ICAgICBtX29wZW5FcnJvck1lc3NhZ2UgPSBtX2RiID8gc3FsaXRlM19lcnJtc2cobV9kYikgOiAi
c3FsaXRlX29wZW4gcmV0dXJuZWQgbnVsbCI7CisgICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRh
dGFiYXNlIGZhaWxlZCB0byBsb2FkIGZyb20gJXNcbkNhdXNlIC0gJXMiLCBmaWxlbmFtZS5hc2Np
aSgpLmRhdGEoKSwKKyAgICAgICAgICAgIG1fb3BlbkVycm9yTWVzc2FnZS5kYXRhKCkpOworICAg
ICAgICBjbG9zZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgb3ZlcnJp
ZGVVbmF1dGhvcml6ZWRGdW5jdGlvbnMoKTsKQEAgLTEzMCw4ICsxNTUsNyBAQCBib29sIFNRTGl0
ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2Rl
KQogICAgIGlmIChtX29wZW5FcnJvciAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgbV9vcGVuRXJy
b3JNZXNzYWdlID0gc3FsaXRlM19lcnJtc2cobV9kYik7CiAgICAgICAgIExPR19FUlJPUigiU1FM
aXRlIGRhdGFiYXNlIGVycm9yIHdoZW4gZW5hYmxpbmcgZXh0ZW5kZWQgZXJyb3JzIC0gJXMiLCBt
X29wZW5FcnJvck1lc3NhZ2UuZGF0YSgpKTsKLSAgICAgICAgc3FsaXRlM19jbG9zZShtX2RiKTsK
LSAgICAgICAgbV9kYiA9IDA7CisgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTE5Myw2ICsyMTcsOCBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9z
ZSgpCiAgICAgICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICBzcWxpdGUzX2Nsb3NlKGRiKTsKKworICAgICAgICB1bnJlZ2lzdGVyT3BlbkRhdGFi
YXNlKCk7CiAgICAgfQogCiAgICAgbV9vcGVuaW5nVGhyZWFkID0gbnVsbHB0cjsKQEAgLTM5NSw2
ICs0MjEsMTcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJydXB0KCkKICAgICAgICAgc3Fs
aXRlM19pbnRlcnJ1cHQobV9kYik7CiB9CiAKK3ZvaWQgU1FMaXRlRGF0YWJhc2U6OmludGVycnVw
dEFsbE9wZW5EYXRhYmFzZXMoKQoreworICAgIFZlY3RvcjxTUUxpdGVEYXRhYmFzZSo+IGRhdGFi
YXNlc0NvcHk7CisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhhbGxP
cGVuRGF0YWJhc2VzTXV0ZXgpOworICAgICAgICBkYXRhYmFzZXNDb3B5ID0gY29weVRvVmVjdG9y
KGFsbE9wZW5EYXRhYmFzZXMoKSk7CisgICAgfQorICAgIGZvciAoYXV0byBkYXRhYmFzZSA6IGRh
dGFiYXNlc0NvcHkpCisgICAgICAgIGRhdGFiYXNlLT5pbnRlcnJ1cHQoKTsKK30KKwogaW50NjRf
dCBTUUxpdGVEYXRhYmFzZTo6bGFzdEluc2VydFJvd0lEKCkKIHsKICAgICBpZiAoIW1fZGIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDE0OTg2
NmZiYzExOTdiYTA5ZGEyMTU3NWYxY2VhZmFkNjQxOWZlNmIuLmEzNTgwZjA3NDVlMTAzYWUwOWM0
M2Q3MzJlODA3ZDgzYTM1OTFkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEFib3J0
cyB0aGUgY3VycmVudCBkYXRhYmFzZSBvcGVyYXRpb24uIFRoaXMgaXMgdGhyZWFkIHNhZmUuCiAg
ICAgdm9pZCBpbnRlcnJ1cHQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBpbnRl
cnJ1cHRBbGxPcGVuRGF0YWJhc2VzKCk7CiAKICAgICBpbnQ2NF90IGxhc3RJbnNlcnRSb3dJRCgp
OwogICAgIGludCBsYXN0Q2hhbmdlcygpOwpAQCAtMTUwLDYgKzE1MSw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIG92ZXJyaWRlVW5hdXRob3JpemVkRnVuY3Rpb25zKCk7CiAKKyAgICB2b2lkIHJl
Z2lzdGVyT3BlbkRhdGFiYXNlKCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyT3BlbkRhdGFiYXNlKCk7
CisKICAgICBzcWxpdGUzKiBtX2RiIHsgbnVsbHB0ciB9OwogICAgIGludCBtX3BhZ2VTaXplIHsg
LTEgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggMWNiNGI2NzRiYWYzYzAyYTNjZjJlYzJiNmM5Mjc1ZTJkOTQ5Y2RmYi4u
ZDEyNWJhM2E2MGZlNmQ3MDQxMjNhZjdiYmU4Mzg2YjZjOGYwYjIwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEwNiw2ICsxMDYs
MTEgQEAKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5o
IgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2luY2x1ZGUgIldlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC0xMzAsOCArMTM1LDkgQEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICAsIG1fbmV0
d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKnRoaXMpCiAjZW5kaWYKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoKnRoaXMpCisgICAg
LCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihzdGQ6Om1ha2VfdW5pcXVlPFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlcj4oKnRoaXMpKQogI2VuZGlmCisgICAgLCBtX3Rhc2tDb3VudGVyKFt0aGlz
XShSZWZDb3VudGVyRXZlbnQpIHsgc2VuZFJlYWR5VG9TdXNwZW5kSWZEb25lKCk7IH0pCiB7CiAg
ICAgTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKIApAQCAt
MTk1NSwzNCArMTk2MSwyOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzRGlkVHJhbnNp
dGlvblRvQmFja2dyb3VuZCgpCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkVHJhbnNpdGlvblRvQmFj
a2dyb3VuZCgpOwogfQogCi0vLyBGSVhNRTogV2UgY2FuIHJlbW92ZSB0aGlzIG9uZSBieSBhZGFw
dGluZyBSZWZDb3VudGVyLgotY2xhc3MgVGFza0NvdW50ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxU
YXNrQ291bnRlcj4gewotcHVibGljOgotICAgIGV4cGxpY2l0IFRhc2tDb3VudGVyKEZ1bmN0aW9u
PHZvaWQoKT4mJiBjYWxsYmFjaykgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKSB7IH0K
LSAgICB+VGFza0NvdW50ZXIoKSB7IG1fY2FsbGJhY2soKTsgfTsKLQotcHJpdmF0ZToKLSAgICBG
dW5jdGlvbjx2b2lkKCk+IG1fY2FsbGJhY2s7Ci19OwotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
Y3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5k
IHNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kKQogewogICAgIGxvd01lbW9yeUhh
bmRsZXIoQ3JpdGljYWw6Olllcyk7CiAKLSAgICBSZWZQdHI8VGFza0NvdW50ZXI+IGRlbGF5ZWRU
YXNrQ291bnRlcjsKLSAgICBpZiAoc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQg
PT0gU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6OlllcykgewotICAgICAgICBk
ZWxheWVkVGFza0NvdW50ZXIgPSBhZG9wdFJlZihuZXcgVGFza0NvdW50ZXIoW3RoaXNdIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJv
Y2Vzczo6bm90aWZ5UHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCkgU2VuZGluZyBQcm9jZXNzUmVhZHlU
b1N1c3BlbmQgSVBDIG1lc3NhZ2UiLCB0aGlzKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpKQotICAgICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCgpLCAwKTsKLSAgICAgICAgfSkpOwotICAgIH0KKyAgICBUYXNrVG9rZW4gdGFza1Rva2Vu
ID0gbnVsbHB0cjsKKyAgICBpZiAoc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQg
PT0gU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6OlllcykKKyAgICAgICAgdGFz
a1Rva2VuID0gVGFza1Rva2VuKG1fdGFza0NvdW50ZXIuY291bnQoKSk7CiAKLSAgICBwbGF0Zm9y
bVByZXBhcmVUb1N1c3BlbmQoW2RlbGF5ZWRUYXNrQ291bnRlcl0geyB9KTsKLSAgICBwbGF0Zm9y
bVN5bmNBbGxDb29raWVzKFtkZWxheWVkVGFza0NvdW50ZXJdIHsgfSk7CisgICAgcGxhdGZvcm1Q
cmVwYXJlVG9TdXNwZW5kKFt0YXNrVG9rZW5dIHsgfSk7CisgICAgcGxhdGZvcm1TeW5jQWxsQ29v
a2llcyhbdGFza1Rva2VuXSB7IH0pOwogCiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93
ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCi0gICAgICAgIGNvbm5lY3Rpb24tPmNsZWFudXBGb3JTdXNw
ZW5zaW9uKFtkZWxheWVkVGFza0NvdW50ZXJdIHsgfSk7CisgICAgICAgIGNvbm5lY3Rpb24tPmNs
ZWFudXBGb3JTdXNwZW5zaW9uKFt0YXNrVG9rZW5dIHsgfSk7CisgICAgCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBtX3dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlciA9IG51bGxwdHI7CisgICAgU1FMaXRlRGF0YWJhc2U6OnNldElzRGF0
YWJhc2VPcGVuaW5nRm9yYmlkZGVuKHRydWUpOworICAgIFNRTGl0ZURhdGFiYXNlOjppbnRlcnJ1
cHRBbGxPcGVuRGF0YWJhc2VzKCk7CisgICAgY2xvc2VBbGxQZXJzaXN0ZW50RGF0YWJhc2VzKCk7
CisjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC0yMDA3LDYgKzIwMDcsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVzdW1lKCk7CiAg
ICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpCiAgICAg
ICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgbV93ZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcj4oKnRo
aXMpOworICAgIFNRTGl0ZURhdGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0ZvcmJpZGRlbihm
YWxzZSk7CisjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMDI1LDYgKzIwMzIsMTMgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc0RpZFJlc3VtZSgpCiAgICAgcGxhdGZvcm1Qcm9jZXNzRGlkUmVz
dW1lKCk7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlv
bnMpCiAgICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlcj4oKnRoaXMpOworICAgIFNRTGl0ZURhdGFiYXNlOjpzZXRJc0RhdGFiYXNlT3BlbmluZ0Zv
cmJpZGRlbihmYWxzZSk7CisjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpAQCAtMjUwOCw0ICsyNTIyLDIw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om5vdGlmeUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlz
SURCRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2V0SXNJREJEYXRhYmFzZUhv
bGRpbmdMb2NrZWRGaWxlcyhpc0lEQkRhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSwgMCk7CiB9
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsb3NlQWxsUGVyc2lzdGVudERhdGFiYXNlcygpCit7
CisgICAgZm9yIChhdXRvIHNlcnZlciA6IG1faWRiU2VydmVycykgeworICAgICAgICBpZiAoIXNl
cnZlci5rZXkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIHNlcnZlci52YWx1ZS0+Y2xvc2VB
bGxEYXRhYmFzZXMoKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNlbmRSZWFk
eVRvU3VzcGVuZElmRG9uZSgpCit7CisgICAgaWYgKCFtX3Rhc2tDb3VudGVyLnZhbHVlKCkgJiYg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6Om5vdGlmeVByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCgpIFNlbmRpbmcgUHJvY2Vzc1JlYWR5VG9TdXNwZW5kIElQQyBtZXNzYWdlIiwgdGhpcyk7
CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpLCAwKTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDYzNDdjMThjN2RkZmRiM2Q4ZjJlMWY2M2ZjZWQ4NDg3MzQx
NzhmOTMuLjNmZmFmYWY0YmE1NzJlN2Q5MDcxNDA4ZmY3MDYzN2NjMTkzZTY0OTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVz
c3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCkBAIC05MSw2ICs5Miw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjsKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0
d29ya1Byb2Nlc3NTdXBwbGVtZW50OwogY2xhc3MgTmV0d29ya1Byb3hpbWl0eU1hbmFnZXI7Citj
bGFzcyBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiBlbnVtIGNsYXNzIFNo
b3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CkBAIC00NjIsNiArNDY0LDkgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyU3RvcmFnZVF1b3RhKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIGluaXRpYWxpemVTdG9yYWdlUXVvdGEoY29uc3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMmKTsKIAorICAgIHZvaWQgc2VuZFJlYWR5VG9TdXNwZW5kSWZEb25lKCk7CisgICAgdm9pZCBj
bG9zZUFsbFBlcnNpc3RlbnREYXRhYmFzZXMoKTsKKwogICAgIC8vIENvbm5lY3Rpb25zIHRvIFdl
YlByb2Nlc3Nlcy4KICAgICBWZWN0b3I8UmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Pj4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnM7CiAKQEAgLTUwNiw3ICs1MTEsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyPiBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsK
ICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9zdG9yYWdlVGFza1F1ZXVlIHsgV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZVRhc2siKSB9OwpAQCAtNTUxLDYg
KzU1NiwxMSBAQCBwcml2YXRlOgogICAgIH07CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
U3RvcmFnZVF1b3RhTWFuYWdlcnM+IG1fc3RvcmFnZVF1b3RhTWFuYWdlcnM7CiAgICAgdWludDMy
X3QgbV9kb3dubG9hZE1vbml0b3JTcGVlZE11bHRpcGxpZXIgeyAxIH07CisKKyAgICBlbnVtIFRh
c2tDb3VudGVyVHlwZSB7IH07CisgICAgdHlwZWRlZiBSZWZDb3VudGVyPFRhc2tDb3VudGVyVHlw
ZT4gVGFza0NvdW50ZXI7CisgICAgdHlwZWRlZiBUYXNrQ291bnRlcjo6VG9rZW4gVGFza1Rva2Vu
OworICAgIFRhc2tDb3VudGVyIG1fdGFza0NvdW50ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367939</attachid>
            <date>2019-04-22 08:32:12 -0700</date>
            <delta_ts>2019-04-22 11:10:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190422083211.patch</filename>
            <type>text/plain</type>
            <size>66358</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDBiYjVlNjVjMThjMWZkMjgzYzc1MGI4
OWJjOGYyODliZjc2NzRiOWUuLjQwYzU1YjA4NGZmMmNiODEwNGM1NjQ3MTMyYWFjMGMwYjlhZWFi
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjEgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBoYW5n
IHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMgaHVu
Zy4gCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHA6CisgICAgICAg
IChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKToKKyAgICAgICAgKFdU
Rjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6d2FpdEZvclN0b3ApOgorICAgICAgICAoV1RGOjpD
cm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1bWUpOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVh
ZFRhc2tIYW5kbGVyLmg6CisKIDIwMTktMDQtMTYgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0
QGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBob2xkTG9jayBzaG91bGQgYmUgbWFya2VkIFdB
Uk5fVU5VU0VEX1JFVFVSTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliMThiM2MyZmE5Mzg0OWM5N2E2M2QyMjgz
YTAxMmJlNWRmN2VjNjAuLjgwZTczZjQ4YjJkNmZiMjE3MDlhYWNhZmI4Y2VkYjgwNGM3NjlkNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDAgQEAKKzIwMTktMDQtMjEgIFNpaHVpIExpdSAgPHNp
aHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJl
bGVhc2UgbG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5
IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIElEQkFjdGl2
aXR5Q291bnRlciB0byB0cmFjayBTUUxpdGUgZGF0YWJhc2UgYWN0aXZpdGllcyBvZiBJbmRleGVk
REIgdGhhdCBtYXkgaG9sZCBsb2NrZWQgZGF0YWJhc2UgCisgICAgICAgIGZpbGVzLiBJZiBJREJB
Y3Rpdml0eUNvdW50ZXIgaXMgbm90IDAgYW5kIG5ldHdvcmsgcHJvY2VzcyBoYXMgdG8gc3VzcGVu
ZCwgYWN0aXZlIElEQiB0cmFuc2FjdGlvbnMgbXVzdCBiZSAKKyAgICAgICAgZmluaXNoZWQgaW4g
YmFja2luZyBzdG9yZSB0byByZWxlYXNlIGxvY2tlZCBmaWxlcy4gCisKKyAgICAgICAgQVBJIHRl
c3Q6IEluZGV4ZWREQi5JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpyZWdpc3Rlck9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlD
b3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50
SURCQWN0aXZpdHlDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRl
cjo6aWRiQWN0aXZpdHlDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50
ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyOjpJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjdGl2aXR5Q291
bnRlck9ic2VydmVyOjpjb3VudGVySW5jcmVtZW50ZWRUbyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJBY3Rpdml0eUNvdW50ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVyRGVj
cmVtZW50ZWRUbyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2
aXR5Q291bnRlci5oOiBBZGRlZC4gSURCQWN0aXZpdHlDb3VudGVyIHJlY29yZHMgdGhlIG51bWJl
ciBvZiBJREIgCisgICAgICAgIGFjdGl2aXRpZXMgdGhhdCBuZWVkIHRvIGhvbGQgbG9ja2VkIGRh
dGFiYXNlIGZpbGVzLiBOZXR3b3JrIHByb2Nlc3MgdHJhY2tzIHRoZSB1cGRhdGUgb2YgdGhpcyBj
b3VudGVyLiBXaGVuIHRoZSAKKyAgICAgICAgY291bnRlciBpcyBpbmNyZW1lbnRlZCB0byAxIG9y
IGRlY3JlbWVudGVkIHRvIDAsIG5ldHdvcmsgcHJvY2VzcyBzZW5kcyBhIG1lc3NhZ2UgdG8gVUkg
cHJvY2VzcyBmb3IgdGFraW5nIG9yIAorICAgICAgICByZWxlYXNlIGEgYmFja2dyb3VuZCBhc3Nl
cnRpb24uCisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjaXRpdml0
eUF1dG9Db3VudGVyOjpJREJBY2l0aXZpdHlBdXRvQ291bnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjaXRpdml0eUF1dG9Db3VudGVyOjp+SURCQWNpdGl2
aXR5QXV0b0NvdW50ZXIpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0b3Ap
OiBIYW5nIGRhdGFiYXNlIHRocmVhZCBhbmQgY2hlY2sgdGhlIHZhbHVlIG9mIElEQkFjdGl2aXR5
Q291bnRlci4gSWYgdGhpcyAKKyAgICAgICAgaXMgbm90IGEgaGFyZCBzdG9wIGFuZCBjb3VudGVy
IGlzIG5vdCAwLCB0aGlzIG1lYW5zIG5ldHdvcmsgcHJvY2VzcyB3aWxsIG9yIGFscmVhZHkgc2Vu
ZHMgb3V0IGEgInRha2luZyAKKyAgICAgICAgYXNzZXJ0aW9uIiBtZXNhZ2UgYW5kIElEQlNlcnZl
ciBzaG91bGQgYmUgcmVzdW1lZCBzb29uLiBUaGVyZWZvcmUsIHdlIGNhbiBjb250aW51ZSBkYXRh
YmFzZSBhY3Rpdml0aWVzIGJ5IAorICAgICAgICByZXN1bWluZyBkYXRhYmFzZSB0aHJlYWQuIElm
IHRoaXMgaXMgYSBoYXJkIHN0b3AsIElEQlNlcnZlciBoYXMgdG8gZmluaXNoIG9uZ29pbmcgdHJh
bnNhY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpoYXNU
cmFuc2FjdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcDogSW5jcmVtZW50IG9yIGRlY3JlbWVudCBjb3VudGVyIGF0IHBs
YWNlcyB0aGF0IHRvdWNoZXMKKyAgICAgICAgZGF0YWJhc2UgZmlsZXMuIEFsc28gcmVtb3ZlIHNv
bWUgZXJyb3IgbG9ncyBhYm91dCBoYXZpbmcgbm8gb25nb2luZyB0cmFuc2FjdGlvbiwgYmVjYXVz
ZSBub3cgdHJhbnNhY3Rpb25zIG1heSBiZSAKKyAgICAgICAgYWJvcnRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQgaW4gcHJlcGFyYXRpb24gZm9yIG5ldHdvcmsgcHJvY2VzcyBzdXNwZW5zaW9uLgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJ
REJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZyb21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0
ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6cmVuYW1lSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjph
ZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6aGFzVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHA6IFdoZW4gVW5pcXVlSURCRGF0YWJhc2Ug
aXMgYXNrZWQgdG8gZmluaXNoIG9uZ29pbmcgCisgICAgICAgIHRyYW5zYWN0aW9ucywgaXQgYWJv
cnRzIG9yIGNvbW1pdHMgdGhlbSB0aHJvdWdoIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBvbiB0aGUg
bWFpbiB0aHJlYWQuIFRoaXMgaXMgc2FmZSBiZWNhdXNlIAorICAgICAgICBkYXRiYXNlIHRocmVh
ZCBzaG91bGQgYWxyZWFkeSBiZSBodW5nLiBVbmlxdWVJREJEYXRhYmFzZSBhbHNvIG1hcmtzIHRo
b3NlIHRyYW5zYWN0aW9ucyBhcyBjb21taXR0ZWQgb3IgYWJvcnRlZCwKKyAgICAgICAgc28gd2hl
biBkYXRhYmFzZSB0aHJlYWQgaXMgcmVzdW1lZCBhbmQgc3Vic2VxdWVudCByZXF1ZXN0cyBvbiB0
aG9zZSB0cmFuc2FjdGlvbnMgYXJlIHByb2Nlc3NlZCwgcHJvcGVyIGVycm9yIAorICAgICAgICB3
aWxsIGJlIHJldHVybmVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25BZnRlclF1b3Rh
Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJv
cnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpmaW5pc2hBY3RpdmVU
cmFuc2FjdGlvbnMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDogSW50cm9kdWNlIHN0YXRlIG9mIHRyYW5zYWN0aW9u
IHRvIGhlbHAgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgb25nb2luZyB0cmFuc2FjdGlvbnMgc2hv
dWxkIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OnN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
c2V0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6cmVzdWx0KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDQtMTYgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFVucHJlZml4IC13ZWJraXQt
c3RpY2t5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDI4N2JkOGRlNTUxZGQ0NzIyMzEwMTBhNGIzZjAzNjBlMzgxNzY2
MzEuLmRjMDk5OGMyNjE4YjA5NmY3ZTY5M2E5NGQ3ZGY2MmIwNmUyMzBmOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTktMDQtMjEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRh
dGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVu
dGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpzZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIw
MTktMDQtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgZml4IHRoZSBidWlsZCB3aXRoIHJlY2VudCBTREtzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCBiMjRkZmNjOTQ4OGYzZjdhYTM2NmRm
MDQyYjQ2N2Q0M2Q2ZmU4MWE5Li42ZWIzMDI1M2NmZTU0YTlkYzRmOGRhMGZjNzliZDgwZWE1NjBi
Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtNjgs
OCArNjgsMjAgQEAgdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAg
ICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YXNrVGhyZWFkQ3JlYXRpb25Mb2NrKTsKICAg
ICB9CiAKLSAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpCisgICAgd2hpbGUgKCFt
X3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNz
YWdlKCkucGVyZm9ybVRhc2soKTsKKworICAgICAgICBMb2NrZXI8TG9jaz4gc2hvdWxkU3RvcExv
Y2tlcihtX3Nob3VsZFN0b3BMb2NrKTsKKyAgICAgICAgd2hpbGUgKG1fc2hvdWxkU3RvcCkgewor
ICAgICAgICAgICAgbV9zdG9wcGVkTG9jay5sb2NrKCk7CisgICAgICAgICAgICBpZiAoIW1fc3Rv
cHBlZCkgeworICAgICAgICAgICAgICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgbV9zdG9wcGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9zdG9wcGVkTG9jay51bmxvY2soKTsKKyAgICAgICAgICAgIG1fc2hvdWxkU3RvcENv
bmRpdGlvbi53YWl0KG1fc2hvdWxkU3RvcExvY2spOworICAgICAgICB9CisgICAgfQogfQogCiB2
b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFk
KCkKQEAgLTgzLDUgKzk1LDM1IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6aGFuZGxl
VGFza1JlcGxpZXNPbk1haW5UaHJlYWQoKQogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwog
fQogCit2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OndhaXRGb3JTdG9wKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3Nob3VsZFN0b3BMb2NrKTsKKyAgICAgICAgbV9zaG91bGRTdG9wID0gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBQb3N0IGFuIGVtcHR5IHRhc2sgdG8gZW5zdXJlIGRhdGFiYXNlIHRocmVhZCBr
bm93cyBtX3Nob3VsZFN0b3AgYW5kIHNldHMgbV9zdG9wcGVkLgorICAgIHBvc3RUYXNrKENyb3Nz
VGhyZWFkVGFzayhbXSgpIHsgfSkpOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3N0b3Bw
ZWRMb2NrKTsKKyAgICB3aGlsZSAoIW1fc3RvcHBlZCkKKyAgICAgICAgbV9zdG9wcGVkQ29uZGl0
aW9uLndhaXQobV9zdG9wcGVkTG9jayk7Cit9CisKK3ZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
cjo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIobV9zaG91bGRTdG9wTG9jayk7CisgICAgaWYgKG1fc2hvdWxkU3RvcCkgewor
ICAgICAgICBtX3N0b3BwZWRMb2NrLmxvY2soKTsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3N0b3BwZWRMb2NrKTsKKyAgICAgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgICAgIG1f
c3RvcHBlZCA9IGZhbHNlOworICAgICAgICBtX3N0b3BwZWRMb2NrLnVubG9jaygpOworICAgICAg
ICBtX3Nob3VsZFN0b3AgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRTdG9wQ29uZGl0aW9uLm5v
dGlmeU9uZSgpOworICAgIH0KK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9D
cm9zc1RocmVhZFRhc2tIYW5kbGVyLmgKaW5kZXggMjYzYjNkMDM1ZWNiZmMyZjhiNDE3YTlmMDIw
MDgzMzM2NmRlZDY4MS4uZmYwZTFkNTM3OTlkNTEwMjU2MGZhYzQxNTY5YWJkYTdmMzgzYTY0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaApAQCAtNDQsNiArNDQsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwb3N0VGFzayhDcm9z
c1RocmVhZFRhc2smJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2tSZXBs
eShDcm9zc1RocmVhZFRhc2smJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdEZv
clN0b3AoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXN1bWUoKTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CkBAIC01Myw2ICs1
NSwxNCBAQCBwcml2YXRlOgogICAgIExvY2sgbV9tYWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJv
b2wgbV9tYWluVGhyZWFkUmVwbHlTY2hlZHVsZWQgeyBmYWxzZSB9OwogCisgICAgYm9vbCBtX3No
b3VsZFN0b3AgeyBmYWxzZSB9OworICAgIENvbmRpdGlvbiBtX3Nob3VsZFN0b3BDb25kaXRpb247
CisgICAgTG9jayBtX3Nob3VsZFN0b3BMb2NrOworCisgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxz
ZSB9OworICAgIENvbmRpdGlvbiBtX3N0b3BwZWRDb25kaXRpb247CisgICAgTG9jayBtX3N0b3Bw
ZWRMb2NrOworCiAgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fdGFza1F1
ZXVlOwogICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX3Rhc2tSZXBseVF1
ZXVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY1M2FhN2Mx
MTlhYmE2MDMyNDI3NjIzYjk1YjEyZGMzNjliZGNmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3Bw
CkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQkFjdGl2aXR5Q291bnRlci5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25h
bWVzcGFjZSBJREJBY3Rpdml0eUNvdW50ZXIgeworCitzdGF0aWMgdWludDY0X3QgY291bnQ7Citz
dGF0aWMgTG9jayBjb3VudE11dGV4Oworc3RhdGljIElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVy
KiBjb3VudE9ic2VydmVyID0gbnVsbHB0cjsKKwordm9pZCByZWdpc3Rlck9ic2VydmVyKElEQkFj
dGl2aXR5Q291bnRlck9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TG9jaz4gbG9jayhjb3VudE11dGV4KTsKKyAgICBjb3VudE9ic2VydmVyID0gb2JzZXJ2ZXI7Cit9
CisKK3ZvaWQgaW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCkKK3sKKyAgICBzdGQ6OmxvY2tf
Z3VhcmQ8TG9jaz4gbG9jayhjb3VudE11dGV4KTsKKyAgICArK2NvdW50OworCisgICAgaWYgKCFj
b3VudE9ic2VydmVyKQorICAgICAgICByZXR1cm47CisgICAgY291bnRPYnNlcnZlci0+Y291bnRl
ckluY3JlbWVudGVkVG8oY291bnQpOworfQorCit2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291
bnRlcigpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7Cisg
ICAgLS1jb3VudDsKKworICAgIGlmICghY291bnRPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNvdW50T2JzZXJ2ZXItPmNvdW50ZXJEZWNyZW1lbnRlZFRvKGNvdW50KTsKK30KKyAgICAK
K3VpbnQ2NF90IGlkYkFjdGl2aXR5Q291bnQoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2Nr
PiBsb2NrKGNvdW50TXV0ZXgpOworICAgIHJldHVybiBjb3VudDsKK30KKworSURCQWN0aXZpdHlD
b3VudGVyT2JzZXJ2ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyKFdURjo6RnVuY3Rpb248
dm9pZChQQUw6Okh5c3RlcmVzaXNTdGF0ZSk+JiYgaHlzdGVyZXNpc1VwZGF0ZUZ1bmN0aW9uKQor
ICAgIDogbV9oeXN0ZXJlc2lzKFdURk1vdmUoaHlzdGVyZXNpc1VwZGF0ZUZ1bmN0aW9uKSkKK3sK
KyAgICBJREJBY3Rpdml0eUNvdW50ZXI6OnJlZ2lzdGVyT2JzZXJ2ZXIodGhpcyk7Cit9CisKK3Zv
aWQgSURCQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2
NF90IGNvdW50KQoreworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgbV9oeXN0ZXJlc2lzLnN0YXJ0KCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgSURCQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJEZWNy
ZW1lbnRlZFRvKHVpbnQ2NF90IGNvdW50KQoreworICAgIGlmIChjb3VudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10geworICAgICAgICBtX2h5c3RlcmVz
aXMuc3RvcCgpOworICAgIH0pOworfQorCit9IC8vIElEQkFjdGl2aXR5Q291bnRlcgorfSAvLyBX
ZWJDb3JlCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlDb3VudGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlD
b3VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY2NGQxNDZlZjZkZTc0NDc1MjVkMjhkM2ViNjYyOGYyNjY1
ZTFlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitu
YW1lc3BhY2UgSURCQWN0aXZpdHlDb3VudGVyIHsKKworY2xhc3MgSURCQWN0aXZpdHlDb3VudGVy
T2JzZXJ2ZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IElEQkFjdGl2
aXR5Q291bnRlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChQQUw6Okh5c3RlcmVzaXNTdGF0
ZSk+JiYpOworICAgIHZvaWQgY291bnRlckluY3JlbWVudGVkVG8odWludDY0X3QpOworICAgIHZv
aWQgY291bnRlckRlY3JlbWVudGVkVG8odWludDY0X3QpOworcHJpdmF0ZToKKyAgICBQQUw6Okh5
c3RlcmVzaXNBY3Rpdml0eSBtX2h5c3RlcmVzaXM7Cit9OworCitXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZ2lzdGVyT2JzZXJ2ZXIoSURCQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXIqKTsKK1dFQkNPUkVf
RVhQT1JUIHZvaWQgaW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworV0VCQ09SRV9FWFBPUlQgdWlu
dDY0X3QgaWRiQWN0aXZpdHlDb3VudCgpOworCitjbGFzcyBJREJBY2l0aXZpdHlBdXRvQ291bnRl
ciB7CitwdWJsaWM6CisgICAgSURCQWNpdGl2aXR5QXV0b0NvdW50ZXIoKQorICAgIHsKKyAgICAg
ICAgSURCQWN0aXZpdHlDb3VudGVyOjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKyAg
ICB9CisgICAgfklEQkFjaXRpdml0eUF1dG9Db3VudGVyKCkKKyAgICB7CisgICAgICAgIElEQkFj
dGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CisgICAgfQorfTsK
KworfSAvLyBuYW1lc3BhY2UgSURCQWN0aXZpdHlDb3VudGVyCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9y
ZS5oCmluZGV4IGM2ZDdkNDNmOWViYWRkMjkyNDgwY2Y0ZWFjNDA3ODc1MTAwOWE0MDEuLmY5ZTQ2
Yjg5MjVlNDU3YjkwMTllOTc0OWFhMjE1MDQwMTQ0MjdhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgK
QEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGRhdGFi
YXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFF1b3Rh
KHVpbnQ2NF90KSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RyYW5zYWN0aW9uKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYpID0gMDsKIHByb3RlY3RlZDoKICAgICBJREJCYWNraW5nU3Rv
cmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmlu
ZGV4IDViZjQ3ZjIxOTFjNDgzYTdhZDgwN2M5NjAyZWIxOTYwYjA1NmI1ZWIuLjRlNWJkNGFjZjgx
MzJkZDVlMDVmZWQyMzJmNmVlZDQ2ZGNjODgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC04MjgsNiArODI4
LDM2IEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0K
IAordm9pZCBJREJTZXJ2ZXI6OnN0b3AoU2hvdWxkRm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkK
K3sKKyAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXJzIHRoYXQgY2FuIGhv
bGQgbG9ja2VkIGRhdGFiYXNlIGZpbGVzLgorICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB3YWl0Rm9yU3RvcCgpOworICAgIGF1dG8gc3Fs
aXRlSURCQWN0aXZpdHlDb3VudCA9IElEQkFjdGl2aXR5Q291bnRlcjo6aWRiQWN0aXZpdHlDb3Vu
dCgpOworICAgIGlmIChzaG91bGRGb3JjZVN0b3AgPT0gU2hvdWxkRm9yY2VTdG9wOjpObykgewor
ICAgICAgICBpZiAoc3FsaXRlSURCQWN0aXZpdHlDb3VudCkKKyAgICAgICAgICAgIENyb3NzVGhy
ZWFkVGFza0hhbmRsZXI6OnJlc3VtZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHNxbGl0ZUlEQkFjdGl2aXR5Q291bnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFz
ZSA6IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudmFsdWVzKCkpCisgICAgICAgICAgICBkYXRhYmFz
ZS0+ZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgfQorCisgICAgQVNTRVJUKCFJREJB
Y3Rpdml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQoKSk7Cit9CisKK3ZvaWQgSURCU2VydmVy
OjpyZXN1bWUoKQoreworICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1bWUoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApp
bmRleCAwYjg0Njg3ZjI3Y2IzNTg3ZDlkYzNhN2YyMzY5M2E2MGYyOWM1ZGJhLi5hODY3NTMzZjQx
MTcxYmYyY2FlYTZiOTZiMmNiMTVkODcyOGIwYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01OCw2ICs1OCw4IEBA
IGNvbnN0IHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSA9IDUwMCAqIE1COwogCiBjbGFz
cyBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKIAorZW51bSBjbGFzcyBTaG91
bGRGb3JjZVN0b3AgeyBObywgWWVzIH07CisKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZD
b3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8SURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUXVvdGFNYW5h
Z2VyR2V0dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyKihQQUw6OlNlc3Np
b25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJik+OwpAQCAtMTI0LDYgKzEyNiw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdp
bikgeyBlbnN1cmVRdW90YVVzZXIob3JpZ2luKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdG9wKFNob3VsZEZvcmNlU3RvcCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWUo
KTsKKwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogICAgIElE
QlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBh
dGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0
dGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDY0ZTZjYzdkZTBjYTY3
NjdlYzE4ZDUxNGJjYWFmNGJkOGE1NjJjN2YuLjNlMDUxNzRlOWVhMWY4ZTRlYzFmNTBjMzc4ZmI1
ZDk5OWEyOGRhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDYgKzg1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdl
QWJvcnQoTWVtb3J5T2JqZWN0U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwogCisgICAgYm9v
bCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiBwcml2YXRl
OgogICAgIFJlZlB0cjxNZW1vcnlPYmplY3RTdG9yZT4gdGFrZU9iamVjdFN0b3JlQnlJZGVudGlm
aWVyKHVpbnQ2NF90IGlkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwCmluZGV4IDYyNDk5NzY1YWI5ZDRhYmQxM2Y1OTcwZDJjZmU1NWYzYjJjMTkzYTAuLjE5YWIx
NDU5NjY1NjM3NjVjZjhjMGFhZjYwNGZjMzAzMmFmNDEwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAorI2luY2x1ZGUgIklEQkFjdGl2aXR5Q291bnRlci5oIgogI2luY2x1ZGUgIklE
QkJpbmRpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJREJHZXRBbGxSZWNvcmRzRGF0YS5oIgog
I2luY2x1ZGUgIklEQkdldEFsbFJlc3VsdC5oIgpAQCAtMjQxLDggKzI0MiwxMCBAQCBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlk
ZW50aWZpZXImIGlkZW50aQogCiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNr
aW5nU3RvcmUoKQogewotICAgIGlmIChtX3NxbGl0ZURCKQorICAgIGlmIChtX3NxbGl0ZURCKSB7
CisgICAgICAgIElEQkFjdGl2aXR5Q291bnRlcjo6SURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgYXV0
b0NvdW50ZXI7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKKyAgICB9CiAKICAgICBpZiAobV92
bSkgewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOwpAQCAtNzc3LDYg
Kzc4MCw4IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgo
KSBjb25zdAogCiBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9t
RmlsZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIHsKKyAgICBJREJBY3Rpdml0eUNvdW50
ZXI6OklEQkFjaXRpdml0eUF1dG9Db3VudGVyIGF1dG9Db3VudGVyOworCiAgICAgU1FMaXRlRGF0
YWJhc2UgZGF0YWJhc2U7CiAgICAgaWYgKCFkYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0
aCAnJXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBuYW1lIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5k
YXRhKCkpOwpAQCAtODIyLDYgKzgyNyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAg
ICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAorICAgIElEQkFjdGl2
aXR5Q291bnRlcjo6SURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBt
X3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAo
IW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4
KCkuZGF0YSgpKTsKQEAgLTkyNSw2ICs5MzIsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQog
ICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJ
bmZvKTsKIAorICAgIElEQkFjdGl2aXR5Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlDb3Vu
dGVyKCk7CisKICAgICBtX3NxbGl0ZURCLT5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSgpKTsK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdHJhbnNhY3Rpb25zLmFkZChpbmZvLmlkZW50aWZpZXIo
KSwgbnVsbHB0cik7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpAQCAtOTY4LDcg
Kzk3NywxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFib3J0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZAogICAgIGlmICh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSAmJiBtX29yaWdpbmFs
RGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8g
PSBXVEZNb3ZlKG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlKTsKIAot
ICAgIHJldHVybiB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5z
YWN0aW9uLT5hYm9ydCgpOworCisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpkZWNyZW1lbnRJREJB
Y3Rpdml0eUNvdW50ZXIoKTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTkzLDYgKzEwMDYsOCBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgaQogICAgIH0gZWxzZQogICAgICAgICBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVm
b3JlVmVyc2lvbkNoYW5nZSA9IG51bGxwdHI7CiAKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6OmRl
Y3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworCiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBA
IC0xMDA0LDEwICsxMDE5LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVt
cHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJh
bnNhY3Rpb24iX3MgfTsKQEAgLTEwNjAsMTAgKzEwNzQsOSBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFu
c2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAg
IGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9u
LT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAg
IExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZl
cnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12
ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTE1MiwxMCArMTE2NSw5IEBAIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsK
IAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJv
Z3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVj
dCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0IHN0
b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAg
ICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25j
aGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qg
c3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0
IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMTg3
LDEwICsxMTk5LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHIKICAgICBBU1NFUlQobV9zcWxp
dGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBjbGVhciBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY2xl
YXIgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3Mg
fTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlv
bk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjbGVhciBh
biBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjbGVhciBhbiBvYmplY3Qg
c3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTEyMjgsMTAgKzEyMzks
OSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09w
ZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0
cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkg
ewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEgbm9uLXZlcnNp
b24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xNDIxLDEwICsxNDMxLDggQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgaW5kZXggd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUo
KSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCBkdXJpbmcgYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iKTsKQEAgLTE0NzYsMTAgKzE0ODQsOCBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJDb3VsZCBub3Qg
cmVuYW1lIGluZGV4Il9zIH07CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIHJlbmFtZSBhbiBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7
CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUg
YW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0K
IAogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVy
c2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1lIGFuIGlu
ZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CkBAIC0xNTE1LDEwICsx
NTIxLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBrZXlFeGlzdHMgPSBmYWxzZTsK
IAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJv
Z3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gc2VlIGlmIGtleSBleGlz
dHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwor
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc2VlIGlmIGtl
eSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwotICAgIH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1ZmZlciA9IHNl
cmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIpIHsKQEAgLTE2
OTAsMTAgKzE2OTQsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJh
bmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIEFTU0VSVChtX3Nx
bGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIGRlbGV0ZSByYW5nZSBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGRlbGV0ZSByYW5nZSBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBkZWxldGUgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0
cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGRlbGV0ZSByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1v
bmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xODExLDEwICsxODE0LDkgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGkKICAgICBBU1NFUlQodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkgPT0gdmFsdWUu
YmxvYkZpbGVQYXRocygpLnNpemUoKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJB
dHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9y
ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTk4MCwxMCArMTk4Miw4
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3Bl
bigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IGEgcmVj
b3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwor
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IGEgcmVj
b3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9
OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAgICAgaWYgKGtl
eS5pc051bGwoKSkKQEAgLTIxNTEsMTAgKzIxNTEsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2Fj
dGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCByZWNvcmRzIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFu
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBrZXkgPSBn
ZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEubG93ZXJLZXk7CiAgICAgaWYgKGtleS5pc051
bGwoKSkKQEAgLTIyNDcsMTAgKzIyNDUsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImCiAgICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZyb20gZGF0YWJhc2Ugd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVu
a25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZyb20gZGF0YWJh
c2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAg
IGF1dG8gY3Vyc29yID0gdHJhbnNhY3Rpb24tPm1heWJlT3BlbkJhY2tpbmdTdG9yZUN1cnNvcihn
ZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIsIGdldEFsbFJlY29yZHNEYXRh
LmluZGV4SWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0RhdGEua2V5UmFuZ2VEYXRhKTsKICAgICBp
ZiAoIWN1cnNvcikgewpAQCAtMjI5NSwxMCArMjI5MSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IGFuIGluZGV4IHJlY29yZCBmcm9tIGRhdGFiYXNl
IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0
aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBhbiBpbmRleCByZWNvcmQgZnJvbSBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQog
CiAgICAgaWYgKHJhbmdlLmlzRXhhY3RseU9uZUtleSgpKQogICAgICAgICByZXR1cm4gdW5jaGVj
a2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW5kZXhJRCwgb2JqZWN0U3RvcmVJRCwgdHlwZSwg
cmFuZ2UubG93ZXJLZXksIGdldFJlc3VsdCk7CkBAIC0yMzk1LDEwICsyMzg5LDggQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRvKiB0cmFuc2Fj
dGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFu
c2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGN1cnNvciA9IHRy
YW5zYWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3Iob2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleElkZW50aWZpZXIsIHJhbmdlKTsKICAgICBpZiAoIWN1cnNvcikgewpAQCAtMjQ1
OCwxMCArMjQ1MCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVL
ZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlv
bnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAh
dHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQg
dG8gZ2VuZXJhdGUga2V5IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IGdlbmVyYXRlIGtleSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
Z2VuZXJhdGUga2V5IGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2VuZXJhdGUga2V5IGluIGEg
cmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0yNDg3LDEwICsyNDc4LDkgQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGkKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZXZlcnQga2V5IGdlbmVyYXRv
ciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7
CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZXZlcnQg
a2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRy
YW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVt
cHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rp
b24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byByZXZlcnQga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJf
cyB9OwpAQCAtMjUwOCwxMCArMjQ5OCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJCiAgICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2Ugd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3IgdmFsdWUgaW4g
ZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0K
KwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVh
ZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJh
dG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3Ig
dmFsdWUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1MzQsMTAgKzI1MjMs
OCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om9wZW5DdXJzb3IoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09w
ZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIG9wZW4gYSBj
dXJzb3IgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwor
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gb3BlbiBhIGN1
cnNvciBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
Ci0gICAgfQogCiAgICAgYXV0byogY3Vyc29yID0gdHJhbnNhY3Rpb24tPm1heWJlT3BlbkN1cnNv
cihpbmZvKTsKICAgICBpZiAoIWN1cnNvcikgewpAQCAtMjU2NiwxMCArMjU1Myw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zCiAKICAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigpLT50cmFuc2FjdGlvbklkZW50aWZpZXIoKSA9PSB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCi0gICAgaWYgKCFjdXJzb3ItPnRyYW5zYWN0aW9uKCkg
fHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKS0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQXR0ZW1wdCB0byBpdGVyYXRlIGEgY3Vyc29yIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIWN1cnNvci0+dHJhbnNhY3Rpb24oKSB8fCAhY3Vyc29y
LT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7
IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gaXRlcmF0ZSBhIGN1cnNvciB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBrZXkgPSBkYXRh
LmtleURhdGE7CiAgICAgYXV0byBwcmltYXJ5S2V5ID0gZGF0YS5wcmltYXJ5S2V5RGF0YTsKQEAg
LTI2MjAsNiArMjYwNSw4IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNr
aW5nU3RvcmUoKQogewogICAgIFN0cmluZyBkYkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgp
OwogCisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpJREJBY2l0aXZpdHlBdXRvQ291bnRlciBhdXRv
Q291bnRlcjsKKwogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRl
bGV0ZUJhY2tpbmdTdG9yZSBkZWxldGluZyBmaWxlICclcycgb24gZGlzayIsIGRiRmlsZW5hbWUu
dXRmOCgpLmRhdGEoKSk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZXM7CkBAIC0yNjk3
LDYgKzI2ODQsMTIgQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsb3NlU1FMaXRlREIo
KQogICAgIG1fc3FsaXRlREIgPSBudWxscHRyOwogfQogCitib29sIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6aGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1
cm4gbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuaAppbmRleCA1NmI1MTdjMmE2MTA3NDRiZGVmMjBlMTg4OWMw
NjMxYzMwYWFmYjU4Li43ZjRhNjMzYTNjY2YzMjcwZjQwZDk5MTM2YjhlYmIxOGFhOGE3NjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBT
dHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlTmFtZUZyb21GaWxlKGNvbnN0IFN0
cmluZyYpOwogCisgICAgYm9vbCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImKTsKIHByaXZhdGU6CiAgICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkg
Y29uc3Q7CiAgICAgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGgoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCmluZGV4IDZiODAwMDE4ZTZhZjY4NGZiYThhMDY5MjExNWY5MWQ0YWNlNmQ1
MDMuLjI5ZTZjNWI2ODg0ODllZDY0ODNhNDBlZjllZGQ3OTk1ZGJhODZkMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTU5OSwxMyArMTU5OSwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbgogICAgIHBlcmZvcm1HZXRSZXN1bHRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIs
IGVycm9yLCByZXN1bHQpOwogfQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVwYXJlVG9G
aW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlv
bikKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpTdGF0ZSBzdGF0ZSkKIHsKICAgICBhdXRvIHRha2VuVHJhbnNhY3Rpb24g
PSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEFTU0VSVCghbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOworICAgIHRha2VuVHJhbnNhY3Rpb24tPnNldFN0
YXRlKHN0YXRlKTsKICAgICBtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTE2MzMsNyArMTYzNCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
CiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXByZXBh
cmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgIGlmICghcHJlcGFyZVRv
RmluaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OlN0YXRlOjpDb21taXR0aW5nKSkgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29u
bmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkgewog
ICAgICAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3Npbmcgb3IgaGFz
IGFscmVhZHkgY2xvc2VkLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBtZXNzYWdpbmcgYmFjayB0
byBpdCBhYm91dCB0aGUgY29tbWl0IGZhaWxpbmcuCiAgICAgICAgICAgICBmb3JnZXRFcnJvckNh
bGxiYWNrKGNhbGxiYWNrSUQpOwpAQCAtMTY2MSw3ICsxNjYyLDE0IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhlZERC
LCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24g
LSAlcyIsIHRyYW5zYWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9y
KTsKKyAgICBJREJFcnJvciByZXN1bHQgPSBlcnJvcjsKKyAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CisgICAg
aWYgKHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OlN0YXRlOjpBYm9ydGVkKQorICAgICAgICByZXN1bHQgPSBJREJFcnJvciB7IFVua25vd25FcnJv
ciwgIlRyYW5zYWN0aW9uIGlzIGFscmVhZHkgYWJvcnRlZCJfcyB9OworICAgIGVsc2UgaWYgKHRy
YW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRl
OjpDb21taXR0ZWQpCisgICAgICAgIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5yZXN1bHQoKTsKKwor
ICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0KTsKIAog
ICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLnRha2UodHJh
bnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CkBAIC0xNjg4LDcgKzE2OTYsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24mIHRyYW5zYWN0aQogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICBp
ZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRpbmcpKSB7CiAgICAgICAgIGlmICghbV9vcGVu
RGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgY2xv
c2luZyBvciBoYXMgYWxyZWFkeSBjbG9zZWQsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG1lc3Nh
Z2luZyBiYWNrIHRvIGl0IGFib3V0IHRoZSBhYm9ydCBmYWlsaW5nLgogICAgICAgICAgICAgZm9y
Z2V0RXJyb3JDYWxsYmFjayhjYWxsYmFja0lEKTsKQEAgLTE3NDQsOCArMTc1Miw5IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICB9Ci0KLSAgICBwZXJmb3JtRXJyb3JD
YWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yKTsKKyAgICAKKyAgICBJREJFcnJvciBy
ZXN1bHQgPSB0cmFuc2FjdGlvbi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpTdGF0ZTo6QWJvcnRlZCA/IHRyYW5zYWN0aW9uLT5yZXN1bHQoKSA6IGVycm9yOworICAg
IHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0KTsKIAogICAg
IHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodHJhbnNhY3Rpb24pKTsKIH0KQEAgLTIzMDks
NiArMjMxOCw0MSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzZXRRdW90YSh1aW50NjRfdCBx
dW90YSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnNldFF1b3RhKHF1b3RhKTsKIH0KIAordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICB0cmFuc2FjdGlvbi5z
ZXRSZXN1bHQobV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaW5m
bygpLmlkZW50aWZpZXIoKSkpOworICAgIHRyYW5zYWN0aW9uLnNldFN0YXRlKFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkKTsKK30KKwordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgdHJhbnNhY3Rpb24uc2V0UmVzdWx0KG1f
YmFja2luZ1N0b3JlLT5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpKSk7CisgICAgdHJhbnNhY3Rpb24uc2V0U3RhdGUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRlZCk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6
OmZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucygpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2luUHJvZ3Jl
c3NUcmFuc2FjdGlvbnMua2V5cygpKSkgeworICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9p
blByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgYWJvcnRUcmFu
c2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rpb24pOworICAgIH0KKworICAgIGZvciAoYXV0
byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5rZXlz
KCkpKSB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmhhc1RyYW5zYWN0aW9uKGlkZW50
aWZpZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLnRha2UoaWRlbnRpZmllcik7CisgICAgICAgIGlm
ICh0cmFuc2FjdGlvbi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpT
dGF0ZTo6QWJvcnRpbmcpCisgICAgICAgICAgICBhYm9ydFRyYW5zYWN0aW9uT25NYWluVGhyZWFk
KCp0cmFuc2FjdGlvbik7CisgICAgICAgIGVsc2UgaWYgKHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpDb21taXR0aW5nKQorICAgICAg
ICAgICAgY29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0aW9uKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuaAppbmRleCBlM2E3YjFiMWNlNTI0YzkyMmUyZWQ5MDI1NDE5NzA4M2UyYzli
ZDI2Li5iMzAyZjAzZDgyMWRkZDlkYzQ4OWU0YmRhNmI1Zjk1ZWVmNGNhMzY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
UXVvdGEodWludDY0X3QpOwogCisgICAgdm9pZCBmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKTsK
KwogcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZv
aWQgaGFuZGxlQ3VycmVudE9wZXJhdGlvbigpOwpAQCAtMjM3LDcgKzIzOSw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBvcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQoKTsKICAgICBSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gdGFrZU5leHRSdW5uYWJsZVRyYW5zYWN0
aW9uKGJvb2wmIGhhZERlZmVycmVkVHJhbnNhY3Rpb25zKTsKIAotICAgIGJvb2wgcHJlcGFyZVRv
RmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIGJv
b2wgcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYsIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlKTsKKyAgICB2b2lkIGFib3J0
VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwor
ICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTdGFsZVBlbmRpbmdPcGVuREJSZXF1
ZXN0cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRl
eCA0ZjNjMjAxNTI4NmYyMjE4NzNiY2YyMjNlYzQxNGFlMzQwMTEzODg4Li4xMzkyMjJmMmViNmNj
NmFkMzgwYWM2Y2ZiMThkNDcxYTNhODNkOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmgKQEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uOwogCiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgor
ICAgIGVudW0gY2xhc3MgU3RhdGUgeyBSdW5uaW5nLCBBYm9ydGluZywgQ29tbWl0dGluZywgQWJv
cnRlZCwgQ29tbWl0dGVkIH07CisKICAgICBzdGF0aWMgUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24+IGNyZWF0ZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mKTsKIAogICAgIH5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKCk7
CkBAIC05MCw2ICs5MiwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBvYmplY3RTdG9yZUlkZW50aWZpZXJzKCk7CiAKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHN0
YXRlKSB7IG1fc3RhdGUgPSBzdGF0ZTsgfQorICAgIFN0YXRlIHN0YXRlKCkgeyByZXR1cm4gbV9z
dGF0ZTsgfQorICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IElEQkVycm9yJiBlcnJvcikgeyBtX3Jl
c3VsdCA9IGVycm9yOyB9CisgICAgSURCRXJyb3IgcmVzdWx0KCkgeyByZXR1cm4gbV9yZXN1bHQ7
IH0KKwogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC0x
MDAsNiArMTA3LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJ
bmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX29i
amVjdFN0b3JlSWRlbnRpZmllcnM7CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5p
bmcgfTsKKyAgICBJREJFcnJvciBtX3Jlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAyM2RkMmE1MTlhNTA5MjZjYzY5NjVlZDBkZGM4NTMxYWU1
NTdmZjgwLi5kMDc4Y2VkMzY0ZGQ3YzZhNzE5NDJiMTllYTk3MDkyZDNjMzljNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTAwLDYgKzEwMCw3IEBAIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmNwcAogCitNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlDb3VudGVyLmNw
cAogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJpYWxpemF0aW9uLmNwcAogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Zjg0MzI4MWI1ZmJhYWMyMzUwNzZjMjEy
MmY1ZDkyM2MzYTJkYTA5Li4zNWJkNWQwNDg3NmZkZGEzZDFjY2I2MmJlYzI5MGUxM2EyOTAxMDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yNjQ2LDYgKzI2NDYsNyBAQAogCQk5M0I3MEQ2QTA5RUIwQzdDMDA5RDg0NjggLyog
SlNFdmVudExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0I3MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENkMw
OUVCMEM3QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzBENTAwOUVCMEM3QzAwOUQ4
NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQjcwRDcwMDlFQjBDN0MwMDlEODQ2OCAvKiBT
Y3JpcHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5M0I3MEQ1NDA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzQjczNkM1
MjI2NjM2N0MwMEYxQTA5NiAvKiBJREJBY3Rpdml0eUNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjczNkMzMjI2NjM1OUYwMEYxQTA5NiAv
KiBJREJBY3Rpdml0eUNvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0I3N0EzODBBREQ3OTI1MDBFQTRCODEgLyogRnJhbWVMb2FkZXJU
eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNC
NzdBMzcwQURENzkyNTAwRUE0QjgxIC8qIEZyYW1lTG9hZGVyVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0MwOUE1MzBCMDY0REIzMDA1
QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDMDlD
ODYwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MwOUM4NTBCMDY1N0FBMDA1QUJENEQgLyogU2Ny
b2xsVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTA1MTMsNiArMTA1MTQsOCBAQAogCQk5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyog
SlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNCNzBENTMwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3MEQ1NDA5RUIwQzdDMDA5RDg0Njgg
LyogU2NyaXB0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0I3MzZD
MzIyNjYzNTlGMDBGMUEwOTYgLyogSURCQWN0aXZpdHlDb3VudGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElEQkFjdGl2aXR5Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5M0I3MzZDNjIyNjYzRkI1MDBGMUEwOTYgLyogSURCQWN0aXZpdHlDb3Vu
dGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkFjdGl2aXR5
Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjc3QTM3MEFERDc5
MjUwMEVBNEI4MSAvKiBGcmFtZUxvYWRlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZyYW1lTG9hZGVyVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNDMDlBNTIwQjA2NERCMzAwNUFCRDREIC8qIEV2ZW50SGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudEhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1hYy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50SGFuZGxlck1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NDUyLDYgKzE4NDU1LDggQEAK
IAkJNTEwQTU4RUUxQkFCNzFFMDAwQzE5MjgyIC8qIHNlcnZlciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTNCNzM2QzYyMjY2M0ZCNTAwRjFBMDk2IC8q
IElEQkFjdGl2aXR5Q291bnRlci5jcHAgKi8sCisJCQkJOTNCNzM2QzMyMjY2MzU5RjAwRjFBMDk2
IC8qIElEQkFjdGl2aXR5Q291bnRlci5oICovLAogCQkJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2
RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLywKIAkJCQk1MTZEN0Q2RDFCQjVGMDY1MDBBRjdDNzcg
LyogSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCAqLywKIAkJCQk1MTBBNThGRTFCQjA3QUE1MDBD
MTkyODIgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50LmggKi8sCkBAIC0yOTI3Niw2ICsyOTI4MSw3
IEBACiAJCQkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxM0YxNDU0MEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTcxNEVBODFDRjRFNEIxMDA0NzIzQzQgLyogSURCQWN0aXZlRE9NT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0I3MzZDNTIyNjYzNjdDMDBGMUEwOTYgLyogSURCQWN0
aXZpdHlDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNE
NkQgLyogSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTg1QTY2MzExRDRG
QUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCmluZGV4IDFmYjk1NWQ2ZmI0N2UxM2UyNDIyYzA0MGU2NDQ1YTJjYmFmZTBmNjIuLjhmZmI4
OGY1YjE2YTRkYTdiOTk3NWI2NjFjMzEzYTg5OTM2MWZmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzUsNiArMTM1LDExIEBA
IE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAs
IG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKCp0aGlzKQogI2VuZGlmCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgLCBtX2lkYkFjdGl2
aXR5Q291bnRlck9ic2VydmVyKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgewor
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpTZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhzdGF0
ZSA9PSBQQUw6Okh5c3RlcmVzaXNTdGF0ZTo6U3RhcnRlZCksIDApOworICAgIH0pCisjZW5kaWYK
IHsKICAgICBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwog
CkBAIC0xOTk3LDYgKzIwMDIsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFy
ZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgZm9yIChhdXRvJiBzZXJ2
ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIHNlcnZlci0+c3RvcChJREJTZXJ2
ZXI6OlNob3VsZEZvcmNlU3RvcDo6WWVzKTsKKyNlbmRpZgogICAgIGFjdHVhbFByZXBhcmVUb1N1
c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KQEAgLTIwMDQsNiArMjAxMywxMCBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+Jgogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCiB7
CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNz
OjpwcmVwYXJlVG9TdXNwZW5kKCkiLCB0aGlzKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRi
U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT5zdG9wKElEQlNlcnZlcjo6U2hvdWxk
Rm9yY2VTdG9wOjpObyk7CisjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3Vs
ZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCkBAIC0yMDQzLDYgKzIw
NTYsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBmb3IgKGF1dG8mIHNl
cnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNp
b24oKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygp
KQorICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYTYyY2NiOGZiMWY5NTNi
NGQ3MjJjMmQwOGMxYzI3MDQ2NWIwOTBkOC4uODdlZTY4ZGU2YjQ3YTlmY2YxNGVlYzAyZjNmNzEw
Mjg4ZWQwYWIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjaW5jbHVkZSA8V2ViQ29yZS9JREJBY3Rpdml0eUNvdW50ZXIuaD4K
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhU
VFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgpAQCAtNTE0
LDYgKzUxOCwxMCBAQCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgV2ViQ29yZTo6SURCQWN0aXZpdHlD
b3VudGVyOjpJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlciBtX2lkYkFjdGl2aXR5Q291bnRlck9i
c2VydmVyOworI2VuZGlmCisKICAgICBSZWY8V29ya1F1ZXVlPiBtX3N0b3JhZ2VUYXNrUXVldWUg
eyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlVGFzayIpIH07CiAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMzNDRkMTYz
ODI3MzViMGI2ODNjNjk2ZjliNjYyNjcxMDcxZDg0NjQuLjA3Y2ExNmQ4ZGFhNzUzMTE5YTU4NjI3
Njg0YWFjYjdhNmI1NGFmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA2MCw2ICsxMDYwLDE5IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBp
c0hvbGRpbmdMb2NrZWRGaWxlcykKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0luZGV4ZWRE
YXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKK3sKKyAgICBpZiAoIWlzSW5kZXhlZERhdGFiYXNl
SG9sZGluZ0xvY2tlZEZpbGVzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1
c2UgSW5kZXhlZERhdGFiYXNlcyBpbiB0aGUgTmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBo
b2xkaW5nIGxvY2tlZCBmaWxlcyIpOworICAgICAgICBtX3Rva2VuRm9ySW5kZXhlZERhdGFiYXNl
SG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoIW1fdG9rZW5Gb3JJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5n
IGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBJbmRleGVkRGF0YWJhc2VzIGluIHRoZSBO
ZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKKyAgICAgICAgbV90b2tl
bkZvckluZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnN5bmNBbGxDb29raWVzKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U3luY0FsbENvb2tpZXMoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZjYjJiNzhiNDVkYzU3MmMz
Nzg4M2U4ZTZhODBmYmJmOGRiMWE2YzMuLjgyYWIyODkyYTZlMzFiZDQyZmFkYjYyNGRmZDk5YzE1
YjA5OGU2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwogCiAgICAgdm9p
ZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKKyAgICB2b2lkIHNldElzSW5kZXhlZERh
dGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogCiAgICAgdm9pZCBzeW5jQWxsQ29va2ll
cygpOwogICAgIHZvaWQgZGlkU3luY0FsbENvb2tpZXMoKTsKQEAgLTI1OSw2ICsyNjAsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAgICBQ
cm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGlu
Z0xvY2tlZEZpbGVzOworICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuIG1fdG9rZW5Gb3JJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXM7CiAgICAgUHJv
Y2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9zeW5jQWxsQ29va2llc1Rv
a2VuOwogICAgIAogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlOThlNjY2MzBmYWQ3OTA2MTA5MjBj
ZWY4NTI3NWRjOTdhZDFmMWQuLjFjODczMjhiMjAxYWRjNjg4M2MwMDRmN2Q3ODVhMmI2Y2I0MTQw
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDYgKzMzLDcgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBQcm9j
ZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNI
b2xkaW5nTG9ja2VkRmlsZXMpCisgICAgU2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2Vk
RmlsZXMoYm9vbCBpc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCiAgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTgwYmZkY2YzMmEwMmJiZWE2MDNj
NzBmNzQyNzY1YzMxMjRhNDZlLi4wYjAwMDcyNGE3NTBmYTczOTE3MDM5N2RkNzkzZWE2MjRmZmNm
MWYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTktMDQtMjEgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRh
dGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wNC0xNiAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjI0NDMyMS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmVmMzZjNDA3YWYzZTliMjE3OGIy
ZDliZWRkZWQ0NmJkY2U5NjBmNi4uMzE3MDc3MDc2YzM5ZDkwYzkzMjBiYTM0Yzk2NzY5M2RlMDc0
YjM1MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0Myw2ICs2NDMsOCBAQAogCQk5MzYy
NUQyNzFDRDk3NDFDMDA2REMxRjEgLyogbGFyZ2UtdmlkZW8td2l0aG91dC1hdWRpby5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjI1
RDI2MUNEOTczQUYwMDZEQzFGMSAvKiBsYXJnZS12aWRlby13aXRob3V0LWF1ZGlvLmh0bWwgKi87
IH07CiAJCTkzNkY3MjgwMUNEN0Q5RUMwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM2RjcyN0UxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgtYXVkaW8uaHRt
bCAqLzsgfTsKIAkJOTM2RjcyODExQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdpdGgt
YXVkaW8ubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzNkY3MjdGMUNEN0Q5RDAwMDY4QTBGQiAvKiBsYXJnZS12aWRlby13aXRoLWF1ZGlv
Lm1wNCAqLzsgfTsKKwkJOTNBRUFDNzUyMjY4RjQyQTAwMDIxQkFCIC8qIEluZGV4ZWREQlN1c3Bl
bmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNBRUFDNzMyMjY4RTQ3MDAwMDIxQkFCIC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVu
dGx5Lm1tICovOyB9OworCQk5M0FFQUM3NjIyNjhGNDUwMDAwMjFCQUIgLyogSW5kZXhlZERCU3Vz
cGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0FFQUM3NDIyNjhFNzMzMDAwMjFCQUIgLyogSW5kZXhlZERCU3Vz
cGVuZEltbWluZW50bHkuaHRtbCAqLzsgfTsKIAkJOTNBRjRFQ0UxNTA2RjA2NDAwN0ZENTdFIC8q
IE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNBRjRFQ0QxNTA2RjA2
NDAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5k
bGUuY3BwICovOyB9OwogCQk5M0FGNEVEMTE1MDZGMTMwMDA3RkQ1N0UgLyogbG90cy1vZi1pbWFn
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0FGNEVDRjE1MDZGMTIzMDA3RkQ1N0UgLyogbG90cy1vZi1pbWFnZXMuaHRtbCAqLzsg
fTsKIAkJOTNDRkE4NjcxQ0VCOUUzODAwMDU2NUE4IC8qIGF1dG9mb2N1c2VkLXRleHQtaW5wdXQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0NGQTg2NjFDRUI5REUxMDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4dC1pbnB1dC5odG1s
ICovOyB9OwpAQCAtMTE3MCw2ICsxMTcyLDcgQEAKIAkJCQk1NzFGN0ZEMDFGMjk2MUZCMDA5NDY2
NDggLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0
ZTMtd2FsIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NTk5RTJBMUYwNzFBQTAwMEEzRkI4
QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc1OTlFMkIxRjA3MUFBMDAwQTNGQjhDIC8q
IEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJOTNBRUFDNzYyMjY4RjQ1MDAwMDIxQkFCIC8qIElu
ZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
Q0E1Qjk0RDIyMTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0xLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDMyMTkwQzBGNDAwNTlGRTM4IC8qIElu
ZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0E5
N0IzOTUyMTkzNjY3QTAwNDVERjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKQEAgLTE4OTIsNiArMTg5NSw4IEBACiAJCTkzQTQyN0FEMTgwREE2MEYw
MENEMjRENyAvKiBSZWZMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmTG9nZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQTcyMEU1MThGMUEwRTgwMEE4NDhFMSAvKiBDYWxj
dWxhdGlvblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
bGN1bGF0aW9uVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0FCQTgw
ODE2RERBQjkxMDAyREIyRkEgLyogU3RyaW5nSGFzaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0hhc2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzQUVBQzczMjI2OEU0NzAwMDAyMUJBQiAvKiBJbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
M0FFQUM3NDIyNjhFNzMzMDAwMjFCQUIgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUY0RUNBMTUwNkYwMzUwMDdG
RDU3RSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9ySW1hZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBRjRF
Q0QxNTA2RjA2NDAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvcklt
YWdlc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQUY0RUNGMTUwNkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9m
LWltYWdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtaW1hZ2Vz
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU4MCw2ICsyNTg1LDcgQEAK
IAkJCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1t
ICovLAogCQkJCTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5j
ZS5tbSAqLywKIAkJCQk1NzU5OUUyMDFGMDcxOTE3MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0
dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tICovLAorCQkJCTkzQUVBQzczMjI2OEU0
NzAwMDAyMUJBQiAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSAqLywKIAkJCQlDQTVC
OTRENjIxOTEwMDVCMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tICovLAogCQkJ
CUNBOTdCMzkyMjE5MzY2M0IwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tICovLAog
CQkJCTBFNDA0QThBMjE2NkRERjgwMDgyNzFCQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJ
c1NlbGVjdEVsZW1lbnQubW0gKi8sCkBAIC0yOTc3LDYgKzI5ODMsNyBAQAogCQkJCTU3MUY3RkNG
MUYyOTYxRTEwMDk0NjY0OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHkuc3FsaXRlMy13YWwgKi8sCiAJCQkJNTc1OTlFMjUxRjA3MTkyQzAwQTNGQjhDIC8q
IEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbCAq
LywKIAkJCQk1NzU5OUUyMzFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENs
b25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRtbCAqLywKKwkJCQk5M0FFQUM3NDIyNjhF
NzMzMDAwMjFCQUIgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLywKIAkJCQlD
QTVCOTREMDIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAq
LywKIAkJCQlDQTVCOTREMTIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXpl
LTIuaHRtbCAqLywKIAkJCQlDQTk3QjM5MzIxOTM2NjQ3MDA0NURGNkYgLyogSW5kZXhlZERCVXNl
ckRlbGV0ZS5odG1sICovLApAQCAtNDE1NSw2ICs0MTYyLDcgQEAKIAkJCQk3QzgzRTBCRTFEMEE2
NTEzMDBGRUJDRjMgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0UwQkYxRDBBNjUyMjAwRkVCQ0YzIC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTc1OTlFMjExRjA3MTkxOTAwQTNGQjhDIC8qIEluZGV4ZWREQlN0
cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTkzQUVBQzc1MjI2OEY0MkEwMDAyMUJBQiAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNBNUI5NEQ3MjE5MTAwNUIwMDU5RkUzOCAvKiBJbmRleGVk
REJUZW1wRmlsZVNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDQTk3QjM5NDIxOTM2NjYwMDA0
NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBOTVC
REUxMUU5QkVDNUYwMDg2NTQ5OCAvKiBJbmplY3RlZEJ1bmRsZUFwcGxlRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367954</attachid>
            <date>2019-04-22 11:10:32 -0700</date>
            <delta_ts>2019-04-22 18:06:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190422111032.patch</filename>
            <type>text/plain</type>
            <size>72773</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjUzZjRiY2IxMWRkZjIxOGNkMjA1ZGI2YWNjZTEyYmU1NTY4Nzlj
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBoYW5n
IHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMgaHVu
Zy4gCisKKyAgICAgICAgKiB3dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHA6CisgICAgICAg
IChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnRhc2tSdW5Mb29wKToKKyAgICAgICAgKFdU
Rjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6d2FpdEZvclN0b3ApOgorICAgICAgICAoV1RGOjpD
cm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1bWUpOgorICAgICAgICAqIHd0Zi9Dcm9zc1RocmVh
ZFRhc2tIYW5kbGVyLmg6CisKIDIwMTktMDQtMjEgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtXVEZdIEdlbmVyaWMgbWVtb3J5Rm9vdHByaW50KCkgaW1w
bGVtZW50YXRpb24gc2hvdWxkIHVzZSBibWFsbG9jIG9uIExpbnV4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUy
ZGVlMGQwZTRkYTE0MWZiNjlhNmNkOWVlMDdhZTNjOGUwMTc4OS4uM2U0ODk4NGQ0MzgzZTMwODY4
MzE0YjYxYTFiNzI0ZDU2YjM5ODIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAx
OS0wNC0yMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9w
IElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmlsZXMgd2hlbiBu
ZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJbnRyb2R1Y2UgSURCQWN0aXZpdHlDb3VudGVyIHRvIHRyYWNrIFNRTGl0ZSBkYXRhYmFz
ZSBhY3Rpdml0aWVzIG9mIEluZGV4ZWREQiB0aGF0IG1heSBob2xkIGxvY2tlZCBkYXRhYmFzZSAK
KyAgICAgICAgZmlsZXMuIElmIElEQkFjdGl2aXR5Q291bnRlciBpcyBub3QgMCBhbmQgbmV0d29y
ayBwcm9jZXNzIGhhcyB0byBzdXNwZW5kLCBhY3RpdmUgSURCIHRyYW5zYWN0aW9ucyBtdXN0IGJl
IAorICAgICAgICBmaW5pc2hlZCBpbiBiYWNraW5nIHN0b3JlIHRvIHJlbGVhc2UgbG9ja2VkIGZp
bGVzLiAKKworICAgICAgICBBUEkgdGVzdDogSW5kZXhlZERCLkluZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlD
b3VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6
OnJlZ2lzdGVyT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVy
OjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0
aXZpdHlDb3VudGVyOjpkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjppZGJBY3Rpdml0eUNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6SURCQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXI6OklE
QkFjdGl2aXR5Q291bnRlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5
Q291bnRlcjo6SURCQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJJbmNyZW1lbnRlZFRv
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6SURCQWN0aXZpdHlDb3Vu
dGVyT2JzZXJ2ZXI6OmNvdW50ZXJEZWNyZW1lbnRlZFRvKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlDb3VudGVyLmg6IEFkZGVkLiBJREJBY3Rpdml0eUNv
dW50ZXIgcmVjb3JkcyB0aGUgbnVtYmVyIG9mIElEQiAKKyAgICAgICAgYWN0aXZpdGllcyB0aGF0
IG5lZWQgdG8gaG9sZCBsb2NrZWQgZGF0YWJhc2UgZmlsZXMuIE5ldHdvcmsgcHJvY2VzcyB0cmFj
a3MgdGhlIHVwZGF0ZSBvZiB0aGlzIGNvdW50ZXIuIFdoZW4gdGhlIAorICAgICAgICBjb3VudGVy
IGlzIGluY3JlbWVudGVkIHRvIDEgb3IgZGVjcmVtZW50ZWQgdG8gMCwgbmV0d29yayBwcm9jZXNz
IHNlbmRzIGEgbWVzc2FnZSB0byBVSSBwcm9jZXNzIGZvciB0YWtpbmcgb3IgCisgICAgICAgIHJl
bGVhc2UgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2
aXR5Q291bnRlcjo6SURCQWNpdGl2aXR5QXV0b0NvdW50ZXI6OklEQkFjaXRpdml0eUF1dG9Db3Vu
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6SURCQWNpdGl2aXR5
QXV0b0NvdW50ZXI6On5JREJBY2l0aXZpdHlBdXRvQ291bnRlcik6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6c3RvcCk6IEhhbmcgZGF0YWJhc2UgdGhyZWFkIGFuZCBjaGVjayB0
aGUgdmFsdWUgb2YgSURCQWN0aXZpdHlDb3VudGVyLiBJZiB0aGlzIAorICAgICAgICBpcyBub3Qg
YSBoYXJkIHN0b3AgYW5kIGNvdW50ZXIgaXMgbm90IDAsIHRoaXMgbWVhbnMgbmV0d29yayBwcm9j
ZXNzIHdpbGwgb3IgYWxyZWFkeSBzZW5kcyBvdXQgYSAidGFraW5nIAorICAgICAgICBhc3NlcnRp
b24iIG1lc2FnZSBhbmQgSURCU2VydmVyIHNob3VsZCBiZSByZXN1bWVkIHNvb24uIFRoZXJlZm9y
ZSwgd2UgY2FuIGNvbnRpbnVlIGRhdGFiYXNlIGFjdGl2aXRpZXMgYnkgCisgICAgICAgIHJlc3Vt
aW5nIGRhdGFiYXNlIHRocmVhZC4gSWYgdGhpcyBpcyBhIGhhcmQgc3RvcCwgSURCU2VydmVyIGhh
cyB0byBmaW5pc2ggb25nb2luZyB0cmFuc2FjdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6cmVzdW1lKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6Omhhc1RyYW5zYWN0aW9uKToKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOiBJbmNyZW1lbnQgb3Ig
ZGVjcmVtZW50IGNvdW50ZXIgYXQgcGxhY2VzIHRoYXQgdG91Y2hlcworICAgICAgICBkYXRhYmFz
ZSBmaWxlcy4gQWxzbyByZW1vdmUgc29tZSBlcnJvciBsb2dzIGFib3V0IGhhdmluZyBubyBvbmdv
aW5nIHRyYW5zYWN0aW9uLCBiZWNhdXNlIG5vdyB0cmFuc2FjdGlvbnMgbWF5IGJlIAorICAgICAg
ICBhYm9ydGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiBwcmVwYXJhdGlvbiBmb3IgbmV0d29yayBw
cm9jZXNzIHN1c3BlbnNpb24uCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUZpbGUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omdl
dE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphYm9ydFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjb21t
aXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6ZGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJl
Y29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1
cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpoYXNUcmFuc2FjdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDog
V2hlbiBVbmlxdWVJREJEYXRhYmFzZSBpcyBhc2tlZCB0byBmaW5pc2ggb25nb2luZyAKKyAgICAg
ICAgdHJhbnNhY3Rpb25zLCBpdCBhYm9ydHMgb3IgY29tbWl0cyB0aGVtIHRocm91Z2ggU1FMaXRl
SURCQmFja2luZ1N0b3JlIG9uIHRoZSBtYWluIHRocmVhZC4gVGhpcyBpcyBzYWZlIGJlY2F1c2Ug
CisgICAgICAgIGRhdGJhc2UgdGhyZWFkIHNob3VsZCBhbHJlYWR5IGJlIGh1bmcuIFVuaXF1ZUlE
QkRhdGFiYXNlIGFsc28gbWFya3MgdGhvc2UgdHJhbnNhY3Rpb25zIGFzIGNvbW1pdHRlZCBvciBh
Ym9ydGVkLAorICAgICAgICBzbyB3aGVuIGRhdGFiYXNlIHRocmVhZCBpcyByZXN1bWVkIGFuZCBz
dWJzZXF1ZW50IHJlcXVlc3RzIG9uIHRob3NlIHRyYW5zYWN0aW9ucyBhcmUgcHJvY2Vzc2VkLCBw
cm9wZXIgZXJyb3IgCisgICAgICAgIHdpbGwgYmUgcmV0dXJuZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21t
aXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0
aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2U6OmZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOiBJbnRyb2R1
Y2Ugc3RhdGUgb2YgdHJhbnNhY3Rpb24gdG8gaGVscCBkZWNpZGUgd2hldGhlcgorICAgICAgICBv
bmdvaW5nIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgYWJvcnRlZCBvciBjb21taXR0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OnNl
dFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbjo6c3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uOjpzZXRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpyZXN1bHQpOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKwogMjAxOS0wNC0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI0NDQ5NS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
NjMyOGYxZTE4NDRiZmVlMTAyNDQ0MzI0YzZhNGEyZmU1NTg3NjY0ZS4uMzQzNmE1Yzg0MDE1OGFh
NWM5M2VkMTZhMTdhMjZlNWVlZWFmNTExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
OS0wNC0yMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9w
IElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmlsZXMgd2hlbiBu
ZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSW5k
ZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wNC0yMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGF5ZWQgV2ViUHJvY2Vzc0xhdW5j
aCBtYXkgYnJlYWsgdGhlIF9yZWxhdGVkV2ViVmlldyBTUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAKaW5kZXggYjI0ZGZjYzk0ODhmM2Y3YWEzNjZkZjA0MmI0Njdk
NDNkNmZlODFhOS4uNmViMzAyNTNjZmU1NGE5ZGM0ZjhkYTBmYzc5YmQ4MGVhNTYwYjM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAKQEAgLTY4LDggKzY4LDIw
IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6dGFza1J1bkxvb3AoKQogICAgICAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFza1RocmVhZENyZWF0aW9uTG9jayk7CiAgICAgfQogCi0g
ICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKQorICAgIHdoaWxlICghbV90YXNrUXVl
dWUuaXNLaWxsZWQoKSkgewogICAgICAgICBtX3Rhc2tRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpLnBl
cmZvcm1UYXNrKCk7CisKKyAgICAgICAgTG9ja2VyPExvY2s+IHNob3VsZFN0b3BMb2NrZXIobV9z
aG91bGRTdG9wTG9jayk7CisgICAgICAgIHdoaWxlIChtX3Nob3VsZFN0b3ApIHsKKyAgICAgICAg
ICAgIG1fc3RvcHBlZExvY2subG9jaygpOworICAgICAgICAgICAgaWYgKCFtX3N0b3BwZWQpIHsK
KyAgICAgICAgICAgICAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIG1fc3Rv
cHBlZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1f
c3RvcHBlZExvY2sudW5sb2NrKCk7CisgICAgICAgICAgICBtX3Nob3VsZFN0b3BDb25kaXRpb24u
d2FpdChtX3Nob3VsZFN0b3BMb2NrKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBDcm9z
c1RocmVhZFRhc2tIYW5kbGVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBAIC04
Myw1ICs5NSwzNSBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OmhhbmRsZVRhc2tSZXBs
aWVzT25NYWluVGhyZWFkKCkKICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKIH0KIAordm9p
ZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp3YWl0Rm9yU3RvcCgpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zaG91
bGRTdG9wTG9jayk7CisgICAgICAgIG1fc2hvdWxkU3RvcCA9IHRydWU7CisgICAgfQorCisgICAg
Ly8gUG9zdCBhbiBlbXB0eSB0YXNrIHRvIGVuc3VyZSBkYXRhYmFzZSB0aHJlYWQga25vd3MgbV9z
aG91bGRTdG9wIGFuZCBzZXRzIG1fc3RvcHBlZC4KKyAgICBwb3N0VGFzayhDcm9zc1RocmVhZFRh
c2soW10oKSB7IH0pKTsKKworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zdG9wcGVkTG9jayk7
CisgICAgd2hpbGUgKCFtX3N0b3BwZWQpCisgICAgICAgIG1fc3RvcHBlZENvbmRpdGlvbi53YWl0
KG1fc3RvcHBlZExvY2spOworfQorCit2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnJlc3Vt
ZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMb2NrZXI8TG9jaz4gbG9j
a2VyKG1fc2hvdWxkU3RvcExvY2spOworICAgIGlmIChtX3Nob3VsZFN0b3ApIHsKKyAgICAgICAg
bV9zdG9wcGVkTG9jay5sb2NrKCk7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zdG9w
cGVkTG9jayk7CisgICAgICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgICAgICBtX3N0b3BwZWQg
PSBmYWxzZTsKKyAgICAgICAgbV9zdG9wcGVkTG9jay51bmxvY2soKTsKKyAgICAgICAgbV9zaG91
bGRTdG9wID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkU3RvcENvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKKyAgICB9Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oCmluZGV4IDI2M2IzZDAzNWVjYmZjMmY4YjQxN2E5ZjAyMDA4MzMzNjZk
ZWQ2ODEuLmZmMGUxZDUzNzk5ZDUxMDI1NjBmYWM0MTU2OWFiZGE3ZjM4M2E2NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJvdGVj
dGVkOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRU
YXNrJiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NU
aHJlYWRUYXNrJiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdhaXRGb3JTdG9wKCk7
CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzdW1lKCk7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwpAQCAtNTMsNiArNTUsMTQgQEAg
cHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFp
blRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAorICAgIGJvb2wgbV9zaG91bGRTdG9w
IHsgZmFsc2UgfTsKKyAgICBDb25kaXRpb24gbV9zaG91bGRTdG9wQ29uZGl0aW9uOworICAgIExv
Y2sgbV9zaG91bGRTdG9wTG9jazsKKworICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKKyAg
ICBDb25kaXRpb24gbV9zdG9wcGVkQ29uZGl0aW9uOworICAgIExvY2sgbV9zdG9wcGVkTG9jazsK
KwogICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX3Rhc2tRdWV1ZTsKICAg
ICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUmVwbHlRdWV1ZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
QWN0aXZpdHlDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2NTNhYTdjMTE5YWJhNjAz
MjQyNzYyM2I5NWIxMmRjMzY5YmRjZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlDb3VudGVyLmNwcApAQCAtMCww
ICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
REJBY3Rpdml0eUNvdW50ZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
SURCQWN0aXZpdHlDb3VudGVyIHsKKworc3RhdGljIHVpbnQ2NF90IGNvdW50Oworc3RhdGljIExv
Y2sgY291bnRNdXRleDsKK3N0YXRpYyBJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlciogY291bnRP
YnNlcnZlciA9IG51bGxwdHI7CisKK3ZvaWQgcmVnaXN0ZXJPYnNlcnZlcihJREJBY3Rpdml0eUNv
dW50ZXJPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxv
Y2soY291bnRNdXRleCk7CisgICAgY291bnRPYnNlcnZlciA9IG9ic2VydmVyOworfQorCit2b2lk
IGluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2soY291bnRNdXRleCk7CisgICAgKytjb3VudDsKKworICAgIGlmICghY291bnRPYnNl
cnZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50T2JzZXJ2ZXItPmNvdW50ZXJJbmNyZW1l
bnRlZFRvKGNvdW50KTsKK30KKwordm9pZCBkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKQor
eworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGNvdW50TXV0ZXgpOworICAgIC0tY291
bnQ7CisKKyAgICBpZiAoIWNvdW50T2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBjb3Vu
dE9ic2VydmVyLT5jb3VudGVyRGVjcmVtZW50ZWRUbyhjb3VudCk7Cit9CisgICAgCit1aW50NjRf
dCBpZGJBY3Rpdml0eUNvdW50KCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhj
b3VudE11dGV4KTsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK0lEQkFjdGl2aXR5Q291bnRlck9i
c2VydmVyOjpJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoUEFM
OjpIeXN0ZXJlc2lzU3RhdGUpPiYmIGh5c3RlcmVzaXNVcGRhdGVGdW5jdGlvbikKKyAgICA6IG1f
aHlzdGVyZXNpcyhXVEZNb3ZlKGh5c3RlcmVzaXNVcGRhdGVGdW5jdGlvbikpCit7CisgICAgSURC
QWN0aXZpdHlDb3VudGVyOjpyZWdpc3Rlck9ic2VydmVyKHRoaXMpOworfQorCit2b2lkIElEQkFj
dGl2aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVySW5jcmVtZW50ZWRUbyh1aW50NjRfdCBjb3Vu
dCkKK3sKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOworICAgIH0pOwor
fQorCit2b2lkIElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVyRGVjcmVtZW50ZWRU
byh1aW50NjRfdCBjb3VudCkKK3sKKyAgICBpZiAoY291bnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgbV9oeXN0ZXJlc2lzLnN0b3Ao
KTsKKyAgICB9KTsKK30KKworfSAvLyBJREJBY3Rpdml0eUNvdW50ZXIKK30gLy8gV2ViQ29yZQor
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM2NjRkMTQ2ZWY2ZGU3NDQ3NTI1ZDI4ZDNlYjY2MjhmMjY2NWUxZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQWN0aXZpdHlDb3VudGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDxwYWwv
SHlzdGVyZXNpc0FjdGl2aXR5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IElEQkFjdGl2aXR5Q291bnRlciB7CisKK2NsYXNzIElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVy
IHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJBY3Rpdml0eUNvdW50
ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYmKTsK
KyAgICB2b2lkIGNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2NF90KTsKKyAgICB2b2lkIGNvdW50
ZXJEZWNyZW1lbnRlZFRvKHVpbnQ2NF90KTsKK3ByaXZhdGU6CisgICAgUEFMOjpIeXN0ZXJlc2lz
QWN0aXZpdHkgbV9oeXN0ZXJlc2lzOworfTsKKworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
ck9ic2VydmVyKElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyKik7CitXRUJDT1JFX0VYUE9SVCB2
b2lkIGluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBk
ZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKK1dFQkNPUkVfRVhQT1JUIHVpbnQ2NF90IGlk
YkFjdGl2aXR5Q291bnQoKTsKKworY2xhc3MgSURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgeworcHVi
bGljOgorICAgIElEQkFjaXRpdml0eUF1dG9Db3VudGVyKCkKKyAgICB7CisgICAgICAgIElEQkFj
dGl2aXR5Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CisgICAgfQorICAg
IH5JREJBY2l0aXZpdHlBdXRvQ291bnRlcigpCisgICAgeworICAgICAgICBJREJBY3Rpdml0eUNv
dW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIElEQkFjdGl2aXR5Q291bnRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAppbmRl
eCBjNmQ3ZDQzZjllYmFkZDI5MjQ4MGNmNGVhYzQwNzg3NTEwMDlhNDAxLi5mOWU0NmI4OTI1ZTQ1
N2I5MDE5ZTk3NDlhYTIxNTA0MDE0NDI3YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMDEs
NiArMTAxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1aW50NjRfdCBkYXRhYmFzZXNTaXpl
Rm9yT3JpZ2luKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRRdW90YSh1aW50NjRf
dCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImKSA9IDA7CiBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2luZ1N0b3JlKCkgeyBS
RUxFQVNFX0FTU0VSVCghaXNNYWluVGhyZWFkKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA1YmY0
N2YyMTkxYzQ4M2E3YWQ4MDdjOTYwMmViMTk2MGIwNTZiNWViLi40ZTViZDRhY2Y4MTMyZGQ1ZTA1
ZmVkMjMyZjZlZWQ0NmRjYzg4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtODI4LDYgKzgyOCwzNiBAQCB2
b2lkIElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQg
SURCU2VydmVyOjpzdG9wKFNob3VsZEZvcmNlU3RvcCBzaG91bGRGb3JjZVN0b3ApCit7CisgICAg
Ly8gT25seSBzdG9wIG5vbi1lcGhlbWVyYWwgSURCU2VydmVycyB0aGF0IGNhbiBob2xkIGxvY2tl
ZCBkYXRhYmFzZSBmaWxlcy4KKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgd2FpdEZvclN0b3AoKTsKKyAgICBhdXRvIHNxbGl0ZUlEQkFj
dGl2aXR5Q291bnQgPSBJREJBY3Rpdml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQoKTsKKyAg
ICBpZiAoc2hvdWxkRm9yY2VTdG9wID09IFNob3VsZEZvcmNlU3RvcDo6Tm8pIHsKKyAgICAgICAg
aWYgKHNxbGl0ZUlEQkFjdGl2aXR5Q291bnQpCisgICAgICAgICAgICBDcm9zc1RocmVhZFRhc2tI
YW5kbGVyOjpyZXN1bWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcWxp
dGVJREJBY3Rpdml0eUNvdW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3Vu
aXF1ZUlEQkRhdGFiYXNlTWFwLnZhbHVlcygpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmZpbmlz
aEFjdGl2ZVRyYW5zYWN0aW9ucygpOworICAgIH0KKworICAgIEFTU0VSVCghSURCQWN0aXZpdHlD
b3VudGVyOjppZGJBY3Rpdml0eUNvdW50KCkpOworfQorCit2b2lkIElEQlNlcnZlcjo6cmVzdW1l
KCkKK3sKKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMGI4
NDY4N2YyN2NiMzU4N2Q5ZGMzYTdmMjM2OTNhNjBmMjljNWRiYS4uYTg2NzUzM2Y0MTE3MWJmMmNh
ZWE2Yjk2YjJjYjE1ZDg3MjhiMGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTgsNiArNTgsOCBAQCBjb25zdCB1
aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgPSA1MDAgKiBNQjsKIAogY2xhc3MgSURCQmFj
a2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXI7CiAKK2VudW0gY2xhc3MgU2hvdWxkRm9yY2VT
dG9wIHsgTm8sIFllcyB9OworCiBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxJ
REJTZXJ2ZXI+LCBwdWJsaWMgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPElEQlNlcnZlcj4gewogcHVibGljOgogICAgIHVzaW5nIFF1b3RhTWFuYWdlckdldHRl
ciA9IFdURjo6RnVuY3Rpb248U3RvcmFnZVF1b3RhTWFuYWdlciooUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IENsaWVudE9yaWdpbiYpPjsKQEAgLTEyNCw2ICsxMjYsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGluaXRpYWxpemVRdW90YVVzZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pIHsgZW5z
dXJlUXVvdGFVc2VyKG9yaWdpbik7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcChT
aG91bGRGb3JjZVN0b3ApOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lKCk7CisKIHBy
aXZhdGU6CiAgICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBJREJCYWNraW5nU3RvcmVUZW1w
b3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYmKTsKICAgICBJREJTZXJ2ZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBJREJC
YWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYsIFF1b3RhTWFuYWdlckdldHRlciYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCA2NGU2Y2M3ZGUwY2E2NzY3ZWMxOGQ1
MTRiY2FhZjRiZDhhNTYyYzdmLi4zZTA1MTc0ZTllYTFmOGU0ZWMxZjUwYzM3OGZiNWQ5OTlhMjhk
YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC04NSw2ICs4NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1l
bW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCByZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9u
Q2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsKIAorICAgIGJvb2wgaGFzVHJh
bnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVy
biBtX3RyYW5zYWN0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKTsgfQogcHJpdmF0ZToKICAgICBS
ZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHRha2VPYmplY3RTdG9yZUJ5SWRlbnRpZmllcih1aW50
NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRl
eCA0ODlkZWQ0ZTNiZDcwNjFkYjgyMWNkNjlmYjQwMWM4NzEzNGRhYWE0Li5jMjRlNDM3YWMyMzZk
MjliNTEyMWM4MGFhMWM4NmYwNDRkMDJiMGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKKyNpbmNsdWRlICJJREJBY3Rpdml0eUNvdW50ZXIuaCIKICNpbmNsdWRlICJJREJCaW5kaW5n
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIklEQkdl
dEFsbFJlY29yZHNEYXRhLmgiCkBAIC0yNDIsOCArMjQzLDEwIEBAIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpCiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgp
CiB7Ci0gICAgaWYgKG1fc3FsaXRlREIpCisgICAgaWYgKG1fc3FsaXRlREIpIHsKKyAgICAgICAg
SURCQWN0aXZpdHlDb3VudGVyOjpJREJBY2l0aXZpdHlBdXRvQ291bnRlciBhdXRvQ291bnRlcjsK
ICAgICAgICAgY2xvc2VTUUxpdGVEQigpOworICAgIH0KIAogICAgIGlmIChtX3ZtKSB7CiAgICAg
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CkBAIC03NzgsNiArNzgxLDggQEAg
U3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiAK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZyb21GaWxlKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogeworICAgIElEQkFjdGl2aXR5Q291bnRlcjo6SURCQWNp
dGl2aXR5QXV0b0NvdW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBTUUxpdGVEYXRhYmFzZSBkYXRh
YmFzZTsKICAgICBpZiAoIWRhdGFiYXNlLm9wZW4oZGF0YWJhc2VQYXRoKSkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcycgd2hl
biBnZXR0aW5nIGRhdGFiYXNlIG5hbWUiLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CkBA
IC04MjMsNiArODI4LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVz
dGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBk
YkZpbGVuYW1lID0gZnVsbERhdGFiYXNlUGF0aCgpOwogCisgICAgSURCQWN0aXZpdHlDb3VudGVy
OjpJREJBY2l0aXZpdHlBdXRvQ291bnRlciBhdXRvQ291bnRlcjsKKwogICAgIG1fc3FsaXRlREIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9zcWxpdGVE
Qi0+b3BlbihkYkZpbGVuYW1lKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVu
IFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtOTI2LDYgKzkzMyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVn
aW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgQVNTRVJU
KG1fc3FsaXRlREItPmlzT3BlbigpKTsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCisg
ICAgSURCQWN0aXZpdHlDb3VudGVyOjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKwog
ICAgIG1fc3FsaXRlREItPnNldE1heGltdW1TaXplKG1heGltdW1TaXplKCkpOwogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV90cmFuc2FjdGlvbnMuYWRkKGluZm8uaWRlbnRpZmllcigpLCBudWxscHRy
KTsKICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CkBAIC05NjksNyArOTc4LDExIEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWJvcnRUcmFuc2FjdGlvbihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIGlkCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlICYmIG1fb3JpZ2luYWxEYXRhYmFzZUlu
Zm9CZWZvcmVWZXJzaW9uQ2hhbmdlKQogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IFdURk1vdmUo
bV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UpOwogCi0gICAgcmV0dXJu
IHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgIGF1dG8gcmVzdWx0ID0gdHJhbnNhY3Rpb24tPmFi
b3J0KCk7CisKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291
bnRlcigpOworCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogSURCRXJyb3IgU1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IGlkZW50aWZpZXIpCkBAIC05OTQsNiArMTAwNyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBp
CiAgICAgfSBlbHNlCiAgICAgICAgIG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9u
Q2hhbmdlID0gbnVsbHB0cjsKIAorICAgIElEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURC
QWN0aXZpdHlDb3VudGVyKCk7CisKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKQEAgLTEwMDUsMTAg
KzEwMjAsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURC
LT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIp
OworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRl
IGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25N
b2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVh
dGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJf
cyB9OwpAQCAtMTA2MSwxMCArMTA3NSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAh
PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFu
Z2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hh
bmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMTUzLDEwICsxMTY2LDkgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0
byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0IHN0b3JlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewog
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9yZSBpbiBh
IG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgaW4g
YSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTExODgsMTAgKzEyMDAs
OSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cgogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09w
ZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNsZWFyIGFu
IG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjbGVhciBhbiBvYmpl
Y3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0K
KwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVh
ZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBzdG9yZSBpbiBh
IHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTIyOSwxMCArMTI0MCw5IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAog
ICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9u
LT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAg
IExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iX3MgfTsKQEAgLTE0MjIsMTAgKzE0MzIsOCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhYwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwot
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBkZWxldGUgaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KIAogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVt
cHQgdG8gZGVsZXRlIGluZGV4IGR1cmluZyBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biIpOwpAQCAtMTQ3NywxMCArMTQ4NSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkNvdWxkIG5vdCByZW5hbWUgaW5k
ZXgiX3MgfTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1l
IGFuIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBpbmRleCB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdl
KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gaW5kZXggaW4gYSBu
b24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKQEAgLTE1MTYsMTAgKzE1MjIsOCBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGtleUV4aXN0cyA9IGZhbHNlOwogCiAgICAgYXV0
byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBp
biBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0g
ICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewpAQCAtMTY5MSwxMCArMTY5
NSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmFuZ2UoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlz
T3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRl
IHJhbmdlIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIp
OworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRl
IHJhbmdlIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJf
cyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0
ZSByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9u
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
ZGVsZXRlIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24iX3MgfTsKQEAgLTE4MTQsMTAgKzE4MTcsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIEFTU0VSVCh2YWx1ZS5ibG9iVVJMcygpLnNpemUoKSA9PSB2YWx1ZS5ibG9iRmlsZVBh
dGhzKCkuc2l6ZSgpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJh
bnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
c3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEg
cmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xOTgzLDEwICsxOTg1LDggQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgYSByZWNvcmQgZnJvbSBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZXQgYSByZWNvcmQgZnJvbSBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQog
CiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgp
KQpAQCAtMjE2MCwxMCArMjE2MCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAgQVNT
RVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gZ2V0IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBnZXQgcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGtleSA9IGdldEFsbFJlY29y
ZHNEYXRhLmtleVJhbmdlRGF0YS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQpAQCAt
MjI1NiwxMCArMjI1NCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxs
SW5kZXhSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBnZXQgYWxsIGluZGV4IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBnZXQgYWxsIGluZGV4IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0
IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBjdXJz
b3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQmFja2luZ1N0b3JlQ3Vyc29yKGdldEFsbFJlY29y
ZHNEYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0RhdGEuaW5kZXhJZGVu
dGlmaWVyLCBnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEpOwogICAgIGlmICghY3Vyc29y
KSB7CkBAIC0yMzA2LDEwICsyMzAyLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAgICBB
U1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5z
YWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBnZXQgYW4gaW5kZXggcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IGFuIGluZGV4IHJlY29yZCBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAo
cmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkpCiAgICAgICAgIHJldHVybiB1bmNoZWNrZWRHZXRJbmRl
eFJlY29yZEZvck9uZUtleShpbmRleElELCBvYmplY3RTdG9yZUlELCB0eXBlLCByYW5nZS5sb3dl
cktleSwgZ2V0UmVzdWx0KTsKQEAgLTI0MTIsMTAgKzI0MDYsOCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8gY3Vyc29yID0gdHJhbnNhY3Rpb24t
Pm1heWJlT3BlbkJhY2tpbmdTdG9yZUN1cnNvcihvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgcmFuZ2UpOwogICAgIGlmICghY3Vyc29yKSB7CkBAIC0yNDc1LDEwICsyNDY3
LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNP
cGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZW5lcmF0
ZSBrZXkgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwor
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2VuZXJhdGUg
a2V5IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsK
LSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZW5lcmF0ZSBr
ZXkgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZW5lcmF0ZSBrZXkgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1MDQsMTAgKzI0OTUsOSBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJlcihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwot
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2VuZXJhdG9yIHZhbHVlIGlu
IGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2VuZXJh
dG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24i
X3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZXZl
cnQga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJldmVydCBr
ZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0y
NTI1LDEwICsyNTE1LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjptYXliZVVw
ZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUkKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewog
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3IgdmFsdWUg
aW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBh
IHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMjU1MSwxMCArMjU0MCw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAog
ICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gb3BlbiBhIGN1cnNvciBpbiBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBvcGVuIGEgY3Vyc29yIGluIGRh
dGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAK
ICAgICBhdXRvKiBjdXJzb3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQ3Vyc29yKGluZm8pOwog
ICAgIGlmICghY3Vyc29yKSB7CkBAIC0yNTg1LDEwICsyNTcyLDggQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnMKIAogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJz
b3ItPnRyYW5zYWN0aW9uKCktPnRyYW5zYWN0aW9uSWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CiAKLSAgICBpZiAoIWN1cnNvci0+dHJhbnNhY3Rpb24oKSB8fCAhY3Vyc29y
LT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRl
bXB0IHRvIGl0ZXJhdGUgYSBjdXJzb3Igd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0
aW9uKCktPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBpdGVyYXRlIGEgY3Vyc29yIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGtleSA9IGRhdGEua2V5RGF0YTsK
ICAgICBhdXRvIHByaW1hcnlLZXkgPSBkYXRhLnByaW1hcnlLZXlEYXRhOwpAQCAtMjY0MSw2ICsy
NjI2LDggQEAgdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgp
CiB7CiAgICAgU3RyaW5nIGRiRmlsZW5hbWUgPSBmdWxsRGF0YWJhc2VQYXRoKCk7CiAKKyAgICBJ
REJBY3Rpdml0eUNvdW50ZXI6OklEQkFjaXRpdml0eUF1dG9Db3VudGVyIGF1dG9Db3VudGVyOwor
CiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2lu
Z1N0b3JlIGRlbGV0aW5nIGZpbGUgJyVzJyBvbiBkaXNrIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGJsb2JGaWxlczsKQEAgLTI3MTgsNiArMjcwNSwx
MiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2xvc2VTUUxpdGVEQigpCiAgICAgbV9z
cWxpdGVEQiA9IG51bGxwdHI7CiB9CiAKK2Jvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpoYXNU
cmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBtX3RyYW5z
YWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDU2YjUxN2MyYTYxMDc0NGJkZWYyMGUxODg5YzA2MzFjMzBhYWZi
NTguLjdmNGE2MzNhM2NjZjMyNzBmNDBkOTkxMzZiOGViYjE4YWE4YTc2N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwog
ICAgIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3RyaW5nJik7CiAK
KyAgICBib29sIGhhc1RyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpOwog
cHJpdmF0ZToKICAgICBTdHJpbmcgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdDsKICAg
ICBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKaW5kZXggODhhYzJkOWQ5ZjYzMDU5OGRiZDU3MTk1ZjQ1OWI0NGNlNDc1OWQ5OC4uYjNlYTdj
NGFhNWY2MWNiOWFhZDYwNzZhY2E1NTE0YjBlZWE4NzUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC0xNTY3LDEzICsxNTY3LDE0IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZFBlcmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uCiAg
ICAgcGVyZm9ybUdldFJlc3VsdENhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IsIHJl
c3VsdCk7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQorYm9vbCBV
bmlxdWVJREJEYXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OlN0YXRlIHN0YXRlKQogewogICAgIGF1dG8gdGFrZW5UcmFuc2FjdGlvbiA9IG1faW5Qcm9n
cmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwog
ICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
QVNTRVJUKCFtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpKSk7CisgICAgdGFrZW5UcmFuc2FjdGlvbi0+c2V0U3RhdGUoc3RhdGUp
OwogICAgIG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBXVEZNb3ZlKHRha2VuVHJhbnNhY3Rpb24pKTsKIAogICAgIHJldHVybiB0cnVl
OwpAQCAtMTYwMSw3ICsxNjAyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJh
bnNhY3Rpb25BZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0YWJhc2VUcmFuc2EKICAgICBpZiAo
IWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcHJlcGFyZVRvRmluaXNo
VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbiwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6
OkNvbW1pdHRpbmcpKSB7CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5j
b250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKSB7CiAgICAgICAgICAg
ICAvLyBUaGlzIGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgY2xvc2luZyBvciBoYXMgYWxyZWFkeSBj
bG9zZWQsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG1lc3NhZ2luZyBiYWNrIHRvIGl0IGFib3V0
IHRoZSBjb21taXQgZmFpbGluZy4KICAgICAgICAgICAgIGZvcmdldEVycm9yQ2FsbGJhY2soY2Fs
bGJhY2tJRCk7CkBAIC0xNjI5LDcgKzE2MzAsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRUcmFuc2FjdGlvbiAtICVzIiwgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworICAgIElE
QkVycm9yIHJlc3VsdCA9IGVycm9yOworICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX2ZpbmlzaGlu
Z1RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKKyAgICBpZiAodHJhbnNh
Y3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFi
b3J0ZWQpCisgICAgICAgIHJlc3VsdCA9IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVHJhbnNh
Y3Rpb24gaXMgYWxyZWFkeSBhYm9ydGVkIl9zIH07CisgICAgZWxzZSBpZiAodHJhbnNhY3Rpb24t
PnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRl
ZCkKKyAgICAgICAgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnJlc3VsdCgpOworCisgICAgcGVyZm9y
bUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQpOwogCiAgICAgdHJhbnNh
Y3Rpb25Db21wbGV0ZWQobV9maW5pc2hpbmdUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklk
ZW50aWZpZXIpKTsKIH0KQEAgLTE2NTYsNyArMTY2NCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3RpCiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBy
ZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgIGlmICghcHJlcGFy
ZVRvRmluaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OlN0YXRlOjpBYm9ydGluZykpIHsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZUNv
bm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkpIHsK
ICAgICAgICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nIG9yIGhh
cyBhbHJlYWR5IGNsb3NlZCwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gbWVzc2FnaW5nIGJhY2sg
dG8gaXQgYWJvdXQgdGhlIGFib3J0IGZhaWxpbmcuCiAgICAgICAgICAgICBmb3JnZXRFcnJvckNh
bGxiYWNrKGNhbGxiYWNrSUQpOwpAQCAtMTcxMiw4ICsxNzIwLDkgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLAogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdp
bmFsRGF0YWJhc2VJbmZvKCkpOwogICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdp
bmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KLQotICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNh
bGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworICAgIAorICAgIElEQkVycm9yIHJlc3VsdCA9IHRy
YW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRl
OjpBYm9ydGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDogZXJyb3I7CisgICAgcGVyZm9ybUVy
cm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQpOwogCiAgICAgdHJhbnNhY3Rp
b25Db21wbGV0ZWQoV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogfQpAQCAtMjI3Nyw2ICsyMjg2LDQx
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNldFF1b3RhKHVpbnQ2NF90IHF1b3RhKQogICAg
ICAgICBtX2JhY2tpbmdTdG9yZS0+c2V0UXVvdGEocXVvdGEpOwogfQogCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIHRyYW5zYWN0aW9uLnNldFJlc3VsdCht
X2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpKSk7CisgICAgdHJhbnNhY3Rpb24uc2V0U3RhdGUoVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
b21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbikKK3sKKyAgICB0cmFuc2FjdGlvbi5zZXRSZXN1bHQobV9iYWNraW5nU3Rv
cmUtPmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsK
KyAgICB0cmFuc2FjdGlvbi5zZXRTdGF0ZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpT
dGF0ZTo6Q29tbWl0dGVkKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZmluaXNoQWN0
aXZlVHJhbnNhY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
Zm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9ncmVzc1RyYW5zYWN0
aW9ucy5rZXlzKCkpKSB7CisgICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX2luUHJvZ3Jlc3NU
cmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBhYm9ydFRyYW5zYWN0aW9uT25N
YWluVGhyZWFkKCp0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgZm9yIChhdXRvJiBpZGVudGlm
aWVyIDogY29weVRvVmVjdG9yKG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmtleXMoKSkpIHsKKyAg
ICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+aGFzVHJhbnNhY3Rpb24oaWRlbnRpZmllcikpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9maW5p
c2hpbmdUcmFuc2FjdGlvbnMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHRyYW5zYWN0
aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9y
dGluZykKKyAgICAgICAgICAgIGFib3J0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0
aW9uKTsKKyAgICAgICAgZWxzZSBpZiAodHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRpbmcpCisgICAgICAgICAgICBjb21t
aXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rpb24pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCmluZGV4IGUzYTdiMWIxY2U1MjRjOTIyZTJlZDkwMjU0MTk3MDgzZTJjOWJkMjYuLmIzMDJm
MDNkODIxZGRkOWRjNDg5ZTRiZGE2YjVmOTVlZWY0Y2EzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oCkBAIC0xMjcsNiArMTI3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRRdW90YSh1aW50
NjRfdCk7CiAKKyAgICB2b2lkIGZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucygpOworCiBwcml2YXRl
OgogICAgIHZvaWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBoYW5kbGVD
dXJyZW50T3BlcmF0aW9uKCk7CkBAIC0yMzcsNyArMjM5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG9wZXJhdGlvbkFuZFRyYW5zYWN0aW9uVGltZXJGaXJlZCgpOwogICAgIFJlZlB0cjxVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uPiB0YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rpb24oYm9vbCYg
aGFkRGVmZXJyZWRUcmFuc2FjdGlvbnMpOwogCi0gICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgYm9vbCBwcmVwYXJl
VG9GaW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGUpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlv
bk9uTWFpblRocmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgdm9pZCBj
b21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
Jik7CiAgICAgCiAgICAgdm9pZCBjbGVhclN0YWxlUGVuZGluZ09wZW5EQlJlcXVlc3RzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDRmM2MyMDE1
Mjg2ZjIyMTg3M2JjZjIyM2VjNDE0YWUzNDAxMTM4ODguLjEzOTIyMmYyZWI2Y2M2YWQzODBhYzZj
ZmIxOGQ0NzFhM2E4M2Q4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaApAQCAtNTYsNiArNTYsOCBAQCBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b247CiAKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291
bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBj
bGFzcyBTdGF0ZSB7IFJ1bm5pbmcsIEFib3J0aW5nLCBDb21taXR0aW5nLCBBYm9ydGVkLCBDb21t
aXR0ZWQgfTsKKwogICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4g
Y3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9u
SW5mbyYpOwogCiAgICAgflVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKTsKQEAgLTkwLDYg
KzkyLDExIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9iamVjdFN0
b3JlSWRlbnRpZmllcnMoKTsKIAorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9z
dGF0ZSA9IHN0YXRlOyB9CisgICAgU3RhdGUgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9Cisg
ICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgSURCRXJyb3ImIGVycm9yKSB7IG1fcmVzdWx0ID0gZXJy
b3I7IH0KKyAgICBJREJFcnJvciByZXN1bHQoKSB7IHJldHVybiBtX3Jlc3VsdDsgfQorCiBwcml2
YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKQEAgLTEwMCw2ICsxMDcs
OSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3Jp
Z2luYWxEYXRhYmFzZUluZm87CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyczsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OworICAg
IElEQkVycm9yIG1fcmVzdWx0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDJkYTVjZWZkNDFkMDY3M2IwZjBhYzNhMDI5NjU1ZDMxZWM5YjkxN2UuLmQ1
YjZhNTA2ODEzZDg3MzEyZmQ3NmRjMDVhZTI4Y2ZjOTAxM2RhODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDAsNiArMTAwLDcgQEAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCiAK
K01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwCiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGI2ZjA1MjMyZDhkZjQ1ODUxMzFiMGQ0OTUzYjIzYTQ2Zjlj
MTVkMjMuLmMxNzdlMzMwMTMwNGMzNmY1M2UyZjRlYjA0MGU0YTViOWQyY2NjNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2
NDYsNiArMjY0Niw3IEBACiAJCTkzQjcwRDZBMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0I3MEQ2QzA5RUIwQzdDMDA5
RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3MEQ1MDA5RUIwQzdDMDA5RDg0NjggLyogSlNQ
bHVnaW5FbGVtZW50RnVuY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNCNzBENzAwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
QjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRDb250cm9sbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTNCNzM2QzUyMjY2MzY3QzAw
RjFBMDk2IC8qIElEQkFjdGl2aXR5Q291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTNCNzM2QzMyMjY2MzU5RjAwRjFBMDk2IC8qIElEQkFjdGl2
aXR5Q291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkzQjc3QTM4MEFERDc5MjUwMEVBNEI4MSAvKiBGcmFtZUxvYWRlclR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0I3N0EzNzBBREQ3
OTI1MDBFQTRCODEgLyogRnJhbWVMb2FkZXJUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzQzA5QTUzMEIwNjREQjMwMDVBQkQ0RCAvKiBF
dmVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzQzA5QTUyMEIwNjREQjMwMDVBQkQ0RCAvKiBFdmVudEhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0MwOUM4NjBCMDY1N0FB
MDA1QUJENEQgLyogU2Nyb2xsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzQzA5Qzg1MEIwNjU3QUEwMDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDUx
Niw2ICsxMDUxNyw4IEBACiAJCTkzQjcwRDUwMDlFQjBDN0MwMDlEODQ2OCAvKiBKU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUGx1
Z2luRWxlbWVudEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0I3
MEQ1MzA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQjcwRDU0MDlFQjBDN0MwMDlEODQ2OCAvKiBTY3JpcHRD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzQjczNkMzMjI2NjM1OUYw
MEYxQTA5NiAvKiBJREJBY3Rpdml0eUNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSURCQWN0aXZpdHlDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkzQjczNkM2MjI2NjNGQjUwMEYxQTA5NiAvKiBJREJBY3Rpdml0eUNvdW50ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQWN0aXZpdHlDb3VudGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNCNzdBMzcwQURENzkyNTAwRUE0Qjgx
IC8qIEZyYW1lTG9hZGVyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RnJhbWVMb2FkZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0MwOUE1
MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV2ZW50SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRXZlbnRIYW5kbGVyTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg0NjMsNiArMTg0NjYsOCBAQAogCQk1MTBBNThF
RTFCQUI3MUUwMDBDMTkyODIgLyogc2VydmVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk5M0I3MzZDNjIyNjYzRkI1MDBGMUEwOTYgLyogSURCQWN0aXZp
dHlDb3VudGVyLmNwcCAqLywKKwkJCQk5M0I3MzZDMzIyNjYzNTlGMDBGMUEwOTYgLyogSURCQWN0
aXZpdHlDb3VudGVyLmggKi8sCiAJCQkJNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJh
Y2tpbmdTdG9yZS5oICovLAogCQkJCTUxNkQ3RDZEMUJCNUYwNjUwMEFGN0M3NyAvKiBJREJDb25u
ZWN0aW9uVG9DbGllbnQuY3BwICovLAogCQkJCTUxMEE1OEZFMUJCMDdBQTUwMEMxOTI4MiAvKiBJ
REJDb25uZWN0aW9uVG9DbGllbnQuaCAqLywKQEAgLTI5MjkzLDYgKzI5Mjk4LDcgQEAKIAkJCQlC
Mjc1MzU2RTBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEz
RjE0NTQwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNzE0RUE4MUNGNEU0QjEwMDQ3MjNDNCAvKiBJREJBY3RpdmVET01PYmplY3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTkzQjczNkM1MjI2NjM2N0MwMEYxQTA5NiAvKiBJREJBY3Rpdml0eUNvdW50
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1ODVBNjYzMTFENEZBQzUwMDRDM0U0
QiAvKiBJREJCaW5kaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCMjVBQTFD
QzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
M2Q3NTJjNjE2NzkyMzc5Y2EyYjkwM2I1ZThlZDE3YzRiYTBmMmVmNC4uZTljM2MzY2RkNTZlOGRj
Y2Q0ZjE2ZmE3OTViNDI1OWQ3ODJlOTk3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzNSw2ICsxMzUsMTEgQEAgTmV0d29ya1By
b2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWUKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIoKnRoaXMpCiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICAsIG1faWRiQWN0aXZpdHlDb3VudGVy
T2JzZXJ2ZXIoW3RoaXNdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7CisgICAgICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlNldElzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKHN0YXRlID09IFBBTDo6
SHlzdGVyZXNpc1N0YXRlOjpTdGFydGVkKSwgMCk7CisgICAgfSkKKyNlbmRpZgogewogICAgIE5l
dHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CiAKQEAgLTE5OTUs
NiArMjAwMCwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5k
KFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAm
JiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRi
U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT5zdG9wKElEQlNlcnZlcjo6U2hvdWxk
Rm9yY2VTdG9wOjpZZXMpOworI2VuZGlmCiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOwogfQpAQCAtMjAwMiw2ICsyMDExLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSIsIHRoaXMpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZh
bHVlcygpKQorICAgICAgICBzZXJ2ZXItPnN0b3AoSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6
Ok5vKTsKKyNlbmRpZgogICAgIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVk
Z2VXaGVuUmVhZHlUb1N1c3BlbmQ6Olllcyk7CiB9CiAKQEAgLTIwNDEsNiArMjA1NCwxMCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9z
d1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwogI2Vu
ZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVzKCkpCisgICAgICAg
IHNlcnZlci0+cmVzdW1lKCk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
ZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA4OWMyOTg1ZDBlMjJlY2FhNmQwYzMxNjU3
Yzc0NjliNzVjN2M0MWZjLi4yMGVhMzc4MGI2NDZmNzhkZTQzNTMwYTA0MTlmNDUyOTQ2N2Q3MjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC01Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkFjdGl2aXR5Q291bnRlci5oPgorI2VuZGlmCisK
ICNpZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwogI2VuZGlmCkBAIC01MTEsNiArNTE1LDEw
IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0
YWJhc2VUcmFja2VyOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklE
QkFjdGl2aXR5Q291bnRlck9ic2VydmVyIG1faWRiQWN0aXZpdHlDb3VudGVyT2JzZXJ2ZXI7Cisj
ZW5kaWYKKwogICAgIFJlZjxXb3JrUXVldWU+IG1fc3RvcmFnZVRhc2tRdWV1ZSB7IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2VUYXNrIikgfTsKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzM0NGQxNjM4MjczNWIwYjY4
M2M2OTZmOWI2NjI2NzEwNzFkODQ2NC4uMDdjYTE2ZDhkYWE3NTMxMTlhNTg2Mjc2ODRhYWNiN2E2
YjU0YWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDYwLDYgKzEwNjAsMTkgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xv
Y2tlZEZpbGVzKQogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0lu
ZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSW5kZXhlZERhdGFiYXNlSG9s
ZGluZ0xvY2tlZEZpbGVzKQoreworICAgIGlmICghaXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9j
a2VkRmlsZXMpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVBy
b2Nlc3MgaXMgcmVsZWFzaW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBJbmRleGVk
RGF0YWJhc2VzIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIGhvbGRpbmcgbG9j
a2VkIGZpbGVzIik7CisgICAgICAgIG1fdG9rZW5Gb3JJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9j
a2VkRmlsZXMgPSBudWxscHRyOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghbV90
b2tlbkZvckluZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykgeworICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBpcyB0YWtpbmcgYSBiYWNrZ3Jv
dW5kIGFzc2VydGlvbiBiZWNhdXNlIEluZGV4ZWREYXRhYmFzZXMgaW4gdGhlIE5ldHdvcmsgcHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOworICAgICAgICBtX3Rva2VuRm9ySW5kZXhl
ZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3luY0Fs
bENvb2tpZXMoKQogewogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jQWxs
Q29va2llcygpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZmNiMmI3OGI0NWRjNTcyYzM3ODgzZThlNmE4
MGZiYmY4ZGIxYTZjMy4uODJhYjI4OTJhNmUzMWJkNDJmYWRiNjI0ZGZkOTljMTViMDk4ZTZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW50aGVz
aXplQXBwSXNCYWNrZ3JvdW5kKGJvb2wgYmFja2dyb3VuZCk7CiAKICAgICB2b2lkIHNldElzSG9s
ZGluZ0xvY2tlZEZpbGVzKGJvb2wpOworICAgIHZvaWQgc2V0SXNJbmRleGVkRGF0YWJhc2VIb2xk
aW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAKICAgICB2b2lkIHN5bmNBbGxDb29raWVzKCk7CiAgICAg
dm9pZCBkaWRTeW5jQWxsQ29va2llcygpOwpAQCAtMjU5LDYgKzI2MCw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICBQcm9jZXNzVGhyb3R0bGVyIG1fdGhyb3R0bGVyOwogICAgIFByb2Nlc3NUaHJv
dHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmls
ZXM7CisgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tl
bkZvckluZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlczsKICAgICBQcm9jZXNzVGhyb3R0
bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3N5bmNBbGxDb29raWVzVG9rZW47CiAgICAg
CiAgICAgdW5zaWduZWQgbV9zeW5jQWxsQ29va2llc0NvdW50ZXIgeyAwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGZhZDc5MDYxMDkyMGNlZjg1Mjc1ZGM5
N2FkMWYxZC4uMWM4NzMyOGIyMDFhZGM2ODgzYzAwNGY3ZDc4NWEyYjZjYjQxNDA3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMsNiArMzMsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpCiAgICAgU2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2Nr
ZWRGaWxlcykKKyAgICBTZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhib29s
IGlzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKQogCiAgICAgIyBEaWFnbm9zdGlj
IG1lc3NhZ2VzIGxvZ2dpbmcKICAgICBMb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdl
SUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRkM2Y3YTIwNGZmNDQ1ZTVmMjFlNDYwOTQ4NDk3ODll
ZTA1ZGU1OTMuLjMzM2Q0NTAwODJkNzk4Mzg2MDlmZmNmNTUwOWM2YmVhZWZiYjQyNWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOS0wNC0yMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmls
ZXMgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorCiAyMDE5LTA0LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgRGVsYXllZCBXZWJQcm9jZXNzTGF1bmNoIG1heSBicmVhayB0aGUgX3Jl
bGF0ZWRXZWJWaWV3IFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZGQ2NTFkN2QyNGY0
NzYzYmZiOTE3MTNiMzQxZDhkM2ExMTBlY2ZlLi5kZTJlMGU4NGU1ZDA0MDk0M2YwZjY1OGE3MWVj
MGZlNzdjNGI2NzFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ2LDYgKzY0Niw4IEBA
CiAJCTkzNjI1RDI3MUNEOTc0MUMwMDZEQzFGMSAvKiBsYXJnZS12aWRlby13aXRob3V0LWF1ZGlv
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM2MjVEMjYxQ0Q5NzNBRjAwNkRDMUYxIC8qIGxhcmdlLXZpZGVvLXdpdGhvdXQtYXVkaW8u
aHRtbCAqLzsgfTsKIAkJOTM2RjcyODAxQ0Q3RDlFQzAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MzZGNzI3RTFDRDdEOUQwMDA2OEEwRkIgLyogbGFyZ2UtdmlkZW8td2l0aC1h
dWRpby5odG1sICovOyB9OwogCQk5MzZGNzI4MTFDRDdEOUVDMDA2OEEwRkIgLyogbGFyZ2Utdmlk
ZW8td2l0aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM2RjcyN0YxQ0Q3RDlEMDAwNjhBMEZCIC8qIGxhcmdlLXZpZGVvLXdp
dGgtYXVkaW8ubXA0ICovOyB9OworCQk5M0FFQUM3NTIyNjhGNDJBMDAwMjFCQUIgLyogSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0FFQUM3MzIyNjhFNDcwMDAwMjFCQUIgLyogSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkubW0gKi87IH07CisJCTkzQUVBQzc2MjI2OEY0NTAwMDAyMUJBQiAvKiBJbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQUVBQzc0MjI2OEU3MzMwMDAyMUJBQiAvKiBJbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sICovOyB9OwogCQk5M0FGNEVDRTE1MDZGMDY0MDA3
RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0FGNEVD
RDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1h
Z2VzX0J1bmRsZS5jcHAgKi87IH07CiAJCTkzQUY0RUQxMTUwNkYxMzAwMDdGRDU3RSAvKiBsb3Rz
LW9mLWltYWdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzQUY0RUNGMTUwNkYxMjMwMDdGRDU3RSAvKiBsb3RzLW9mLWltYWdlcy5o
dG1sICovOyB9OwogCQk5M0NGQTg2NzFDRUI5RTM4MDAwNTY1QTggLyogYXV0b2ZvY3VzZWQtdGV4
dC1pbnB1dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzQ0ZBODY2MUNFQjlERTEwMDA1NjVBOCAvKiBhdXRvZm9jdXNlZC10ZXh0LWlu
cHV0Lmh0bWwgKi87IH07CkBAIC0xMTc0LDYgKzExNzYsNyBAQAogCQkJCTU3MUY3RkQwMUYyOTYx
RkIwMDk0NjY0OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxp
dHkuc3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc1OTlFMkExRjA3MUFB
MDAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0
eVJlYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzU5OUUyQjFGMDcxQUEwMDBB
M0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3Jp
dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk5M0FFQUM3NjIyNjhGNDUwMDAwMjFC
QUIgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlDQTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXpl
LTEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDQTVCOTREMzIxOTBDMEY0MDA1OUZF
MzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlDQTk3QjM5NTIxOTM2NjdBMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTkwMCw2ICsxOTAzLDggQEAKIAkJOTNBNDI3QUQx
ODBEQTYwRjAwQ0QyNEQ3IC8qIFJlZkxvZ2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZMb2dnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBNzIwRTUxOEYxQTBFODAwQTg0OEUx
IC8qIENhbGN1bGF0aW9uVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FsY3VsYXRpb25WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzQUJBODA4MTZEREFCOTEwMDJEQjJGQSAvKiBTdHJpbmdIYXNoZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nSGFzaGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTNBRUFDNzMyMjY4RTQ3MDAwMDIxQkFCIC8qIEluZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkzQUVBQzc0MjI2OEU3MzMwMDAyMUJBQiAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5l
bnRseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSW5kZXhlZERCU3VzcGVuZElt
bWluZW50bHkuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBRjRFQ0ExNTA2
RjAzNTAwN0ZENTdFIC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0FGNEVDRDE1MDZGMDY0MDA3RkQ1N0UgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9ySW1hZ2VzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNBRjRFQ0YxNTA2RjEyMzAwN0ZENTdFIC8q
IGxvdHMtb2YtaW1hZ2VzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG90cy1v
Zi1pbWFnZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTg5LDYgKzI1
OTQsNyBAQAogCQkJCTUxQkNFRTQ5MUM4NEY0QUYwMDQyQzgyRSAvKiBJbmRleGVkREJNdWx0aVBy
b2Nlc3MubW0gKi8sCiAJCQkJNTFCMUVFOEQxQzgwRjU4ODAwNjRGQjk4IC8qIEluZGV4ZWREQlBl
cnNpc3RlbmNlLm1tICovLAogCQkJCTU3NTk5RTIwMUYwNzE5MTcwMEEzRkI4QyAvKiBJbmRleGVk
REJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gKi8sCisJCQkJOTNBRUFD
NzMyMjY4RTQ3MDAwMDIxQkFCIC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tICovLAog
CQkJCUNBNUI5NEQ2MjE5MTAwNUIwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUubW0g
Ki8sCiAJCQkJQ0E5N0IzOTIyMTkzNjYzQjAwNDVERjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUu
bW0gKi8sCiAJCQkJMEU0MDRBOEEyMTY2RERGODAwODI3MUJBIC8qIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSAqLywKQEAgLTI5ODksNiArMjk5NSw3IEBACiAJCQkJ
NTcxRjdGQ0YxRjI5NjFFMTAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3
YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCAqLywKIAkJCQk1NzU5OUUyNTFGMDcxOTJDMDBB
M0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVh
ZC5odG1sICovLAogCQkJCTU3NTk5RTIzMUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sICovLAorCQkJCTkzQUVB
Qzc0MjI2OEU3MzMwMDAyMUJBQiAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sICov
LAogCQkJCUNBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUt
MS5odG1sICovLAogCQkJCUNBNUI5NEQxMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1w
RmlsZVNpemUtMi5odG1sICovLAogCQkJCUNBOTdCMzkzMjE5MzY2NDcwMDQ1REY2RiAvKiBJbmRl
eGVkREJVc2VyRGVsZXRlLmh0bWwgKi8sCkBAIC00MTY5LDYgKzQxNzYsNyBAQAogCQkJCTdDODNF
MEJFMUQwQTY1MTMwMEZFQkNGMyAvKiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzRTBCRjFEMEE2NTIyMDBGRUJDRjMgLyogSW5kZXhlZERCUGVyc2lzdGVu
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzU5OUUyMTFGMDcxOTE5MDBBM0ZCOEMgLyogSW5k
ZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTNBRUFDNzUyMjY4RjQyQTAwMDIxQkFCIC8qIEluZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDcyMTkxMDA1QjAwNTlGRTM4IC8q
IEluZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNBOTdCMzk0MjE5
MzY2NjAwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0E5NUJERTExRTlCRUM1RjAwODY1NDk4IC8qIEluamVjdGVkQnVuZGxlQXBwbGVFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xOWE1YTVhYTZjMmE4YmY5YTgzOGI0ZGFjYWYyNDIwY2Q4NDU0ODU5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdD4KKwordmFyIGRiOwordmFyIHNob3VsZFNlbmRTdWNjZXNzTWVzc2Fn
ZSA9IGZhbHNlOwordmFyIGhhc0Fib3J0ID0gZmFsc2U7Cit2YXIgcmVxdWVzdCA9IHdpbmRvdy5p
bmRleGVkREIub3BlbigiSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkiKTsKK3JlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiQ29udGludWUiKTsKKyAgICBkYiA9IGV2ZW50
LnRhcmdldC5yZXN1bHQ7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CisgICAg
ICAgIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oIlRlc3RPYmplY3RTdG9yZSIsICJyZWFk
d3JpdGUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgi
VGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGZvciAobGV0IHRpbWVzID0gMDsgdGltZXMgPCAx
MDA7IHRpbWVzICArKykKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLnB1dChpLCBpKTsKKyAgICAg
ICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9ICgpPT4geworICAgICAgICAgICAgaWYgKCFoYXNBYm9y
dCkgeworICAgICAgICAgICAgICAgIGhhc0Fib3J0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBz
aG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFeHBlY3RlZCBB
Ym9ydCBGb3IgU3VzcGVuc2lvbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgiVW5leHBlY3RlZCBBYm9ydCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSAoKT0+IHsKKyAgICAgICAgICAgIGlmIChzaG91bGRT
ZW5kU3VjY2Vzc01lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiRXhwZWN0ZWQgU3VjY2VzcyBBZnRl
ciBSZXN1bWUiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UgPSBm
YWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworcmVxdWVzdC5vbnVw
Z3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBjcmVhdGVSZXF1ZXN0ID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7
CisgICAgY3JlYXRlUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIk9i
amVjdFN0b3JlIEVycm9yIik7CisgICAgfQorfQorCityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCkgeworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCJPcGVuIEVycm9yIik7Cit9CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkzNTljNWRmMGE5MDcxZjg4NDcy
NGRhMTcwYjA5Mjg0Zjg2NmYyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAyICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAzICoKKyA0ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgNSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIDYg
KiBhcmUgbWV0OgorIDcgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIDggKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgOSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgMTAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgMTEgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIDEyICoKKyAxMyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAxNCAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIDE1ICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IDE2ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgMTcgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgMTggKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIDE5ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgMjAgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIDIxICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAyMiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAyMyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAyNCAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKworI2ltcG9ydCA8V2Vi
S2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKworc3RhdGljIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworc3RhdGljIGJvb2wgaWRi
QWNpdGl2aXRpZXNTdGFydGVkOworc3RhdGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxh
c3RTY3JpcHRNZXNzYWdlOworCitAaW50ZXJmYWNlIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5
TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRs
ZXIKKworLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9s
bGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1Nj
cmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgaWRiQWNpdGl2aXRpZXNTdGFydGVkID0gdHJ1
ZTsKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOworICAgIGxhc3RTY3JpcHRNZXNz
YWdlID0gbWVzc2FnZTsKK30KKworQGVuZAorCitzdGF0aWMgdm9pZCBydW5UZXN0QW5kQ2hlY2tS
ZXN1bHQoTlNTdHJpbmcqIGV4cGVjdGVkUmVzdWx0KQoreworICAgIHJlY2VpdmVkU2NyaXB0TWVz
c2FnZSA9IGZhbHNlOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN0cmluZyA9IChOU1N0cmluZyAq
KVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRS
ZXN1bHQsIHN0cmluZy5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGtlZXBOZXR3b3JrUHJvY2Vz
c0FjdGl2ZSgpCit7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAq
PiAqZGF0YVJlY29yZHMpIHsKKyAgICAgICAgaWYgKCFpZGJBY2l0aXZpdGllc1N0YXJ0ZWQpCisg
ICAgICAgICAgICBrZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUoKTsKKyAgICB9XTsKK30KKworVEVT
VChJbmRleGVkREIsIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5KQoreworICAgIGF1dG8gaGFu
ZGxlciA9IGFkb3B0TlMoW1tJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgp
IG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworICAgIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOworICAgIGlkYkFjaXRpdml0aWVzU3RhcnRlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCk7CisK
KyAgICBydW5UZXN0QW5kQ2hlY2tSZXN1bHQoQCJDb250aW51ZSIpOworCisgICAgW2NvbmZpZ3Vy
YXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3NlbmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1t
aW5lbnRseV07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3NlbmROZXR3
b3JrUHJvY2Vzc0RpZFJlc3VtZV07CisgICAgCisgICAgcnVuVGVzdEFuZENoZWNrUmVzdWx0KEAi
RXhwZWN0ZWQgQWJvcnQgRm9yIFN1c3BlbnNpb24iKTsKKyAgICBydW5UZXN0QW5kQ2hlY2tSZXN1
bHQoQCJFeHBlY3RlZCBTdWNjZXNzIEFmdGVyIFJlc3VtZSIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368002</attachid>
            <date>2019-04-22 18:06:46 -0700</date>
            <delta_ts>2019-04-23 11:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190422180646.patch</filename>
            <type>text/plain</type>
            <size>74270</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjk5ZTlmYjg3OTQ1NjEyYmFlZjc1YjE2MjU0Yzk2OGJhNjg3MDJk
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBzdXNw
ZW5kIHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMg
c3VzcGVuZGVkLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCk6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OndhaXRGb3JTdG9wKToKKyAgICAgICAg
KFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYvQ3Jv
c3NUaHJlYWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBHZW5lcmljIG1lbW9yeUZvb3Rwcmlu
dCgpIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgYm1hbGxvYyBvbiBMaW51eApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDRhODIxNzYyMGEyMTA1MDMyNTY2MDgzOWJmZWU3Nzc2NGEwMjRjMjguLmI5ZWM0M2RmNWE2
NDI0NzQ5MmI1MTFhNmNmYzUwZGUwZTAwYWM3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDEg
QEAKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFiYXNlIGZpbGVz
IHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW50cm9kdWNlIElEQkFjdGl2aXR5Q291bnRlciB0byB0cmFjayBTUUxpdGUg
ZGF0YWJhc2UgYWN0aXZpdGllcyBvZiBJbmRleGVkREIgdGhhdCBtYXkgaG9sZCBsb2NrZWQgZGF0
YWJhc2UgCisgICAgICAgIGZpbGVzLiBJZiBJREJBY3Rpdml0eUNvdW50ZXIgaXMgbm90IDAgYW5k
IG5ldHdvcmsgcHJvY2VzcyBoYXMgdG8gc3VzcGVuZCwgYWN0aXZlIElEQiB0cmFuc2FjdGlvbnMg
bXVzdCBiZSAKKyAgICAgICAgZmluaXNoZWQgaW4gYmFja2luZyBzdG9yZSB0byByZWxlYXNlIGxv
Y2tlZCBmaWxlcy4gCisKKyAgICAgICAgQVBJIHRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFj
dGl2aXR5Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZpdHlD
b3VudGVyOjpyZWdpc3Rlck9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5
Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkFjdGl2aXR5Q291bnRlcjo6aWRiQWN0aXZpdHlDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2Vy
dmVyOjpJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJB
Y3Rpdml0eUNvdW50ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVySW5jcmVt
ZW50ZWRUbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjdGl2
aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVyRGVjcmVtZW50ZWRUbyk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5oOiBBZGRlZC4gSURCQWN0
aXZpdHlDb3VudGVyIHJlY29yZHMgdGhlIG51bWJlciBvZiBJREIgCisgICAgICAgIGFjdGl2aXRp
ZXMgdGhhdCBuZWVkIHRvIGhvbGQgbG9ja2VkIGRhdGFiYXNlIGZpbGVzLiBOZXR3b3JrIHByb2Nl
c3MgdHJhY2tzIHRoZSB1cGRhdGUgb2YgdGhpcyBjb3VudGVyLiBXaGVuIHRoZSAKKyAgICAgICAg
Y291bnRlciBpcyBpbmNyZW1lbnRlZCB0byAxIG9yIGRlY3JlbWVudGVkIHRvIDAsIG5ldHdvcmsg
cHJvY2VzcyBzZW5kcyBhIG1lc3NhZ2UgdG8gVUkgcHJvY2VzcyBmb3IgdGFraW5nIG9yIAorICAg
ICAgICByZWxlYXNlIGEgYmFja2dyb3VuZCBhc3NlcnRpb24uCisgICAgICAgIChXZWJDb3JlOjpJ
REJBY3Rpdml0eUNvdW50ZXI6OklEQkFjaXRpdml0eUF1dG9Db3VudGVyOjpJREJBY2l0aXZpdHlB
dXRvQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFj
aXRpdml0eUF1dG9Db3VudGVyOjp+SURCQWNpdGl2aXR5QXV0b0NvdW50ZXIpOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOiBIYW5nIGRhdGFiYXNlIHRo
cmVhZCBhbmQgY2hlY2sgdGhlIHZhbHVlIG9mIElEQkFjdGl2aXR5Q291bnRlci4gSWYgdGhpcyAK
KyAgICAgICAgaXMgbm90IGEgaGFyZCBzdG9wIGFuZCBjb3VudGVyIGlzIG5vdCAwLCB0aGlzIG1l
YW5zIG5ldHdvcmsgcHJvY2VzcyB3aWxsIG9yIGFscmVhZHkgc2VuZHMgb3V0IGEgInRha2luZyAK
KyAgICAgICAgYXNzZXJ0aW9uIiBtZXNhZ2UgYW5kIElEQlNlcnZlciBzaG91bGQgYmUgcmVzdW1l
ZCBzb29uLiBUaGVyZWZvcmUsIHdlIGNhbiBjb250aW51ZSBkYXRhYmFzZSBhY3Rpdml0aWVzIGJ5
IAorICAgICAgICByZXN1bWluZyBkYXRhYmFzZSB0aHJlYWQuIElmIHRoaXMgaXMgYSBoYXJkIHN0
b3AsIElEQlNlcnZlciBoYXMgdG8gZmluaXNoIG9uZ29pbmcgdHJhbnNhY3Rpb25zLgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlc3VtZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpoYXNUcmFuc2FjdGlvbik6CisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcDogSW5jcmVt
ZW50IG9yIGRlY3JlbWVudCBjb3VudGVyIGF0IHBsYWNlcyB0aGF0IHRvdWNoZXMKKyAgICAgICAg
ZGF0YWJhc2UgZmlsZXMuIEFsc28gcmVtb3ZlIHNvbWUgZXJyb3IgbG9ncyBhYm91dCBoYXZpbmcg
bm8gb25nb2luZyB0cmFuc2FjdGlvbiwgYmVjYXVzZSBub3cgdHJhbnNhY3Rpb25zIG1heSBiZSAK
KyAgICAgICAgYWJvcnRlZCBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gcHJlcGFyYXRpb24gZm9yIG5l
dHdvcmsgcHJvY2VzcyBzdXNwZW5zaW9uLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZy
b21GaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Y29tbWl0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1l
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omtl
eUV4aXN0c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0
U3RvcmVSZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFj
a2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVL
ZXlOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aGFzVHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHA6IFdoZW4gVW5pcXVlSURCRGF0YWJhc2UgaXMgYXNrZWQgdG8gZmluaXNoIG9uZ29pbmcg
CisgICAgICAgIHRyYW5zYWN0aW9ucywgaXQgYWJvcnRzIG9yIGNvbW1pdHMgdGhlbSB0aHJvdWdo
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZSBvbiB0aGUgbWFpbiB0aHJlYWQuIFRoaXMgaXMgc2FmZSBi
ZWNhdXNlIAorICAgICAgICBkYXRiYXNlIHRocmVhZCBzaG91bGQgYWxyZWFkeSBiZSBodW5nLiBV
bmlxdWVJREJEYXRhYmFzZSBhbHNvIG1hcmtzIHRob3NlIHRyYW5zYWN0aW9ucyBhcyBjb21taXR0
ZWQgb3IgYWJvcnRlZCwKKyAgICAgICAgc28gd2hlbiBkYXRhYmFzZSB0aHJlYWQgaXMgcmVzdW1l
ZCBhbmQgc3Vic2VxdWVudCByZXF1ZXN0cyBvbiB0aG9zZSB0cmFuc2FjdGlvbnMgYXJlIHByb2Nl
c3NlZCwgcHJvcGVyIGVycm9yIAorICAgICAgICB3aWxsIGJlIHJldHVybmVkLgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6Y29tbWl0VHJhbnNhY3Rpb25BZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDog
SW50cm9kdWNlIHN0YXRlIG9mIHRyYW5zYWN0aW9uIHRvIGhlbHAgZGVjaWRlIHdoZXRoZXIKKyAg
ICAgICAgb25nb2luZyB0cmFuc2FjdGlvbnMgc2hvdWxkIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVk
LgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OnN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6c2V0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6cmVzdWx0KToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAxOS0wNC0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgIm9wcG9ydHVuaXN0aWMi
IHN0YWNraW5nIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhOTEzMGRmNjk1MGU3MzI4NDc1ODlmOTVm
MmIxZDNlODg3YTM5MzcuLjMxYTQwMDM4ZWIzMGJkOGZiYzhmNTM5YjZhOTAyMjQ3NjUwZDQyMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVh
c2UgbG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRv
IHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1
c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBh
cmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRG
aWxlcyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW46CisKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisK
KyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFiYXNl
IGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyk6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisKIDIwMTktMDQt
MjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjQ0NTAyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NU
aHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmNwcAppbmRleCBiMjRkZmNjOTQ4OGYzZjdhYTM2NmRmMDQyYjQ2N2Q0M2Q2ZmU4MWE5Li5m
MzIxMmJjYmE3NWJhNjFhM2Q2M2QwOWM2N2VmZjU2YjlhNjY4ODhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtNjgsOCArNjgsMjAgQEAgdm9pZCBDcm9z
c1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAgICAgICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIobV90YXNrVGhyZWFkQ3JlYXRpb25Mb2NrKTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1f
dGFza1F1ZXVlLmlzS2lsbGVkKCkpCisgICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgp
KSB7CiAgICAgICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsK
KworICAgICAgICBMb2NrZXI8TG9jaz4gc2hvdWxkU3RvcExvY2tlcihtX3Nob3VsZFN0b3BMb2Nr
KTsKKyAgICAgICAgd2hpbGUgKG1fc2hvdWxkU3RvcCkgeworICAgICAgICAgICAgbV9zdG9wcGVk
TG9jay5sb2NrKCk7CisgICAgICAgICAgICBpZiAoIW1fc3RvcHBlZCkgeworICAgICAgICAgICAg
ICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9zdG9wcGVkQ29uZGl0aW9u
Lm5vdGlmeU9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zdG9wcGVkTG9jay51
bmxvY2soKTsKKyAgICAgICAgICAgIG1fc2hvdWxkU3RvcENvbmRpdGlvbi53YWl0KG1fc2hvdWxk
U3RvcExvY2spOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIENyb3NzVGhyZWFkVGFza0hh
bmRsZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCkKQEAgLTgzLDUgKzk1LDM0IEBA
IHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQoKQogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwogfQogCit2b2lkIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OndhaXRGb3JTdG9wKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Nob3VsZFN0b3BMb2NrKTsK
KyAgICAgICAgbV9zaG91bGRTdG9wID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQb3N0IGFuIGVt
cHR5IHRhc2sgdG8gZW5zdXJlIGRhdGFiYXNlIHRocmVhZCBrbm93cyBtX3Nob3VsZFN0b3AgYW5k
IHNldHMgbV9zdG9wcGVkLgorICAgIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayhbXSgpIHsgfSkp
OworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3N0b3BwZWRMb2NrKTsKKyAgICB3aGlsZSAo
IW1fc3RvcHBlZCkKKyAgICAgICAgbV9zdG9wcGVkQ29uZGl0aW9uLndhaXQobV9zdG9wcGVkTG9j
ayk7Cit9CisKK3ZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zaG91bGRT
dG9wTG9jayk7CisgICAgaWYgKG1fc2hvdWxkU3RvcCkgeworICAgICAgICBtX3N0b3BwZWRMb2Nr
LmxvY2soKTsKKyAgICAgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgICAgIG1fc3RvcHBlZCA9
IGZhbHNlOworICAgICAgICBtX3N0b3BwZWRMb2NrLnVubG9jaygpOworICAgICAgICBtX3Nob3Vs
ZFN0b3AgPSBmYWxzZTsKKyAgICAgICAgbV9zaG91bGRTdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgp
OworICAgIH0KK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVh
ZFRhc2tIYW5kbGVyLmgKaW5kZXggMjYzYjNkMDM1ZWNiZmMyZjhiNDE3YTlmMDIwMDgzMzM2NmRl
ZDY4MS4uZmQyOWZhM2FlYzU1NjAwZDQ0OGExMWM5MTI4OTk2ZWJhMDQxNWExNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaApAQCAtNDQsNiArNDQsOCBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwb3N0VGFzayhDcm9zc1RocmVhZFRh
c2smJik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1Ro
cmVhZFRhc2smJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FpdEZvclN0b3AoKTsK
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXN1bWUoKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CkBAIC01Myw2ICs1NSwxNCBAQCBw
cml2YXRlOgogICAgIExvY2sgbV9tYWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJvb2wgbV9tYWlu
VGhyZWFkUmVwbHlTY2hlZHVsZWQgeyBmYWxzZSB9OwogCisgICAgYm9vbCBtX3Nob3VsZFN0b3Ag
eyBmYWxzZSB9OworICAgIENvbmRpdGlvbiBtX3Nob3VsZFN0b3BDb25kaXRpb247CisgICAgTG9j
ayBtX3Nob3VsZFN0b3BMb2NrOworICAgIAorICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsK
KyAgICBDb25kaXRpb24gbV9zdG9wcGVkQ29uZGl0aW9uOworICAgIExvY2sgbV9zdG9wcGVkTG9j
azsKKwogICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX3Rhc2tRdWV1ZTsK
ICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUmVwbHlRdWV1ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQWN0aXZpdHlDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0ODEzM2VlNGMyNTc1
NGIzODA0MjM5NDZmZDA2Y2M2ODdiZGIzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQWN0aXZpdHlDb3VudGVyLmNwcApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJREJBY3Rpdml0eUNvdW50ZXIuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3Bh
Y2UgSURCQWN0aXZpdHlDb3VudGVyIHsKKworc3RhdGljIHVpbnQ2NF90IGNvdW50Oworc3RhdGlj
IExvY2sgY291bnRNdXRleDsKK3N0YXRpYyBJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlciogY291
bnRPYnNlcnZlciA9IG51bGxwdHI7CisKK3ZvaWQgcmVnaXN0ZXJPYnNlcnZlcihJREJBY3Rpdml0
eUNvdW50ZXJPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2soY291bnRNdXRleCk7CisgICAgY291bnRPYnNlcnZlciA9IG9ic2VydmVyOworfQorCit2
b2lkIGluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpCit7CisgICAgc3RkOjpsb2NrX2d1YXJk
PExvY2s+IGxvY2soY291bnRNdXRleCk7CisgICAgKytjb3VudDsKKworICAgIGlmICghY291bnRP
YnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50T2JzZXJ2ZXItPmNvdW50ZXJJbmNy
ZW1lbnRlZFRvKGNvdW50KTsKK30KKwordm9pZCBkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIo
KQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGNvdW50TXV0ZXgpOworICAgIC0t
Y291bnQ7CisKKyAgICBpZiAoIWNvdW50T2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKyAgICBj
b3VudE9ic2VydmVyLT5jb3VudGVyRGVjcmVtZW50ZWRUbyhjb3VudCk7Cit9CisKK3VpbnQ2NF90
IGlkYkFjdGl2aXR5Q291bnQoKQoreworICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKGNv
dW50TXV0ZXgpOworICAgIHJldHVybiBjb3VudDsKK30KKworSURCQWN0aXZpdHlDb3VudGVyT2Jz
ZXJ2ZXI6OklEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChQQUw6
Okh5c3RlcmVzaXNTdGF0ZSk+JiYgaHlzdGVyZXNpc1VwZGF0ZUZ1bmN0aW9uKQorICAgIDogbV9o
eXN0ZXJlc2lzKFdURk1vdmUoaHlzdGVyZXNpc1VwZGF0ZUZ1bmN0aW9uKSkKK3sKKyAgICBJREJB
Y3Rpdml0eUNvdW50ZXI6OnJlZ2lzdGVyT2JzZXJ2ZXIodGhpcyk7Cit9CisKK3ZvaWQgSURCQWN0
aXZpdHlDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2NF90IGNvdW50
KQoreworICAgIGlmIChjb3VudCAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOworICAgIH0p
OworfQorCit2b2lkIElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyOjpjb3VudGVyRGVjcmVtZW50
ZWRUbyh1aW50NjRfdCBjb3VudCkKK3sKKyAgICBpZiAoY291bnQpCisgICAgICAgIHJldHVybjsK
KworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXNdIHsKKyAgICAgICAgbV9oeXN0ZXJlc2lzLnN0
b3AoKTsKKyAgICB9KTsKK30KKworfSAvLyBJREJBY3Rpdml0eUNvdW50ZXIKK30gLy8gV2ViQ29y
ZQorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM2NjRkMTQ2ZWY2ZGU3NDQ3NTI1ZDI4ZDNlYjY2MjhmMjY2NWUxZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQWN0aXZpdHlDb3VudGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDxw
YWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIElEQkFjdGl2aXR5Q291bnRlciB7CisKK2NsYXNzIElEQkFjdGl2aXR5Q291bnRlck9ic2Vy
dmVyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJREJBY3Rpdml0eUNv
dW50ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYm
KTsKKyAgICB2b2lkIGNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2NF90KTsKKyAgICB2b2lkIGNv
dW50ZXJEZWNyZW1lbnRlZFRvKHVpbnQ2NF90KTsKK3ByaXZhdGU6CisgICAgUEFMOjpIeXN0ZXJl
c2lzQWN0aXZpdHkgbV9oeXN0ZXJlc2lzOworfTsKKworV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdp
c3Rlck9ic2VydmVyKElEQkFjdGl2aXR5Q291bnRlck9ic2VydmVyKik7CitXRUJDT1JFX0VYUE9S
VCB2b2lkIGluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKK1dFQkNPUkVfRVhQT1JUIHVpbnQ2NF90
IGlkYkFjdGl2aXR5Q291bnQoKTsKKworY2xhc3MgSURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgewor
cHVibGljOgorICAgIElEQkFjaXRpdml0eUF1dG9Db3VudGVyKCkKKyAgICB7CisgICAgICAgIElE
QkFjdGl2aXR5Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CisgICAgfQor
ICAgIH5JREJBY2l0aXZpdHlBdXRvQ291bnRlcigpCisgICAgeworICAgICAgICBJREJBY3Rpdml0
eUNvdW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIElEQkFjdGl2aXR5Q291bnRlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApp
bmRleCBjNmQ3ZDQzZjllYmFkZDI5MjQ4MGNmNGVhYzQwNzg3NTEwMDlhNDAxLi44MmIyOTBkNmNj
MDQ2MTk1MGI1MDA5NTZkNzQ2MjRlYjY0NjFjOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0x
MDEsNiArMTAxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1aW50NjRfdCBkYXRhYmFzZXNT
aXplRm9yT3JpZ2luKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRRdW90YSh1aW50
NjRfdCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGhhc1RyYW5zYWN0aW9uKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYpID0gMDsKIHByb3RlY3RlZDoKICAgICBJREJCYWNraW5nU3RvcmUo
KSB7IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4
IDViZjQ3ZjIxOTFjNDgzYTdhZDgwN2M5NjAyZWIxOTYwYjA1NmI1ZWIuLjRlNWJkNGFjZjgxMzJk
ZDVlMDVmZWQyMzJmNmVlZDQ2ZGNjODgyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC04MjgsNiArODI4LDM2
IEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAor
dm9pZCBJREJTZXJ2ZXI6OnN0b3AoU2hvdWxkRm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkKK3sK
KyAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXJzIHRoYXQgY2FuIGhvbGQg
bG9ja2VkIGRhdGFiYXNlIGZpbGVzLgorICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICB3YWl0Rm9yU3RvcCgpOworICAgIGF1dG8gc3FsaXRl
SURCQWN0aXZpdHlDb3VudCA9IElEQkFjdGl2aXR5Q291bnRlcjo6aWRiQWN0aXZpdHlDb3VudCgp
OworICAgIGlmIChzaG91bGRGb3JjZVN0b3AgPT0gU2hvdWxkRm9yY2VTdG9wOjpObykgeworICAg
ICAgICBpZiAoc3FsaXRlSURCQWN0aXZpdHlDb3VudCkKKyAgICAgICAgICAgIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OnJlc3VtZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHNxbGl0ZUlEQkFjdGl2aXR5Q291bnQpIHsKKyAgICAgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6
IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudmFsdWVzKCkpCisgICAgICAgICAgICBkYXRhYmFzZS0+
ZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKCk7CisgICAgfQorCisgICAgQVNTRVJUKCFJREJBY3Rp
dml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQoKSk7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpy
ZXN1bWUoKQoreworICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1bWUoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRl
eCAwYjg0Njg3ZjI3Y2IzNTg3ZDlkYzNhN2YyMzY5M2E2MGYyOWM1ZGJhLi5hODY3NTMzZjQxMTcx
YmYyY2FlYTZiOTZiMmNiMTVkODcyOGIwYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC01OCw2ICs1OCw4IEBAIGNv
bnN0IHVpbnQ2NF90IGRlZmF1bHRQZXJPcmlnaW5RdW90YSA9IDUwMCAqIE1COwogCiBjbGFzcyBJ
REJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlcjsKIAorZW51bSBjbGFzcyBTaG91bGRG
b3JjZVN0b3AgeyBObywgWWVzIH07CisKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8SURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUXVvdGFNYW5hZ2Vy
R2V0dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyKihQQUw6OlNlc3Npb25J
RCwgY29uc3QgQ2xpZW50T3JpZ2luJik+OwpAQCAtMTI0LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikg
eyBlbnN1cmVRdW90YVVzZXIob3JpZ2luKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wKFNob3VsZEZvcmNlU3RvcCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWUoKTsK
KwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9y
ZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogICAgIElEQlNl
cnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgs
IElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVy
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDY0ZTZjYzdkZTBjYTY3Njdl
YzE4ZDUxNGJjYWFmNGJkOGE1NjJjN2YuLjJkM2MwYTc4ODY0OTE5ZTViY2ZjMWIzZTFiYzMwNDVm
ODAzNmU4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDYgKzg1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoTWVtb3J5T2JqZWN0U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZvclZl
cnNpb25DaGFuZ2VBYm9ydChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwogCisgICAgYm9vbCBo
YXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIpIHsg
cmV0dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CisKIHByaXZhdGU6
CiAgICAgUmVmUHRyPE1lbW9yeU9iamVjdFN0b3JlPiB0YWtlT2JqZWN0U3RvcmVCeUlkZW50aWZp
ZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5j
cHAKaW5kZXggNDg5ZGVkNGUzYmQ3MDYxZGI4MjFjZDY5ZmI0MDFjODcxMzRkYWFhNC4uMGRmNjdl
MjI5NDlhM2E0YWNkM2I1MGQ5MWYwNTMwZDRiMzY4MzVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCisjaW5jbHVkZSAiSURCQWN0aXZpdHlDb3VudGVyLmgiCiAjaW5jbHVkZSAiSURC
QmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8uaCIKICNpbmNsdWRl
ICJJREJHZXRBbGxSZWNvcmRzRGF0YS5oIgpAQCAtMjQyLDggKzI0MywxMCBAQCBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImIGlkZW50aQogCiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxpdGVJREJCYWNraW5n
U3RvcmUoKQogewotICAgIGlmIChtX3NxbGl0ZURCKQorICAgIGlmIChtX3NxbGl0ZURCKSB7Cisg
ICAgICAgIElEQkFjdGl2aXR5Q291bnRlcjo6SURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgYXV0b0Nv
dW50ZXI7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKKyAgICB9CiAKICAgICBpZiAobV92bSkg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOwpAQCAtNzc4LDYgKzc4
MSw4IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgoKSBj
b25zdAogCiBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRmls
ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIHsKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6
OklEQkFjaXRpdml0eUF1dG9Db3VudGVyIGF1dG9Db3VudGVyOworCiAgICAgU1FMaXRlRGF0YWJh
c2UgZGF0YWJhc2U7CiAgICAgaWYgKCFkYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAn
JXMnIHdoZW4gZ2V0dGluZyBkYXRhYmFzZSBuYW1lIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRh
KCkpOwpAQCAtODIzLDYgKzgyOCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBT
dHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAorICAgIElEQkFjdGl2aXR5
Q291bnRlcjo6SURCQWNpdGl2aXR5QXV0b0NvdW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBtX3Nx
bGl0ZURCID0gc3RkOjptYWtlX3VuaXF1ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1f
c3FsaXRlREItPm9wZW4oZGJGaWxlbmFtZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQg
dG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCku
ZGF0YSgpKTsKQEAgLTkyNiw2ICs5MzMsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogICAg
IEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZv
KTsKIAorICAgIElEQkFjdGl2aXR5Q291bnRlcjo6aW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVy
KCk7CisKICAgICBtX3NxbGl0ZURCLT5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSgpKTsKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdHJhbnNhY3Rpb25zLmFkZChpbmZvLmlkZW50aWZpZXIoKSwg
bnVsbHB0cik7CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewpAQCAtOTY5LDcgKzk3
OCwxMCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZAogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9k
ZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSAmJiBtX29yaWdpbmFsRGF0
YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSkKICAgICAgICAgbV9kYXRhYmFzZUluZm8gPSBX
VEZNb3ZlKG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlKTsKIAotICAg
IHJldHVybiB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKKyAgICBhdXRvIHJlc3VsdCA9IHRyYW5zYWN0
aW9uLT5hYm9ydCgpOworICAgIElEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURCQWN0aXZp
dHlDb3VudGVyKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgaWRlbnRpZmllcikKQEAgLTk5NCw2ICsxMDA2LDggQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIGkKICAgICB9IGVsc2UKICAgICAgICAgbV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZl
cnNpb25DaGFuZ2UgPSBudWxscHRyOwogCisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpkZWNyZW1l
bnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKwogICAgIHJldHVybiBlcnJvcjsKIH0KIApAQCAtMTAw
NSwxMCArMTAxOSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNTRVJUKG1fc3Fs
aXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlv
bnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAh
dHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQg
dG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3Mo
KSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBj
cmVhdGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24i
X3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rp
b24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0
aW9uIl9zIH07CkBAIC0xMDYxLDEwICsxMDc0LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQK
ICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9k
ZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9u
LWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lv
bi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTExNTMsMTAgKzExNjUsOSBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAg
ICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50
aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9yZSB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdl
KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9y
ZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTE4OCwxMCAr
MTE5OSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9y
ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyCiAgICAgQVNTRVJUKG1fc3FsaXRlREIt
PmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2xl
YXIgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsK
KyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNsZWFyIGFu
IG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0g
ICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2Rl
OjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2Jq
ZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3Jl
IGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMjI5LDEwICsxMjM5LDkgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkp
OwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5k
ZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNh
Y3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNo
YW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTQyMiwxMCArMTQzMSw4IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1
dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkg
ewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFu
c2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRy
YW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0g
SURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExPR19FUlJPUigi
QXR0ZW1wdCB0byBkZWxldGUgaW5kZXggZHVyaW5nIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5z
YWN0aW9uIik7CkBAIC0xNDc3LDEwICsxNDg0LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQ291bGQgbm90IHJlbmFt
ZSBpbmRleCJfcyB9OwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5n
ZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFu
c2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBy
ZW5hbWUgYW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAg
IGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIGlu
ZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAg
ICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25j
aGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBpbmRleCBp
biBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwpAQCAtMTUxNiwxMCArMTUyMSw4
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9y
ZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAga2V5RXhpc3RzID0gZmFsc2U7CiAKICAg
ICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50
aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGlu
IG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhp
c3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3Mg
fTsKLSAgICB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxp
emVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CkBAIC0xNjkxLDEw
ICsxNjk0LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSYW5nZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVE
Qi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5n
ZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFu
c2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBk
ZWxldGUgcmFuZ2UgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3Mo
KSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBk
ZWxldGUgcmFuZ2UgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
ZGVsZXRlIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1w
dCB0byBkZWxldGUgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0
cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTgxNCwxMCArMTgxNiw5IEBAIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpCiAgICAgQVNTRVJUKHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpID09IHZhbHVlLmJsb2JG
aWxlUGF0aHMoKS5zaXplKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwg
IkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4g
YSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUg
aW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTE5ODMsMTAgKzE5ODQsOCBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7
CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlv
bklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBhIHJlY29yZCBm
cm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBhIHJlY29yZCBm
cm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAg
ICB9CiAKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNO
dWxsKCkpCkBAIC0yMTYwLDEwICsyMTU5LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGkKICAg
ICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQXR0ZW1wdCB0byBnZXQgcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGdldCByZWNvcmRzIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0gZ2V0QWxs
UmVjb3Jkc0RhdGEua2V5UmFuZ2VEYXRhLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkp
CkBAIC0yMjU2LDEwICsyMjUzLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpn
ZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJgogICAgIEFTU0VS
VChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJB
dHRlbXB0IHRvIGdldCBhbGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFu
c2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGdldCBhbGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRv
IGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IoZ2V0QWxs
UmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyLCBnZXRBbGxSZWNvcmRzRGF0YS5pbmRl
eElkZW50aWZpZXIsIGdldEFsbFJlY29yZHNEYXRhLmtleVJhbmdlRGF0YSk7CiAgICAgaWYgKCFj
dXJzb3IpIHsKQEAgLTIzMDYsMTAgKzIzMDEsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbgog
ICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICgh
dHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJBdHRlbXB0IHRvIGdldCBhbiBpbmRleCByZWNvcmQgZnJvbSBkYXRhYmFzZSB3aXRo
b3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8
fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZXQgYW4gaW5kZXggcmVjb3JkIGZyb20gZGF0YWJh
c2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAg
IGlmIChyYW5nZS5pc0V4YWN0bHlPbmVLZXkoKSkKICAgICAgICAgcmV0dXJuIHVuY2hlY2tlZEdl
dEluZGV4UmVjb3JkRm9yT25lS2V5KGluZGV4SUQsIG9iamVjdFN0b3JlSUQsIHR5cGUsIHJhbmdl
Lmxvd2VyS2V5LCBnZXRSZXN1bHQpOwpAQCAtMjQxMiwxMCArMjQwNSw4IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQXR0ZW1wdCB0byBnZXQgY291bnQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBnZXQgY291bnQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBjdXJzb3IgPSB0cmFuc2Fj
dGlvbi0+bWF5YmVPcGVuQmFja2luZ1N0b3JlQ3Vyc29yKG9iamVjdFN0b3JlSWRlbnRpZmllciwg
aW5kZXhJZGVudGlmaWVyLCByYW5nZSk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTI0NzUsMTAg
KzI0NjYsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVt
YmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURC
LT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdl
bmVyYXRlIGtleSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u
Iik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkK
ICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZW5l
cmF0ZSBrZXkgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJf
cyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdlbmVy
YXRlIGtleSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBhIHJlYWQt
b25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMjUwNCwxMCArMjQ5NCw5IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1
dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkg
ewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFs
dWUgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAg
IGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBn
ZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRy
YW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IHJldmVydCBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmV2
ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsK
QEAgLTI1MjUsMTAgKzI1MTQsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1h
eWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNlSQogICAgIEFTU0VS
VChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJB
dHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQg
YW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGRhdGFi
YXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAg
ICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5
KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2
YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVl
IGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0yNTUxLDEwICsyNTM5LDggQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3QKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkp
OwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBvcGVuIGEgY3Vyc29y
IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIG9wZW4gYSBjdXJzb3Ig
aW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAg
IH0KIAogICAgIGF1dG8qIGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5DdXJzb3IoaW5m
byk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTI1ODUsMTAgKzI1NzEsOCBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFucwogCiAgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGN1cnNvci0+dHJhbnNhY3Rpb24oKS0+dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgPT0gdHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKIAotICAgIGlmICghY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFj
dXJzb3ItPnRyYW5zYWN0aW9uKCktPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gaXRlcmF0ZSBhIGN1cnNvciB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5z
YWN0aW9uIik7CisgICAgaWYgKCFjdXJzb3ItPnRyYW5zYWN0aW9uKCkgfHwgIWN1cnNvci0+dHJh
bnNhY3Rpb24oKS0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJBdHRlbXB0IHRvIGl0ZXJhdGUgYSBjdXJzb3Igd2l0aG91dCBhbiBpbi1wcm9n
cmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0gZGF0YS5rZXlE
YXRhOwogICAgIGF1dG8gcHJpbWFyeUtleSA9IGRhdGEucHJpbWFyeUtleURhdGE7CkBAIC0yNjQz
LDYgKzI2MjcsOCBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0
b3JlKCkKIAogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0
ZUJhY2tpbmdTdG9yZSBkZWxldGluZyBmaWxlICclcycgb24gZGlzayIsIGRiRmlsZW5hbWUudXRm
OCgpLmRhdGEoKSk7CiAKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6OklEQkFjaXRpdml0eUF1dG9D
b3VudGVyIGF1dG9Db3VudGVyOworCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVzOwogICAg
IHsKICAgICAgICAgYm9vbCBlcnJvcmVkID0gdHJ1ZTsKQEAgLTI3MTgsNiArMjcwNCwxMyBAQCB2
b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2xvc2VTUUxpdGVEQigpCiAgICAgbV9zcWxpdGVE
QiA9IG51bGxwdHI7CiB9CiAKK2Jvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpoYXNUcmFuc2Fj
dGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworfQorCisKIH0gLy8gbmFtZXNwYWNl
IElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmgKaW5kZXggNTZiNTE3YzJhNjEwNzQ0YmRlZjIwZTE4ODljMDYzMWMzMGFhZmI1OC4u
N2Y0YTYzM2EzY2NmMzI3MGY0MGQ5OTEzNmI4ZWJiMThhYThhNzY3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
U3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CiAgICAg
c3RhdGljIFN0cmluZyBkYXRhYmFzZU5hbWVGcm9tRmlsZShjb25zdCBTdHJpbmcmKTsKIAorICAg
IGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CiBwcml2
YXRlOgogICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0OwogICAgIFN0
cmluZyBmdWxsRGF0YWJhc2VQYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApp
bmRleCA4OGFjMmQ5ZDlmNjMwNTk4ZGJkNTcxOTVmNDU5YjQ0Y2U0NzU5ZDk4Li5lYTY2YTU4ZjU3
ZWIyYWMwMzA0ZDFhZDk5OTE1YTVjMjViMzM4YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAKQEAgLTE1NjcsMTMgKzE1NjcsMTQgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb24KICAgICBw
ZXJmb3JtR2V0UmVzdWx0Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0
KTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCitib29sIFVuaXF1
ZUlEQkRhdGFiYXNlOjpwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
U3RhdGUgc3RhdGUpCiB7CiAgICAgYXV0byB0YWtlblRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNz
VHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAg
aWYgKCF0YWtlblRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NF
UlQoIW1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCkpKTsKKyAgICB0YWtlblRyYW5zYWN0aW9uLT5zZXRTdGF0ZShzdGF0ZSk7CiAg
ICAgbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlm
aWVyKCksIFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0xNjAxLDcgKzE2MDIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2Fj
dGlvbkFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRyYW5zYQogICAgIGlmICghY2Fs
bGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFu
c2FjdGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICBpZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29t
bWl0dGluZykpIHsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRh
aW5zKCZ0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nIG9yIGhhcyBhbHJlYWR5IGNsb3Nl
ZCwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gbWVzc2FnaW5nIGJhY2sgdG8gaXQgYWJvdXQgdGhl
IGNvbW1pdCBmYWlsaW5nLgogICAgICAgICAgICAgZm9yZ2V0RXJyb3JDYWxsYmFjayhjYWxsYmFj
a0lEKTsKQEAgLTE2MjksNyArMTYzMCwxNCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQ
ZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2Fj
dGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgcGVy
Zm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcik7CisgICAgSURCRXJy
b3IgcmVzdWx0ID0gZXJyb3I7CisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fZmluaXNoaW5nVHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIGlmICh0cmFuc2FjdGlv
bi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRl
ZCkKKyAgICAgICAgcmVzdWx0ID0gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJUcmFuc2FjdGlv
biBpcyBhbHJlYWR5IGFib3J0ZWQiX3MgfTsKKyAgICBlbHNlIGlmICh0cmFuc2FjdGlvbi0+c3Rh
dGUoKSA9PSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGVkKQor
ICAgICAgICByZXN1bHQgPSB0cmFuc2FjdGlvbi0+cmVzdWx0KCk7CisKKyAgICBwZXJmb3JtRXJy
b3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCk7CiAKICAgICB0cmFuc2FjdGlv
bkNvbXBsZXRlZChtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRp
ZmllcikpOwogfQpAQCAtMTY1Niw3ICsxNjY0LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkK
ICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcHJlcGFy
ZVRvRmluaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgaWYgKCFwcmVwYXJlVG9G
aW5pc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6U3RhdGU6OkFib3J0aW5nKSkgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkgewogICAg
ICAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3Npbmcgb3IgaGFzIGFs
cmVhZHkgY2xvc2VkLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBtZXNzYWdpbmcgYmFjayB0byBp
dCBhYm91dCB0aGUgYWJvcnQgZmFpbGluZy4KICAgICAgICAgICAgIGZvcmdldEVycm9yQ2FsbGJh
Y2soY2FsbGJhY2tJRCk7CkBAIC0xNzEzLDcgKzE3MjEsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsCiAgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFz
ZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8o
KSk7CiAgICAgfQogCi0gICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvcik7CisgICAgSURCRXJyb3IgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0g
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlv
bi0+cmVzdWx0KCkgOiBlcnJvcjsKKyAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lk
ZW50aWZpZXIsIHJlc3VsdCk7CiAKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRy
YW5zYWN0aW9uKSk7CiB9CkBAIC0yMjc3LDYgKzIyODYsNDAgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6c2V0UXVvdGEodWludDY0X3QgcXVvdGEpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5z
ZXRRdW90YShxdW90YSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNh
Y3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rp
b24pCit7CisgICAgdHJhbnNhY3Rpb24uc2V0UmVzdWx0KG1fYmFja2luZ1N0b3JlLT5hYm9ydFRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKKyAgICB0cmFuc2Fj
dGlvbi5zZXRTdGF0ZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRl
ZCk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uT25NYWlu
VGhyZWFkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAg
IHRyYW5zYWN0aW9uLnNldFJlc3VsdChtX2JhY2tpbmdTdG9yZS0+Y29tbWl0VHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOworICAgIHRyYW5zYWN0aW9uLnNldFN0
YXRlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpDb21taXR0ZWQpOworfQor
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIg
OiBjb3B5VG9WZWN0b3IobV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpIHsKKyAgICAg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRp
Zmllcik7CisgICAgICAgIGFib3J0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0aW9u
KTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9m
aW5pc2hpbmdUcmFuc2FjdGlvbnMua2V5cygpKSkgeworICAgICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5oYXNUcmFuc2FjdGlvbihpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMudGFrZShp
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGluZykKKyAgICAgICAgICAgIGFib3J0
VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0aW9uKTsKKyAgICAgICAgZWxzZSBpZiAo
dHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3Rh
dGU6OkNvbW1pdHRpbmcpCisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVh
ZCgqdHJhbnNhY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGUzYTdiMWIxY2U1MjRj
OTIyZTJlZDkwMjU0MTk3MDgzZTJjOWJkMjYuLmIzMDJmMDNkODIxZGRkOWRjNDg5ZTRiZGE2YjVm
OTVlZWY0Y2EzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0xMjcsNiArMTI3LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRRdW90YSh1aW50NjRfdCk7CiAKKyAgICB2b2lkIGZpbmlz
aEFjdGl2ZVRyYW5zYWN0aW9ucygpOworCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRGF0YWJh
c2VPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCk7CkBAIC0y
MzcsNyArMjM5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZXJhdGlvbkFuZFRyYW5zYWN0aW9u
VGltZXJGaXJlZCgpOwogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB0
YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rpb24oYm9vbCYgaGFkRGVmZXJyZWRUcmFuc2FjdGlvbnMp
OwogCi0gICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJik7CisgICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
U3RhdGUpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbk9uTWFpblRo
cmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAgICAgCiAgICAgdm9pZCBjbGVh
clN0YWxlUGVuZGluZ09wZW5EQlJlcXVlc3RzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDRmM2MyMDE1Mjg2ZjIyMTg3M2JjZjIyM2VjNDE0YWUz
NDAxMTM4ODguLjEzOTIyMmYyZWI2Y2M2YWQzODBhYzZjZmIxOGQ0NzFhM2E4M2Q4ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApAQCAtNTYsNiArNTYsOCBA
QCBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKIGNsYXNzIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFJ1bm5pbmcsIEFi
b3J0aW5nLCBDb21taXR0aW5nLCBBYm9ydGVkLCBDb21taXR0ZWQgfTsKKwogICAgIHN0YXRpYyBS
ZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCiAgICAgflVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24oKTsKQEAgLTkwLDYgKzkyLDExIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9iamVjdFN0b3JlSWRlbnRpZmllcnMoKTsKIAorICAg
IHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0YXRlOyB9CisgICAgU3Rh
dGUgc3RhdGUoKSB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdm9pZCBzZXRSZXN1bHQoY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7IG1fcmVzdWx0ID0gZXJyb3I7IH0KKyAgICBJREJFcnJvciByZXN1
bHQoKSB7IHJldHVybiBtX3Jlc3VsdDsgfQorCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJh
bnNhY3Rpb25JbmZvJik7CiAKQEAgLTEwMCw2ICsxMDcsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyczsKKworICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6UnVubmluZyB9OworICAgIElEQkVycm9yIG1fcmVzdWx0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCA3NzBk
MWExYjE0ZDRjMjBjNDE0NjEyODNlNmMyNDFkNTkxODVkNmNmLi5hY2ZhNzg4Yzg2YmM5MWI4YjA3
M2E2ZDViM2Q1NTE1NzcyNzIzY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgogI2luY2x1ZGUgIkdQ
VVByb2dyYW1tYWJsZVBhc3NFbmNvZGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIldlYkdQVUNvbXB1dGVQaXBlbGluZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IDMwOWJhNDdhZTBjYTBkOGRhZjhjMmFkZjhkNzFhMDRmOWNjZWFmMjUuLmM1
NDNjNTBlMjQxNTIyOWE2ZmIzYTdhYjAwNmNiMjNjYzZkOTRlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDAsNiArMTAwLDcgQEAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Q
cm94eS5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCiAK
K01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwCiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcmlhbGl6YXRpb24uY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDFlNWNmOWQwZTU3MzMxZjg4ZDExOTIwYTM0ZDVkZDc5ZmFi
ZDE0NjguLmUxN2Q4NDNhODY4ODBhMTllOGE0YzdmNTA3MjVjNjVhMDhiMTljN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5
ODUsNiArMzk4NSw3IEBACiAJCUM5RDQ2NzA1MUU2MEM0NjUwMDgxOTVGQiAvKiBBdXRvcGxheUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUQ0
NjcwNDFFNjBDM0VCMDA4MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM5RDg1MUYwMUIzOURDNzgwMDg1MDYy
RSAvKiBNZWRpYVNlc3Npb25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzlEODUxRUUxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lv
bk1ldGFkYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzlGODdDRkUxQjI4RjQwRTAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlGODdDRkQxQjI4
RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNBMjg3OUUxMjI2RTcxMDQwMDEwMjZGNSAv
KiBJREJBY3Rpdml0eUNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENBMjg3OUREMjI2RTcwQzkwMDEwMjZGNSAvKiBJREJBY3Rpdml0eUNvdW50
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
QTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1
MyAvKiBTY3JvbGxBbmltYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNBNkMxNTMwMjIwQjk4Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFw
cGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzFBRTNCODFGQjgwRUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBRTlGOTEw
MTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAg
LyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oICovOyB9OwpAQCAtMTM0MDUsNiArMTM0MDYsOCBAQAog
CQlDOURBREJDQTFCMUQzQjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2
ZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xp
Y3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xp
Y3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlERDIyNkU3MEM5MDAx
MDI2RjUgLyogSURCQWN0aXZpdHlDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElEQkFjdGl2aXR5Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDQTI4NzlERjIyNkU3MEQxMDAxMDI2RjUgLyogSURCQWN0aXZpdHlDb3VudGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkFjdGl2aXR5Q291bnRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAv
KiBTY3JvbGxBbmltYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JvbGxBbmltYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JG
NjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDQTZDMTUyRjIyMEI0QTU1MDA1NUNCRkMgLyogSlNJREJSZXF1ZXN0Q3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCUmVxdWVzdEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ2NSw2ICsxODQ2OCw4IEBA
CiAJCTUxMEE1OEVFMUJBQjcxRTAwMEMxOTI4MiAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUNBMjg3OURGMjI2RTcwRDEwMDEwMjZGNSAv
KiBJREJBY3Rpdml0eUNvdW50ZXIuY3BwICovLAorCQkJCUNBMjg3OUREMjI2RTcwQzkwMDEwMjZG
NSAvKiBJREJBY3Rpdml0eUNvdW50ZXIuaCAqLywKIAkJCQk1MUJBNEFDNzFCQkM1QUQ2MDBERjNE
NkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJNTE2RDdENkQxQkI1RjA2NTAwQUY3Qzc3
IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8sCiAJCQkJNTEwQTU4RkUxQkIwN0FBNTAw
QzE5MjgyIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oICovLApAQCAtMjkyOTUsNiArMjkzMDAs
NyBAQAogCQkJCUIyNzUzNTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJY29uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTNGMTQ1NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3MTRFQTgxQ0Y0RTRCMTAwNDcyM0M0IC8qIElEQkFjdGl2ZURPTU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0EyODc5RTEyMjZFNzEwNDAwMTAyNkY1IC8qIElEQkFj
dGl2aXR5Q291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCQTRBQ0MxQkJDNUJERDAwREYz
RDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2NjMxMUQ0
RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAppbmRleCAzZDc1MmM2MTY3OTIzNzljYTJiOTAzYjVlOGVkMTdjNGJhMGYyZWY0Li5iNjQ1
N2RjNGIzMjg0MDNkZGNlNWRlMjE3NjVmNjgzZDIwNjMyNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM1LDYgKzEzNSwxMSBA
QCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
LCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcigqdGhpcykKICNlbmRpZgorI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgICwgbV9pZGJBY3Rp
dml0eUNvdW50ZXJPYnNlcnZlcihbdGhpc10oUEFMOjpIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsK
KyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6U2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoc3Rh
dGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpLCAwKTsKKyAgICB9KQorI2VuZGlm
CiB7CiAgICAgTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsK
IApAQCAtMTk5NSw2ICsyMDAwLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBh
cmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICBzZXJ2ZXItPnN0b3AoSURCU2Vy
dmVyOjpTaG91bGRGb3JjZVN0b3A6Olllcyk7CisjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9T
dXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObyk7CiAgICAgY29t
cGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CkBAIC0yMDAyLDYgKzIwMTEsMTEgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKQog
ewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
czo6cHJlcGFyZVRvU3VzcGVuZCgpIiwgdGhpcyk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1f
aWRiU2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT5zdG9wKElEQlNlcnZlcjo6U2hv
dWxkRm9yY2VTdG9wOjpObyk7CisjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCkBAIC0yMDQxLDYg
KzIwNTUsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBmb3IgKGF1dG8m
IHNlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3Bl
bnNpb24oKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVl
cygpKQorICAgICAgICBzZXJ2ZXItPnJlc3VtZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggODljMjk4NWQwZTIy
ZWNhYTZkMGMzMTY1N2M3NDY5Yjc1YzdjNDFmYy4uMjBlYTM3ODBiNjQ2Zjc4ZGU0MzUzMGEwNDE5
ZjQ1Mjk0NjdkNzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisjaW5jbHVkZSA8V2ViQ29yZS9JREJBY3Rpdml0eUNvdW50ZXIu
aD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVD
RkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgpAQCAt
NTExLDYgKzUxNSwxMCBAQCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBt
X3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgV2ViQ29yZTo6SURCQWN0aXZp
dHlDb3VudGVyOjpJREJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlciBtX2lkYkFjdGl2aXR5Q291bnRl
ck9ic2VydmVyOworI2VuZGlmCisKICAgICBSZWY8V29ya1F1ZXVlPiBtX3N0b3JhZ2VUYXNrUXVl
dWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlVGFzayIpIH07
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMzNDRk
MTYzODI3MzViMGI2ODNjNjk2ZjliNjYyNjcxMDcxZDg0NjQuLjA3Y2ExNmQ4ZGFhNzUzMTE5YTU4
NjI3Njg0YWFjYjdhNmI1NGFmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA2MCw2ICsxMDYwLDE5
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9v
bCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0luZGV4
ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKK3sKKyAgICBpZiAoIWlzSW5kZXhlZERhdGFi
YXNlSG9sZGluZ0xvY2tlZEZpbGVzKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVhc2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgSW5kZXhlZERhdGFiYXNlcyBpbiB0aGUgTmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdl
ciBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOworICAgICAgICBtX3Rva2VuRm9ySW5kZXhlZERhdGFi
YXNlSG9sZGluZ0xvY2tlZEZpbGVzID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoIW1fdG9rZW5Gb3JJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgdGFr
aW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBJbmRleGVkRGF0YWJhc2VzIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiKTsKKyAgICAgICAgbV90
b2tlbkZvckluZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnN5bmNBbGxDb29raWVzKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U3luY0FsbENvb2tpZXMoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZjYjJiNzhiNDVkYzU3
MmMzNzg4M2U4ZTZhODBmYmJmOGRiMWE2YzMuLjgyYWIyODkyYTZlMzFiZDQyZmFkYjYyNGRmZDk5
YzE1YjA5OGU2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3ludGhlc2l6ZUFwcElzQmFja2dyb3VuZChib29sIGJhY2tncm91bmQpOwogCiAgICAg
dm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKKyAgICB2b2lkIHNldElzSW5kZXhl
ZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogCiAgICAgdm9pZCBzeW5jQWxsQ29v
a2llcygpOwogICAgIHZvaWQgZGlkU3luY0FsbENvb2tpZXMoKTsKQEAgLTI1OSw2ICsyNjAsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAg
ICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9s
ZGluZ0xvY2tlZEZpbGVzOworICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0
eVRva2VuIG1fdG9rZW5Gb3JJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXM7CiAgICAg
UHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9zeW5jQWxsQ29va2ll
c1Rva2VuOwogICAgIAogICAgIHVuc2lnbmVkIG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlOThlNjY2MzBmYWQ3OTA2MTA5
MjBjZWY4NTI3NWRjOTdhZDFmMWQuLjFjODczMjhiMjAxYWRjNjg4M2MwMDRmN2Q3ODVhMmI2Y2I0
MTQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDYgKzMzLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBQ
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wg
aXNIb2xkaW5nTG9ja2VkRmlsZXMpCisgICAgU2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9j
a2VkRmlsZXMoYm9vbCBpc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKIAogICAg
ICMgRGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCiAgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2Uo
dWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1NDEyYjY3NzkxN2E4ZGMwYTJj
ZmE2MzlkYzU0NDg1ODQwZGJkZGRmLi44YWI2ZGM1M2M2MzAyNTg1ODA5Y2EzY2MwMjRjYTk4ZmRm
YzgzNjQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2Vk
IGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZElt
bWluZW50bHkubW06IEFkZGVkLgorICAgICAgICAoLVtJbmRleGVkREJTdXNwZW5kSW1taW5lbnRs
eU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVz
c2FnZTpdKToKKyAgICAgICAgKHJ1blRlc3RBbmRDaGVja1Jlc3VsdCk6CisgICAgICAgIChrZWVw
TmV0d29ya1Byb2Nlc3NBY3RpdmUpOgorICAgICAgICAoVEVTVCk6CisKIDIwMTktMDQtMjIgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjQ0NTAyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZGQ2NTFkN2QyNGY0
NzYzYmZiOTE3MTNiMzQxZDhkM2ExMTBlY2ZlLi45MjgyYjY5Y2I5OGZmZWY3NDlhMzQ4NWI3OWUx
YTI0NjE2MzliN2FmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzgwLDYgKzc4MCw4IEBA
CiAJCUM5QzlDRDQzMjFFNkE2ODYwMDE5REI5NiAvKiBhdXRvcGxheWluZy1tdWx0aXBsZS1tZWRp
YS1lbGVtZW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM5QzlDRDQyMjFFNkE2NjcwMDE5REI5NiAvKiBhdXRvcGxheWluZy1tdWx0
aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sICovOyB9OwogCQlDOUU2REQzNTFFQTk3RDA4MDBERDc4
QUEgLyogRmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RTZERDMxMUVBOTcyRDgwMERENzhBQSAvKiBGaXJz
dFJlc3BvbmRlclN1cHByZXNzaW9uLm1tICovOyB9OwogCQlDOUU4RUU3NTIxREVEOTQzMDA3OTc3
NjUgLyogbG9uZy10ZXN0Lm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDOUU4RUU3NDIxREVEOTFFMDA3OTc3NjUgLyogbG9uZy10ZXN0Lm1w
NCAqLzsgfTsKKwkJQ0EyODc5REIyMjZFNjlBNTAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJ
bW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0EyODc5REEyMjZFNjk4NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5
Lm1tICovOyB9OworCQlDQTI4NzlEQzIyNkU2OUI2MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDQTI4NzlEOTIyNkU2OTc4MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkuaHRtbCAqLzsgfTsKIAkJQ0EzODQ1OTYyMEFFMTdBOTAwOTkwRDNCIC8qIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENBMzg0NTk1MjBBRTAxMkUwMDk5MEQzQiAvKiBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIubW0gKi87IH07CiAJCUNBNUI5NEQyMjE5MEMwRjQwMDU5RkUzOCAv
KiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAvKiBJ
bmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovOyB9OwogCQlDQTVCOTREMzIxOTBDMEY0MDA1
OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTVCOTREMTIxOTBDMEUwMDA1OUZF
MzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCAqLzsgfTsKQEAgLTExNzQsNiArMTE3
Niw3IEBACiAJCQkJNTcxRjdGRDAxRjI5NjFGQjAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVjdHVy
ZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQk1NzU5OUUyQTFGMDcxQUEwMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJl
ZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCTU3NTk5RTJCMUYwNzFBQTAwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAor
CQkJCUNBMjg3OURDMjI2RTY5QjYwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRs
eS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNBNUI5NEQyMjE5MEMwRjQwMDU5RkUz
OCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUNBNUI5NEQzMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNBOTdCMzk1MjE5MzY2N0EwMDQ1REY2RiAv
KiBJbmRleGVkREJVc2VyRGVsZXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yMTI2
LDYgKzIxMjksOCBAQAogCQlDOUM5Q0Q0MjIxRTZBNjY3MDAxOURCOTYgLyogYXV0b3BsYXlpbmct
bXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvcGxheWluZy1tdWx0
aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzlFNkREMzExRUE5NzJEODAwREQ3OEFBIC8qIEZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUU4RUU3NDIxREVEOTFFMDA3OTc3NjUgLyogbG9u
Zy10ZXN0Lm1wNCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZpbGU7IHBhdGggPSAibG9uZy10ZXN0Lm1wNCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNBMjg3OUQ5MjI2RTY5NzgwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5l
bnRseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSW5kZXhlZERCU3VzcGVuZElt
bWluZW50bHkuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0EyODc5REEyMjZF
Njk4NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMzg0NTk1MjBBRTAxMkUwMDk5MEQz
QiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRl
eGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIklu
ZGV4ZWREQlRlbXBGaWxlU2l6ZS0xLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTVCOTREMTIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJUZW1wRmlsZVNpemUtMi5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1ODksNiArMjU5NCw3IEBACiAJ
CQkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSAq
LywKIAkJCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyogSW5kZXhlZERCUGVyc2lzdGVuY2Uu
bW0gKi8sCiAJCQkJNTc1OTlFMjAxRjA3MTkxNzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVy
ZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSAqLywKKwkJCQlDQTI4NzlEQTIyNkU2OTg2
MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gKi8sCiAJCQkJQ0E1Qjk0
RDYyMTkxMDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbSAqLywKIAkJCQlD
QTk3QjM5MjIxOTM2NjNCMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5tbSAqLywKIAkJ
CQkwRTQwNEE4QTIxNjZEREY4MDA4MjcxQkEgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNT
ZWxlY3RFbGVtZW50Lm1tICovLApAQCAtMjk4OSw2ICsyOTk1LDcgQEAKIAkJCQk1NzFGN0ZDRjFG
Mjk2MUUxMDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRp
YmlsaXR5LnNxbGl0ZTMtd2FsICovLAogCQkJCTU3NTk5RTI1MUYwNzE5MkMwMEEzRkI4QyAvKiBJ
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlSZWFkLmh0bWwgKi8s
CiAJCQkJNTc1OTlFMjMxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9u
ZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwgKi8sCisJCQkJQ0EyODc5RDkyMjZFNjk3
ODAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgKi8sCiAJCQkJQ0E1
Qjk0RDAyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0xLmh0bWwgKi8s
CiAJCQkJQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0y
Lmh0bWwgKi8sCiAJCQkJQ0E5N0IzOTMyMTkzNjY0NzAwNDVERjZGIC8qIEluZGV4ZWREQlVzZXJE
ZWxldGUuaHRtbCAqLywKQEAgLTQxNjksNiArNDE3Niw3IEBACiAJCQkJN0M4M0UwQkUxRDBBNjUx
MzAwRkVCQ0YzIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMEJGMUQwQTY1MjIwMEZFQkNGMyAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTU3NTk5RTIxMUYwNzE5MTkwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1
Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
QTI4NzlEQjIyNkU2OUE1MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDQTVCOTRENzIxOTEwMDVCMDA1OUZFMzggLyogSW5kZXhlZERC
VGVtcEZpbGVTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0E5N0IzOTQyMTkzNjY2MDAwNDVE
RjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTk1QkRF
MTFFOUJFQzVGMDA4NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVBcHBsZUV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjZjZjZDJkNmZlYzEwNTZiYWM4NjM1M2VhMWVhMzlmZWIyYzRmOTYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5Lmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
c2NyaXB0PgorCit2YXIgZGI7Cit2YXIgc2hvdWxkU2VuZFN1Y2Nlc3NNZXNzYWdlID0gZmFsc2U7
Cit2YXIgaGFzQWJvcnQgPSBmYWxzZTsKK3ZhciByZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5v
cGVuKCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSIpOworcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbihldmVudCkgeworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RI
YW5kbGVyLnBvc3RNZXNzYWdlKCJDb250aW51ZSIpOworICAgIGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgICAgdHJhbnNh
Y3Rpb24gPSBkYi50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3JlIiwgInJlYWR3cml0ZSIpOwor
ICAgICAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJUZXN0T2JqZWN0
U3RvcmUiKTsKKyAgICAgICAgZm9yIChsZXQgdGltZXMgPSAwOyB0aW1lcyA8IDEwMDsgdGltZXMr
KykKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLnB1dChpLCBpKTsKKyAgICAgICAgdHJhbnNhY3Rp
b24ub25hYm9ydCA9ICgpPT4geworICAgICAgICAgICAgaWYgKCFoYXNBYm9ydCkgeworICAgICAg
ICAgICAgICAgIGhhc0Fib3J0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzaG91bGRTZW5kU3Vj
Y2Vzc01lc3NhZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJFeHBlY3RlZCBBYm9ydCBGb3IgU3Vz
cGVuc2lvbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiVW5leHBlY3Rl
ZCBBYm9ydCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRyYW5zYWN0aW9u
Lm9uY29tcGxldGUgPSAoKT0+IHsKKyAgICAgICAgICAgIGlmIChzaG91bGRTZW5kU3VjY2Vzc01l
c3NhZ2UpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiRXhwZWN0ZWQgU3VjY2VzcyBBZnRlciBSZXN1bWUiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UgPSBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBjcmVhdGVSZXF1ZXN0ID0gZXZlbnQudGFyZ2V0
LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgY3JlYXRl
UmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgd2luZG93LndlYmtp
dC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIk9iamVjdFN0b3JlIEVy
cm9yIik7CisgICAgfQorfQorCityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgewor
ICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdl
KCJPcGVuIEVycm9yIik7Cit9CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZElt
bWluZW50bHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJiMWE2Mzg0M2IzNTUwZTQ1MjFlYjY0M2Y5ZTlkYWRi
OGQyNjIwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KQEAgLTAsMCArMSw5NyBAQAor
LyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3Qu
aCIKKworI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQu
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKK3N0YXRp
YyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKK3N0YXRpYyBib29sIGlkYkFjaXRpdml0aWVz
U3RhcnRlZDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVz
c2FnZTsKKworQGludGVyZmFjZSBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5k
bGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5kbGVyCisKKy0gKHZv
aWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJD
b250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdl
ICopbWVzc2FnZQoreworICAgIGlkYkFjaXRpdml0aWVzU3RhcnRlZCA9IHRydWU7CisgICAgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKKyAgICBsYXN0U2NyaXB0TWVzc2FnZSA9IG1lc3Nh
Z2U7Cit9CisKK0BlbmQKKworc3RhdGljIHZvaWQgcnVuVGVzdEFuZENoZWNrUmVzdWx0KE5TU3Ry
aW5nKiBleHBlY3RlZFJlc3VsdCkKK3sKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxz
ZTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcgPSAoTlNTdHJpbmcgKilbbGFzdFNjcmlw
dE1lc3NhZ2UgYm9keV07CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkUmVzdWx0LCBzdHJp
bmcuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBrZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUoKQor
eworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKmRhdGFSZWNv
cmRzKSB7CisgICAgICAgIGlmICghaWRiQWNpdGl2aXRpZXNTdGFydGVkKQorICAgICAgICAgICAg
a2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCk7CisgICAgfV07Cit9CisKK1RFU1QoSW5kZXhlZERC
LCBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSkKK3sKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9w
dE5TKFtbSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVz
dEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIGlkYkFj
aXRpdml0aWVzU3RhcnRlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOworCisgICAga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCk7CisKKyAgICBydW5UZXN0QW5k
Q2hlY2tSZXN1bHQoQCJDb250aW51ZSIpOworCisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJv
Y2Vzc1Bvb2wgX3NlbmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseV07CisgICAg
W2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3NlbmROZXR3b3JrUHJvY2Vzc0RpZFJl
c3VtZV07CisKKyAgICBydW5UZXN0QW5kQ2hlY2tSZXN1bHQoQCJFeHBlY3RlZCBBYm9ydCBGb3Ig
U3VzcGVuc2lvbiIpOworICAgIHJ1blRlc3RBbmRDaGVja1Jlc3VsdChAIkV4cGVjdGVkIFN1Y2Nl
c3MgQWZ0ZXIgUmVzdW1lIik7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368047</attachid>
            <date>2019-04-23 11:38:21 -0700</date>
            <delta_ts>2019-04-24 08:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190423113820.patch</filename>
            <type>text/plain</type>
            <size>74298</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjU4MjM0NzRmZDJkMjgzMzU4YTFiOTFkOTdhM2U0OGFhMGMyMzc0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBzdXNw
ZW5kIHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMg
c3VzcGVuZGVkLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCk6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnN1c3BlbmRBbmRXYWl0KToKKyAgICAg
ICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBHZW5lcmljIG1lbW9yeUZvb3Rw
cmludCgpIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgYm1hbGxvYyBvbiBMaW51eApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhlMzJiYTllMDU0MWE1ZDFmMDE5Zjc4OWQ0OWY5YWZiMzE2ZWQxZDguLjdkZGU1YzVj
OTNlYTNlMjk4Nzk3OGE5Y2EyMjY3NmNmMjg2MDViNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MDMgQEAKKzIwMTktMDQtMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFiYXNlIGZp
bGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW50cm9kdWNlIElEQkFjdGl2aXR5Q291bnRlciB0byB0cmFjayBTUUxp
dGUgZGF0YWJhc2UgYWN0aXZpdGllcyBvZiBJbmRleGVkREIgdGhhdCBtYXkgaG9sZCBsb2NrZWQg
ZGF0YWJhc2UgCisgICAgICAgIGZpbGVzLiBJZiBJREJBY3Rpdml0eUNvdW50ZXIgaXMgbm90IDAg
YW5kIG5ldHdvcmsgcHJvY2VzcyBoYXMgdG8gc3VzcGVuZCwgYWN0aXZlIElEQiB0cmFuc2FjdGlv
bnMgbXVzdCBiZSAKKyAgICAgICAgZmluaXNoZWQgaW4gYmFja2luZyBzdG9yZSB0byByZWxlYXNl
IGxvY2tlZCBmaWxlcy4gCisKKyAgICAgICAgQVBJIHRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkFjdGl2aXR5Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZp
dHlDb3VudGVyOjpzZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNv
dW50ZXI6OmluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJBY3Rpdml0eUNvdW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpDb3VudGVyT2JzZXJ2ZXI6OkNvdW50ZXJP
YnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OkNvdW50ZXJP
YnNlcnZlcjo6Y291bnRlckluY3JlbWVudGVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0
aXZpdHlDb3VudGVyOjpDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJEZWNyZW1lbnRlZFRvKToKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaDog
QWRkZWQuIElEQkFjdGl2aXR5Q291bnRlciByZWNvcmRzIHRoZSBudW1iZXIgb2YgSURCIAorICAg
ICAgICBhY3Rpdml0aWVzIHRoYXQgbmVlZCB0byBob2xkIGxvY2tlZCBkYXRhYmFzZSBmaWxlcy4g
TmV0d29yayBwcm9jZXNzIHRyYWNrcyB0aGUgdXBkYXRlIG9mIHRoaXMgY291bnRlci4gV2hlbiB0
aGUgCisgICAgICAgIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgdG8gMSBvciBkZWNyZW1lbnRlZCB0
byAwLCBuZXR3b3JrIHByb2Nlc3Mgc2VuZHMgYSBtZXNzYWdlIHRvIFVJIHByb2Nlc3MgZm9yIHRh
a2luZyBvciAKKyAgICAgICAgcmVsZWFzZSBhIGJhY2tncm91bmQgYXNzZXJ0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRlcjo6QXV0b0NvdW50ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRlcjo6fkF1
dG9Db3VudGVyKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwOiBIYW5nIGRhdGFiYXNlIHRocmVhZCBhbmQgY2hlY2sgdGhlIHZhbHVlIG9mIElEQkFj
dGl2aXR5Q291bnRlci4gSWYgdGhpcyAKKyAgICAgICAgaXMgbm90IGEgaGFyZCBzdG9wIGFuZCBj
b3VudGVyIGlzIG5vdCAwLCB0aGlzIG1lYW5zIG5ldHdvcmsgcHJvY2VzcyB3aWxsIG9yIGFscmVh
ZHkgc2VuZHMgb3V0IGEgInRha2luZyAKKyAgICAgICAgYXNzZXJ0aW9uIiBtZXNhZ2UgYW5kIElE
QlNlcnZlciBzaG91bGQgYmUgcmVzdW1lZCBzb29uLiBUaGVyZWZvcmUsIHdlIGNhbiBjb250aW51
ZSBkYXRhYmFzZSBhY3Rpdml0aWVzIGJ5IAorICAgICAgICByZXN1bWluZyBkYXRhYmFzZSB0aHJl
YWQuIElmIHRoaXMgaXMgYSBoYXJkIHN0b3AsIElEQlNlcnZlciBoYXMgdG8gZmluaXNoIG9uZ29p
bmcgdHJhbnNhY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnRyeVN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6IEluY3JlbWVudCBvciBkZWNyZW1lbnQgY291bnRlciBhdCBwbGFjZXMgdGhhdCB0
b3VjaGVzCisgICAgICAgIGRhdGFiYXNlIGZpbGVzLiBBbHNvIHJlbW92ZSBzb21lIGVycm9yIGxv
Z3MgYWJvdXQgaGF2aW5nIG5vIG9uZ29pbmcgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugbm93IHRyYW5z
YWN0aW9ucyBtYXkgYmUgCisgICAgICAgIGFib3J0ZWQgb24gdGhlIG1haW4gdGhyZWFkIGluIHBy
ZXBhcmF0aW9uIGZvciBuZXR3b3JrIHByb2Nlc3Mgc3VzcGVuc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpkYXRhYmFzZU5hbWVGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRl
S2V5R2VuZXJhdG9yTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omhh
c1RyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOiBXaGVuIFVuaXF1ZUlEQkRhdGFiYXNlIGlzIGFz
a2VkIHRvIGZpbmlzaCBvbmdvaW5nIAorICAgICAgICB0cmFuc2FjdGlvbnMsIGl0IGFib3J0cyBv
ciBjb21taXRzIHRoZW0gdGhyb3VnaCBTUUxpdGVJREJCYWNraW5nU3RvcmUgb24gdGhlIG1haW4g
dGhyZWFkLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSAKKyAgICAgICAgZGF0YmFzZSB0aHJlYWQgc2hv
dWxkIGFscmVhZHkgYmUgaHVuZy4gVW5pcXVlSURCRGF0YWJhc2UgYWxzbyBtYXJrcyB0aG9zZSB0
cmFuc2FjdGlvbnMgYXMgY29tbWl0dGVkIG9yIGFib3J0ZWQsCisgICAgICAgIHNvIHdoZW4gZGF0
YWJhc2UgdGhyZWFkIGlzIHJlc3VtZWQgYW5kIHN1YnNlcXVlbnQgcmVxdWVzdHMgb24gdGhvc2Ug
dHJhbnNhY3Rpb25zIGFyZSBwcm9jZXNzZWQsIHByb3BlciBlcnJvciAKKyAgICAgICAgd2lsbCBi
ZSByZXR1cm5lZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90YUNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBl
cmZvcm1Db21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJh
bnNhY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZmluaXNoQWN0aXZlVHJhbnNh
Y3Rpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmg6IEludHJvZHVjZSBzdGF0ZSBvZiB0cmFuc2FjdGlvbiB0byBo
ZWxwIGRlY2lkZSB3aGV0aGVyCisgICAgICAgIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHNob3VsZCBi
ZSBhYm9ydGVkIG9yIGNvbW1pdHRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6c2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpzdGF0ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OnNldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OnJlc3VsdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDQtMjMg
IFJlbXkgRGVtYXJlc3QgIDxyZGVtYXJlc3RAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsYXlv
dXQgaXNzdWVzIG9jY3VyaW5nIHdoZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4gbW9kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZDM3ZDkyOTgwMTE2OTllMWIxOTQyYzZkMjgxOGU2ZGY4OWQ3ZDUxMi4uNjAxNGI0MTgy
MDdiOGZlOTI2OWVlNDMyOTBmN2MzYmUyODEzYTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxOS0wNC0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmlsZXMg
d2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dElzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wNC0yMyAgUmVt
eSBEZW1hcmVzdCAgPHJkZW1hcmVzdEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxheW91dCBp
c3N1ZXMgb2NjdXJpbmcgd2hlbiBlbnRlcmluZyBmdWxsIHNjcmVlbiBtb2RlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCBiMjRkZmNjOTQ4OGYzZjdhYTM2
NmRmMDQyYjQ2N2Q0M2Q2ZmU4MWE5Li40NWVjMDQxNzc5Y2Y4MmY2NzNiYjJmODk3N2E2MmQ5YWUz
M2IwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAt
NjgsOCArNjgsMjAgQEAgdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgp
CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YXNrVGhyZWFkQ3JlYXRpb25Mb2NrKTsK
ICAgICB9CiAKLSAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpCisgICAgd2hpbGUg
KCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIG1fdGFza1F1ZXVlLndhaXRGb3JN
ZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKKworICAgICAgICBMb2NrZXI8TG9jaz4gc2hvdWxkU3Vz
cGVuZExvY2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICAgICAgd2hpbGUgKG1fc2hvdWxk
U3VzcGVuZCkgeworICAgICAgICAgICAgbV9zdXNwZW5kZWRMb2NrLmxvY2soKTsKKyAgICAgICAg
ICAgIGlmICghbV9zdXNwZW5kZWQpIHsKKyAgICAgICAgICAgICAgICBtX3N1c3BlbmRlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgbV9zdXNwZW5kZWRDb25kaXRpb24ubm90aWZ5T25lKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX3N1c3BlbmRlZExvY2sudW5sb2NrKCk7CisgICAg
ICAgICAgICBtX3Nob3VsZFN1c3BlbmRDb25kaXRpb24ud2FpdChtX3Nob3VsZFN1c3BlbmRMb2Nr
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpo
YW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBAIC04Myw1ICs5NSwzNCBAQCB2b2lkIENy
b3NzVGhyZWFkVGFza0hhbmRsZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCkKICAg
ICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKIH0KIAordm9pZCBDcm9zc1RocmVhZFRhc2tIYW5k
bGVyOjpzdXNwZW5kQW5kV2FpdCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zaG91bGRTdXNwZW5kTG9jayk7Cisg
ICAgICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gUG9zdCBhbiBl
bXB0eSB0YXNrIHRvIGVuc3VyZSBkYXRhYmFzZSB0aHJlYWQga25vd3MgbV9zaG91bGRTdXNwZW5k
IGFuZCBzZXRzIG1fc3VzcGVuZGVkLgorICAgIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayhbXSgp
IHsgfSkpOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3N1c3BlbmRlZExvY2spOworICAg
IHdoaWxlICghbV9zdXNwZW5kZWQpCisgICAgICAgIG1fc3VzcGVuZGVkQ29uZGl0aW9uLndhaXQo
bV9zdXNwZW5kZWRMb2NrKTsKK30KKwordm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1
bWUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICBpZiAobV9zaG91bGRTdXNwZW5kKSB7Cisg
ICAgICAgIG1fc3VzcGVuZGVkTG9jay5sb2NrKCk7CisgICAgICAgIGlmIChtX3N1c3BlbmRlZCkK
KyAgICAgICAgICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CisgICAgICAgIG1fc3VzcGVuZGVkTG9j
ay51bmxvY2soKTsKKyAgICAgICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7CisgICAgICAgIG1f
c2hvdWxkU3VzcGVuZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFu
ZGxlci5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCmluZGV4IDI2
M2IzZDAzNWVjYmZjMmY4YjQxN2E5ZjAyMDA4MzMzNjZkZWQ2ODEuLmYwNTQ2MDFjMjQ2NjFlNDI5
Y2Y4Yjk4ZGI4OTBlYmI1ZDkyMzM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3Nz
VGhyZWFkVGFza0hhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tI
YW5kbGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJvdGVjdGVkOgogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHN1c3BlbmRBbmRXYWl0KCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzdW1lKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVUYXNrUmVwbGll
c09uTWFpblRocmVhZCgpOwpAQCAtNTMsNiArNTUsMTQgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1f
bWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVk
IHsgZmFsc2UgfTsKIAorICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kIHsgZmFsc2UgfTsKKyAgICBD
b25kaXRpb24gbV9zaG91bGRTdXNwZW5kQ29uZGl0aW9uOworICAgIExvY2sgbV9zaG91bGRTdXNw
ZW5kTG9jazsKKyAgICAKKyAgICBib29sIG1fc3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBDb25k
aXRpb24gbV9zdXNwZW5kZWRDb25kaXRpb247CisgICAgTG9jayBtX3N1c3BlbmRlZExvY2s7CisK
ICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUXVldWU7CiAgICAg
Q3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fdGFza1JlcGx5UXVldWU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFj
dGl2aXR5Q291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQWN0aXZpdHlDb3VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjUzYWE2YTg0OWM3YzEyYmM5
ODJjYzkwMmUxMDEyMWUzYTNjNDc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5jcHAKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURC
QWN0aXZpdHlDb3VudGVyLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIElE
QkFjdGl2aXR5Q291bnRlciB7CisKK3N0YXRpYyB1aW50NjRfdCBjb3VudDsKK3N0YXRpYyBMb2Nr
IGNvdW50TXV0ZXg7CitzdGF0aWMgQ291bnRlck9ic2VydmVyKiBjb3VudE9ic2VydmVyOworCit2
b2lkIHNldE9ic2VydmVyKENvdW50ZXJPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7CisgICAgQVNTRVJUKCFjb3VudE9ic2Vy
dmVyKTsKKyAgICBjb3VudE9ic2VydmVyID0gb2JzZXJ2ZXI7Cit9CisKK3ZvaWQgaW5jcmVtZW50
SURCQWN0aXZpdHlDb3VudGVyKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhj
b3VudE11dGV4KTsKKyAgICArK2NvdW50OworCisgICAgaWYgKCFjb3VudE9ic2VydmVyKQorICAg
ICAgICByZXR1cm47CisgICAgY291bnRPYnNlcnZlci0+Y291bnRlckluY3JlbWVudGVkVG8oY291
bnQpOworfQorCit2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpCit7CisgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7CisgICAgLS1jb3VudDsKKworICAg
IGlmICghY291bnRPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50T2JzZXJ2ZXIt
PmNvdW50ZXJEZWNyZW1lbnRlZFRvKGNvdW50KTsKK30KKwordWludDY0X3QgaWRiQWN0aXZpdHlD
b3VudCgpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7Cisg
ICAgcmV0dXJuIGNvdW50OworfQorCitDb3VudGVyT2JzZXJ2ZXI6OkNvdW50ZXJPYnNlcnZlcihX
VEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYmIGh5c3RlcmVzaXNVcGRh
dGVGdW5jdGlvbikKKyAgICA6IG1faHlzdGVyZXNpcyhXVEZNb3ZlKGh5c3RlcmVzaXNVcGRhdGVG
dW5jdGlvbikpCit7CisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpzZXRPYnNlcnZlcih0aGlzKTsK
K30KKwordm9pZCBDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2NF90
IGNvdW50KQoreworICAgIGlmIChjb3VudCAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOwor
ICAgIH0pOworfQorCit2b2lkIENvdW50ZXJPYnNlcnZlcjo6Y291bnRlckRlY3JlbWVudGVkVG8o
dWludDY0X3QgY291bnQpCit7CisgICAgaWYgKGNvdW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdG9wKCk7
CisgICAgfSk7Cit9CisKK30gLy8gSURCQWN0aXZpdHlDb3VudGVyCit9IC8vIFdlYkNvcmUKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMzU3OGUyM2UyNGU0Mzc3MTYxZjEzODg4NzliYmVkNjNkMTQ0MmI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkFjdGl2aXR5Q291bnRlci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8cGFsL0h5
c3RlcmVzaXNBY3Rpdml0eS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBJ
REJBY3Rpdml0eUNvdW50ZXIgeworCitjbGFzcyBDb3VudGVyT2JzZXJ2ZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvdW50ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9u
PHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYmKTsKKyAgICB2b2lkIGNvdW50ZXJJbmNyZW1l
bnRlZFRvKHVpbnQ2NF90KTsKKyAgICB2b2lkIGNvdW50ZXJEZWNyZW1lbnRlZFRvKHVpbnQ2NF90
KTsKK3ByaXZhdGU6CisgICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9oeXN0ZXJlc2lzOwor
fTsKKworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPYnNlcnZlcihDb3VudGVyT2JzZXJ2ZXIqKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgaWRiQWN0aXZpdHlDb3VudCgpOworCitjbGFzcyBBdXRvQ291bnRlciB7
CitwdWJsaWM6CisgICAgQXV0b0NvdW50ZXIoKQorICAgIHsKKyAgICAgICAgSURCQWN0aXZpdHlD
b3VudGVyOjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKyAgICB9CisgICAgfkF1dG9D
b3VudGVyKCkKKyAgICB7CisgICAgICAgIElEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURC
QWN0aXZpdHlDb3VudGVyKCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSURCQWN0aXZp
dHlDb3VudGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM2ZDdkNDNmOWViYWRkMjky
NDgwY2Y0ZWFjNDA3ODc1MTAwOWE0MDEuLjI5MWY3NmVkNWFjNWJiYjc3Yzg0ZGVmZjljMGM2Njc5
Yzc4YmEzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KSA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgY29u
c3QgPSAwOwogcHJvdGVjdGVkOgogICAgIElEQkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNWJmNDdmMjE5MWM0ODNh
N2FkODA3Yzk2MDJlYjE5NjBiMDU2YjVlYi4uYmU2ZjVjODdjYTUwOGUwODY2YmNkYmRiMWMzNDk2
YmQ1ZjVlYWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTgyOCw2ICs4MjgsMzYgQEAgdm9pZCBJREJTZXJ2
ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCit2b2lkIElEQlNlcnZlcjo6
dHJ5U3RvcChTaG91bGRGb3JjZVN0b3Agc2hvdWxkRm9yY2VTdG9wKQoreworICAgIC8vIE9ubHkg
c3RvcCBub24tZXBoZW1lcmFsIElEQlNlcnZlcnMgdGhhdCBjYW4gaG9sZCBsb2NrZWQgZGF0YWJh
c2UgZmlsZXMuCisgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHN1c3BlbmRBbmRXYWl0KCk7CisgICAgYXV0byBzcWxpdGVJREJBY3Rpdml0
eUNvdW50ID0gSURCQWN0aXZpdHlDb3VudGVyOjppZGJBY3Rpdml0eUNvdW50KCk7CisgICAgaWYg
KHNob3VsZEZvcmNlU3RvcCA9PSBTaG91bGRGb3JjZVN0b3A6Ok5vKSB7CisgICAgICAgIGlmIChz
cWxpdGVJREJBY3Rpdml0eUNvdW50KQorICAgICAgICAgICAgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
cjo6cmVzdW1lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc3FsaXRlSURC
QWN0aXZpdHlDb3VudCkgeworICAgICAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV91bmlxdWVJ
REJEYXRhYmFzZU1hcC52YWx1ZXMoKSkKKyAgICAgICAgICAgIGRhdGFiYXNlLT5maW5pc2hBY3Rp
dmVUcmFuc2FjdGlvbnMoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIUlEQkFjdGl2aXR5Q291bnRl
cjo6aWRiQWN0aXZpdHlDb3VudCgpKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OnJlc3VtZSgpCit7
CisgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnJlc3VtZSgpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4IDBiODQ2ODdm
MjdjYjM1ODdkOWRjM2E3ZjIzNjkzYTYwZjI5YzVkYmEuLjRkMzI4YzQ4MjE1NTY0YTMyMzA0OWVk
NmI1MzdiYmRiZTM3ZGM4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTU4LDYgKzU4LDggQEAgY29uc3QgdWludDY0
X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhID0gNTAwICogTUI7CiAKIGNsYXNzIElEQkJhY2tpbmdT
dG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyOwogCitlbnVtIGNsYXNzIFNob3VsZEZvcmNlU3RvcCA6
IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVk
PElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8SURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdXNpbmcgUXVvdGFNYW5hZ2VyR2V0
dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2VyKihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgQ2xpZW50T3JpZ2luJik+OwpAQCAtMTI0LDYgKzEyNiw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikgeyBl
bnN1cmVRdW90YVVzZXIob3JpZ2luKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0cnlT
dG9wKFNob3VsZEZvcmNlU3RvcCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWUoKTsK
KwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQsIElEQkJhY2tpbmdTdG9y
ZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwogICAgIElEQlNl
cnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBhdGgs
IElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0dGVy
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDY0ZTZjYzdkZTBjYTY3Njdl
YzE4ZDUxNGJjYWFmNGJkOGE1NjJjN2YuLjE1ZmUzYzQ3Mzk5NmM2ZTRmMzdlNGY0M2ZmNWE2NWZj
ZjZmYTNhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTg1LDYgKzg1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoTWVtb3J5T2JqZWN0U3RvcmUmKTsKICAgICB2b2lkIHJlc3RvcmVPYmplY3RTdG9yZUZvclZl
cnNpb25DaGFuZ2VBYm9ydChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+JiYpOwogCisgICAgYm9vbCBo
YXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkZW50aWZpZXIpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9
CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lbW9yeU9iamVjdFN0b3JlPiB0YWtlT2JqZWN0U3Rv
cmVCeUlkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggNDg5ZGVkNGUzYmQ3MDYxZGI4MjFjZDY5ZmI0MDFjODcxMzRk
YWFhNC4uODJjNmM2YjVkMDQ1YjQzZjAxYzAzOTY5Y2I1OWMxZDRlNWIyZDIyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCQWN0aXZpdHlDb3VudGVyLmgiCiAj
aW5jbHVkZSAiSURCQmluZGluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvckluZm8u
aCIKICNpbmNsdWRlICJJREJHZXRBbGxSZWNvcmRzRGF0YS5oIgpAQCAtMjQyLDggKzI0MywxMCBA
QCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aQogCiBTUUxpdGVJREJCYWNraW5nU3RvcmU6On5TUUxp
dGVJREJCYWNraW5nU3RvcmUoKQogewotICAgIGlmIChtX3NxbGl0ZURCKQorICAgIGlmIChtX3Nx
bGl0ZURCKSB7CisgICAgICAgIElEQkFjdGl2aXR5Q291bnRlcjo6QXV0b0NvdW50ZXIgYXV0b0Nv
dW50ZXI7CiAgICAgICAgIGNsb3NlU1FMaXRlREIoKTsKKyAgICB9CiAKICAgICBpZiAobV92bSkg
ewogICAgICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fdm0uZ2V0KCkpOwpAQCAtNzc4LDYgKzc4
MSw4IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgoKSBj
b25zdAogCiBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRmls
ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKIHsKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6
OkF1dG9Db3VudGVyIGF1dG9Db3VudGVyOworCiAgICAgU1FMaXRlRGF0YWJhc2UgZGF0YWJhc2U7
CiAgICAgaWYgKCFkYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2UgYXQgcGF0aCAnJXMnIHdoZW4gZ2V0
dGluZyBkYXRhYmFzZSBuYW1lIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpAQCAtODIz
LDYgKzgyOCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxp
c2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAKICAgICBTdHJpbmcgZGJGaWxl
bmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAorICAgIElEQkFjdGl2aXR5Q291bnRlcjo6QXV0
b0NvdW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBtX3NxbGl0ZURCID0gc3RkOjptYWtlX3VuaXF1
ZTxTUUxpdGVEYXRhYmFzZT4oKTsKICAgICBpZiAoIW1fc3FsaXRlREItPm9wZW4oZGJGaWxlbmFt
ZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBTUUxpdGUgZGF0YWJhc2Ug
YXQgcGF0aCAnJXMnIiwgZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKQEAgLTkyNiwxMCArOTMz
LDEzIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YmVnaW5UcmFuc2FjdGlvbihj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlz
T3BlbigpKTsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwogCisgICAgSURCQWN0aXZpdHlD
b3VudGVyOjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKwogICAgIG1fc3FsaXRlREIt
PnNldE1heGltdW1TaXplKG1heGltdW1TaXplKCkpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90
cmFuc2FjdGlvbnMuYWRkKGluZm8uaWRlbnRpZmllcigpLCBudWxscHRyKTsKICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBlc3Rh
Ymxpc2ggdHJhbnNhY3Rpb24gaWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIik7CisgICAg
ICAgIElEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZXN0YWJs
aXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBhbHJlYWR5IGV4aXN0cyJfcyB9OwogICAg
IH0KIApAQCAtOTUwLDYgKzk2MCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mIGluZm8pCiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKQorICAgICAgICBJREJBY3Rpdml0
eUNvdW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOwogICAgIHJldHVybiBlcnJv
cjsKIH0KIApAQCAtOTY5LDcgKzk4MSwxMCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZAogICAg
IGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNo
YW5nZSAmJiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSkKICAgICAg
ICAgbV9kYXRhYmFzZUluZm8gPSBXVEZNb3ZlKG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVW
ZXJzaW9uQ2hhbmdlKTsKIAotICAgIHJldHVybiB0cmFuc2FjdGlvbi0+YWJvcnQoKTsKKyAgICBh
dXRvIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgIElEQkFjdGl2aXR5Q291bnRl
cjo6ZGVjcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CisKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKQEAgLTk5NCw2ICsxMDA5LDgg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjb21taXRUcmFuc2FjdGlvbihjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGkKICAgICB9IGVsc2UKICAgICAgICAgbV9vcmlnaW5h
bERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25DaGFuZ2UgPSBudWxscHRyOwogCisgICAgSURCQWN0
aXZpdHlDb3VudGVyOjpkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKwogICAgIHJldHVy
biBlcnJvcjsKIH0KIApAQCAtMTAwNSwxMCArMTAyMiw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFu
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJh
bnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24t
Pm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVy
c2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZl
cnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMDYxLDEwICsxMDc3LDkgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwog
CiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0
IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAg
IGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNo
YW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBz
dG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qg
c3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTExNTMs
MTAgKzExNjgsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnJlbmFtZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0
ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVu
YW1lIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9z
IH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rp
b25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBy
ZW5hbWUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9u
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
cmVuYW1lIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwpAQCAtMTE4OCwxMCArMTIwMiw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyCiAg
ICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNz
IHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0
dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9u
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
Y2xlYXIgYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBA
IC0xMjI5LDEwICsxMjQyLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0
ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAg
ICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNyZWF0ZSBh
biBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRl
eCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTQyMiwxMCAr
MTQzNCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREIt
PmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVs
ZXRlIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCB3aXRo
b3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgaWYgKHRy
YW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7
CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgaW5kZXggZHVyaW5nIGEgbm9u
LXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CkBAIC0xNDc3LDEwICsxNDg3LDggQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVJbmRleChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQ291bGQgbm90IHJlbmFtZSBpbmRleCJfcyB9OwogCiAgICAgYXV0byogdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gcmVuYW1lIGFuIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp
b24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFu
c2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIHJlbmFtZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIp
OwpAQCAtMTUxNiwxMCArMTUyNCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpCiAgICAga2V5
RXhpc3RzID0gZmFsc2U7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtleURhdGEpOwogICAgIGlmICgha2V5
QnVmZmVyKSB7CkBAIC0xNjkxLDEwICsxNjk3LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMK
ICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rp
b24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgcmFuZ2UgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFu
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJh
bnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgcmFuZ2UgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFu
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0
aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBM
T0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUg
aW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTgxNCwxMCArMTgxOSw5
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgQVNTRVJUKHZhbHVlLmJsb2JVUkxzKCku
c2l6ZSgpID09IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXplKCkpOwogCiAgICAgYXV0byogdHJh
bnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAg
ICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2Jq
ZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9
CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJl
YWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBp
biBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29y
ZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAg
LTE5ODMsMTAgKzE5ODcsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgIEFTU0VSVCht
X3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRl
bXB0IHRvIGdldCBhIHJlY29yZCBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGdldCBhIHJlY29yZCBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGtleSA9IGtleVJhbmdlLmxvd2Vy
S2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCkBAIC0yMTYwLDEwICsyMTYyLDggQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9yZVJlY29yZHMoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGkKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgcmVjb3JkcyBmcm9tIGRh
dGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCByZWNvcmRzIGZyb20gZGF0
YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAog
ICAgIGF1dG8ga2V5ID0gZ2V0QWxsUmVjb3Jkc0RhdGEua2V5UmFuZ2VEYXRhLmxvd2VyS2V5Owog
ICAgIGlmIChrZXkuaXNOdWxsKCkpCkBAIC0yMjU2LDEwICsyMjU2LDggQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJgogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRv
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBhbGwgaW5kZXggcmVjb3JkcyBmcm9t
IGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBhbGwgaW5kZXggcmVj
b3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3Mg
fTsKLSAgICB9CiAKICAgICBhdXRvIGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNr
aW5nU3RvcmVDdXJzb3IoZ2V0QWxsUmVjb3Jkc0RhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyLCBn
ZXRBbGxSZWNvcmRzRGF0YS5pbmRleElkZW50aWZpZXIsIGdldEFsbFJlY29yZHNEYXRhLmtleVJh
bmdlRGF0YSk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTIzMDYsMTAgKzIzMDQsOCBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbgogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAK
ICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dy
ZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBhbiBpbmRleCByZWNv
cmQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7Cisg
ICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZXQgYW4gaW5k
ZXggcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwotICAgIH0KIAogICAgIGlmIChyYW5nZS5pc0V4YWN0bHlPbmVLZXkoKSkKICAgICAg
ICAgcmV0dXJuIHVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KGluZGV4SUQsIG9iamVj
dFN0b3JlSUQsIHR5cGUsIHJhbmdlLmxvd2VyS2V5LCBnZXRSZXN1bHQpOwpAQCAtMjQxMiwxMCAr
MjQwOCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAgb3V0Q291bnQgPSAwOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgY291bnQgZnJvbSBkYXRh
YmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZXQgY291bnQgZnJvbSBkYXRhYmFz
ZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAg
YXV0byBjdXJzb3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQmFja2luZ1N0b3JlQ3Vyc29yKG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVyLCByYW5nZSk7CiAgICAgaWYgKCFj
dXJzb3IpIHsKQEAgLTI0NzUsMTAgKzI0NjksOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAog
ICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICgh
dHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBnZW5lcmF0ZSBrZXkgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1w
cm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIp
OwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdl
bmVyYXRlIGtleSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMjUwNCwxMCAr
MjQ5Nyw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmV2ZXJ0R2VuZXJhdGVk
S2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAgQVNTRVJUKG1fc3FsaXRlREIt
PmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmV2
ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2Fj
dGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gYSByZWFkLW9u
bHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1MjUsMTAgKzI1MTcsOSBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElE
QlJlc291cmNlSQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRv
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVl
IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBp
ZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2Vu
ZXJhdG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp
b24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byB1
cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwog
ICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHVwZGF0
ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBA
IC0yNTUxLDEwICsyNTQyLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3QKICAgICBBU1NFUlQo
bV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5z
YWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0
ZW1wdCB0byBvcGVuIGEgY3Vyc29yIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIG9wZW4gYSBjdXJzb3IgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8qIGN1cnNvciA9IHRyYW5zYWN0aW9u
LT5tYXliZU9wZW5DdXJzb3IoaW5mbyk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTI1ODUsMTAg
KzI1NzQsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVDdXJzb3Io
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogCiAgICAgQVNTRVJUX1VOVVNFRCh0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvci0+dHJhbnNhY3Rpb24oKS0+dHJhbnNhY3Rpb25J
ZGVudGlmaWVyKCkgPT0gdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIGlmICghY3Vyc29y
LT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0aW9uKCktPmluUHJvZ3Jlc3MoKSkg
ewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gaXRlcmF0ZSBhIGN1cnNvciB3aXRob3V0
IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCFjdXJzb3ItPnRyYW5zYWN0
aW9uKCkgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKS0+aW5Qcm9ncmVzcygpKQogICAgICAgICBy
ZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGl0ZXJhdGUgYSBjdXJz
b3Igd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAg
IGF1dG8ga2V5ID0gZGF0YS5rZXlEYXRhOwogICAgIGF1dG8gcHJpbWFyeUtleSA9IGRhdGEucHJp
bWFyeUtleURhdGE7CkBAIC0yNjQzLDYgKzI2MzAsOCBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlKCkKIAogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSBkZWxldGluZyBmaWxlICclcycgb24g
ZGlzayIsIGRiRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAKKyAgICBJREJBY3Rpdml0eUNvdW50
ZXI6OkF1dG9Db3VudGVyIGF1dG9Db3VudGVyOworCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYkZp
bGVzOwogICAgIHsKICAgICAgICAgYm9vbCBlcnJvcmVkID0gdHJ1ZTsKQEAgLTI3MTgsNiArMjcw
NywxMiBAQCB2b2lkIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2xvc2VTUUxpdGVEQigpCiAgICAg
bV9zcWxpdGVEQiA9IG51bGxwdHI7CiB9CiAKK2Jvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpo
YXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVy
biBtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDU2YjUxN2MyYTYxMDc0NGJkZWYyMGUxODg5YzA2
MzFjMzBhYWZiNTguLmM3ZDU2ODQzYzdiYzczZTZlNzQ1MDdiNTMzNDk4OTU3YWNiZjYxZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoRm9yRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3Ry
aW5nJik7CiAKKyAgICBib29sIGhhc1RyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYpIGNvbnN0IGZpbmFsOwogcHJpdmF0ZToKICAgICBTdHJpbmcgZmlsZW5hbWVGb3JEYXRh
YmFzZU5hbWUoKSBjb25zdDsKICAgICBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggODhhYzJkOWQ5ZjYzMDU5OGRiZDU3MTk1ZjQ1
OWI0NGNlNDc1OWQ5OC4uNGI1NGQ5YzJkZjIzOWNmYmRlZDYxYmQwMGQ5MDkzY2NhY2FmNTJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0xNTY3LDEzICsxNTY3LDE0IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1JdGVyYXRlQ3Vyc29yKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uCiAgICAgcGVyZm9ybUdldFJlc3VsdENhbGxiYWNrKGNhbGxiYWNr
SWRlbnRpZmllciwgZXJyb3IsIHJlc3VsdCk7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2U6
OnByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlIHN0YXRlKQogewogICAgIGF1dG8gdGFrZW5U
cmFuc2FjdGlvbiA9IG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCkpOwogICAgIGlmICghdGFrZW5UcmFuc2FjdGlvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgQVNTRVJUKCFtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5jb250
YWlucyh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSk7CisgICAgdGFrZW5UcmFuc2Fj
dGlvbi0+c2V0U3RhdGUoc3RhdGUpOwogICAgIG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLnNldCh0
cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBXVEZNb3ZlKHRha2VuVHJhbnNhY3Rpb24p
KTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTYwMSw3ICsxNjAyLDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25BZnRlclF1b3RhQ2hlY2soVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2EKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgaWYg
KCFwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRpbmcpKSB7CiAgICAgICAgIGlmICghbV9vcGVu
RGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucygmdHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgY2xv
c2luZyBvciBoYXMgYWxyZWFkeSBjbG9zZWQsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluIG1lc3Nh
Z2luZyBiYWNrIHRvIGl0IGFib3V0IHRoZSBjb21taXQgZmFpbGluZy4KICAgICAgICAgICAgIGZv
cmdldEVycm9yQ2FsbGJhY2soY2FsbGJhY2tJRCk7CkBAIC0xNjI5LDcgKzE2MzAsMjMgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIExP
RyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRU
cmFuc2FjdGlvbiAtICVzIiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRp
ZmllciwgZXJyb3IpOworICAgIElEQkVycm9yIHJlc3VsdCA9IGVycm9yOworICAgIGF1dG8gdHJh
bnNhY3Rpb24gPSBtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlm
aWVyKTsKKyAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5zdGF0ZSgpKSB7CisgICAgY2FzZSBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZDoKKyAgICAgICAgcmVzdWx0
ID0gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJUcmFuc2FjdGlvbiBpcyBhbHJlYWR5IGFib3J0
ZWQiX3MgfTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGVkOgorICAgICAgICByZXN1bHQgPSB0cmFuc2FjdGlvbi0+
cmVzdWx0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRpbmc6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OlJ1bm5pbmc6CisgICAgY2FzZSBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRpbmc6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxi
YWNrSWRlbnRpZmllciwgcmVzdWx0KTsKIAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKG1fZmlu
aXNoaW5nVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiB9CkBAIC0x
NjU2LDcgKzE2NzMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgIGlmICghY2FsbGJh
Y2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICBpZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRp
bmcpKSB7CiAgICAgICAgIGlmICghbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucygm
dHJhbnNhY3Rpb24uZGF0YWJhc2VDb25uZWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGRhdGFiYXNlIGNvbm5lY3Rpb24gaXMgY2xvc2luZyBvciBoYXMgYWxyZWFkeSBjbG9zZWQsIHNv
IHRoZXJlIGlzIG5vIHBvaW50IGluIG1lc3NhZ2luZyBiYWNrIHRvIGl0IGFib3V0IHRoZSBhYm9y
dCBmYWlsaW5nLgogICAgICAgICAgICAgZm9yZ2V0RXJyb3JDYWxsYmFjayhjYWxsYmFja0lEKTsK
QEAgLTE3MTMsNyArMTczMCw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1B
Ym9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwKICAgICAgICAgbV9k
YXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oKm1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uLT5vcmlnaW5hbERhdGFiYXNlSW5mbygpKTsKICAgICB9CiAKLSAg
ICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVycm9yKTsKKyAgICBJ
REJFcnJvciByZXN1bHQgPSB0cmFuc2FjdGlvbi0+c3RhdGUoKSA9PSBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZCA/IHRyYW5zYWN0aW9uLT5yZXN1bHQoKSA6IGVy
cm9yOworICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgcmVzdWx0
KTsKIAogICAgIHRyYW5zYWN0aW9uQ29tcGxldGVkKFdURk1vdmUodHJhbnNhY3Rpb24pKTsKIH0K
QEAgLTIyNzcsNiArMjI5NSw0NyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzZXRRdW90YSh1
aW50NjRfdCBxdW90YSkKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPnNldFF1b3RhKHF1b3RhKTsK
IH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVh
ZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICB0cmFu
c2FjdGlvbi5zZXRSZXN1bHQobV9iYWNraW5nU3RvcmUtPmFib3J0VHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOworICAgIHRyYW5zYWN0aW9uLnNldFN0YXRlKFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkKTsKK30KKwordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgdHJhbnNhY3Rpb24uc2V0
UmVzdWx0KG1fYmFja2luZ1N0b3JlLT5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5pbmZv
KCkuaWRlbnRpZmllcigpKSk7CisgICAgdHJhbnNhY3Rpb24uc2V0U3RhdGUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRlZCk7Cit9CisKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucygpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3Rvciht
X2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMua2V5cygpKSkgeworICAgICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAg
YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rpb24pOworICAgIH0KKworICAg
IGZvciAoYXV0byYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2ZpbmlzaGluZ1RyYW5zYWN0
aW9ucy5rZXlzKCkpKSB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmhhc1RyYW5zYWN0
aW9uKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAg
ICAgICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+c3RhdGUoKSkgeworICAgICAgICBjYXNlIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGluZzoKKyAgICAgICAgICAgIGFi
b3J0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpD
b21taXR0aW5nOgorICAgICAgICAgICAgY29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRy
YW5zYWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpSdW5uaW5nOgorICAgICAgICBjYXNlIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkOgorICAgICAgICBjYXNlIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmgKaW5kZXggZTNhN2IxYjFjZTUyNGM5MjJlMmVkOTAyNTQxOTcwODNlMmM5YmQyNi4uYjMwMmYw
M2Q4MjFkZGQ5ZGM0ODllNGJkYTZiNWY5NWVlZjRjYTM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmgKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFF1b3RhKHVpbnQ2
NF90KTsKIAorICAgIHZvaWQgZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKCk7CisKIHByaXZhdGU6
CiAgICAgdm9pZCBoYW5kbGVEYXRhYmFzZU9wZXJhdGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZUN1
cnJlbnRPcGVyYXRpb24oKTsKQEAgLTIzNyw3ICsyMzksOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVkKCk7CiAgICAgUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24+IHRha2VOZXh0UnVubmFibGVUcmFuc2FjdGlvbihib29sJiBo
YWREZWZlcnJlZFRyYW5zYWN0aW9ucyk7CiAKLSAgICBib29sIHByZXBhcmVUb0ZpbmlzaFRyYW5z
YWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICBib29sIHByZXBhcmVU
b0ZpbmlzaFRyYW5zYWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZSk7CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9u
T25NYWluVGhyZWFkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAgICB2b2lkIGNv
bW1pdFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24m
KTsKICAgICAKICAgICB2b2lkIGNsZWFyU3RhbGVQZW5kaW5nT3BlbkRCUmVxdWVzdHMoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggNGYzYzIwMTUy
ODZmMjIxODczYmNmMjIzZWM0MTRhZTM0MDExMzg4OC4uMDM0MjI2YjE0ZTI1ZDY1NzRlYTU5M2Vh
MmEyMThhZDg5NWJkNjZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oCkBAIC01Niw2ICs1Niw4IEBAIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bjsKIAogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHsKIHB1YmxpYzoKKyAgICBlbnVtIGNs
YXNzIFN0YXRlIHsgUnVubmluZywgQWJvcnRpbmcsIENvbW1pdHRpbmcsIEFib3J0ZWQsIENvbW1p
dHRlZCB9OworCiAgICAgc3RhdGljIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBj
cmVhdGUoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJik7CiAKICAgICB+VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbigpOwpAQCAtOTAsNiAr
OTIsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJZGVudGlmaWVycygpOwogCisgICAgdm9pZCBzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkgeyBtX3N0
YXRlID0gc3RhdGU7IH0KKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7
IH0KKyAgICB2b2lkIHNldFJlc3VsdChjb25zdCBJREJFcnJvciYgZXJyb3IpIHsgbV9yZXN1bHQg
PSBlcnJvcjsgfQorICAgIGNvbnN0IElEQkVycm9yJiByZXN1bHQoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdDsgfQorCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7
CiAKQEAgLTEwMCw2ICsxMDcsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJE
YXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAKICAgICBWZWN0b3I8dWludDY0
X3Q+IG1fb2JqZWN0U3RvcmVJZGVudGlmaWVyczsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0
ZTo6UnVubmluZyB9OworICAgIElEQkVycm9yIG1fcmVzdWx0OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcAppbmRleCA3NzBkMWExYjE0ZDRjMjBjNDE0
NjEyODNlNmMyNDFkNTkxODVkNmNmLi5hY2ZhNzg4Yzg2YmM5MWI4YjA3M2E2ZDViM2Q1NTE1Nzcy
NzIzY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVD
b21wdXRlUGFzc0VuY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oIgogI2luY2x1ZGUgIkdQVVByb2dyYW1tYWJsZVBh
c3NFbmNvZGVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbXB1
dGVQaXBlbGluZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDMw
OWJhNDdhZTBjYTBkOGRhZjhjMmFkZjhkNzFhMDRmOWNjZWFmMjUuLmM1NDNjNTBlMjQxNTIyOWE2
ZmIzYTdhYjAwNmNiMjNjYzZkOTRlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDAsNiArMTAwLDcg
QEAgTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCiBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCiAKK01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcmlhbGl6YXRpb24uY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDFlNWNmOWQwZTU3MzMxZjg4ZDExOTIwYTM0ZDVkZDc5ZmFiZDE0NjguLmUxN2Q4NDNh
ODY4ODBhMTllOGE0YzdmNTA3MjVjNjVhMDhiMTljN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5ODUsNiArMzk4NSw3IEBA
CiAJCUM5RDQ2NzA1MUU2MEM0NjUwMDgxOTVGQiAvKiBBdXRvcGxheUV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUQ0NjcwNDFFNjBDM0VCMDA4
MTk1RkIgLyogQXV0b3BsYXlFdmVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUM5RDg1MUYwMUIzOURDNzgwMDg1MDYyRSAvKiBNZWRpYVNlc3Np
b25NZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzlEODUxRUUxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFkYXRhLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzlGODdDRkUx
QjI4RjQwRTAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8q
IE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNBMjg3OUUxMjI2RTcxMDQwMDEwMjZGNSAvKiBJREJBY3Rpdml0eUNv
dW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENB
Mjg3OUREMjI2RTcwQzkwMDEwMjZGNSAvKiBJREJBY3Rpdml0eUNvdW50ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDQTNCRjY3RTEwRDk5QkFF
MDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENBM0JGNjdEMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmlt
YXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUNBNkMxNTMwMjIwQjk4Q0MwMDU1Q0JGQyAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFBRTNCODFGQjgw
RUFFMDBGNUVGQjIgLyogSlNWYWx1ZUluV3JhcHBlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVC
MCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDQUU5RjkwRTE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5oICovOyB9OwpAQCAtMTM0MDUsNiArMTM0MDYsOCBAQAogCQlDOURBREJDQTFCMUQz
QjI1MDAxRjE3RDggLyogSlNNZWRpYVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNZWRpYVNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzlGODdDRkQxQjI4RTVGNjAwOTc5QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1lZGlhU2Vzc2lvbkV2ZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTE2MzVEQzIwNzJFNzY5MDBFN0QyQ0UgLyogUmVmZXJyZXJQb2xpY3kuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmZXJyZXJQb2xpY3kuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlERDIyNkU3MEM5MDAxMDI2RjUgLyogSURCQWN0
aXZpdHlDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkFjdGl2
aXR5Q291bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlERjIyNkU3
MEQxMDAxMDI2RjUgLyogSURCQWN0aXZpdHlDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElEQkFjdGl2aXR5Q291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNBM0JGNjdCMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmltYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBM0JGNjdEMTBEOTlCQUUwMEU2
Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JvbGxBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTZDMTUy
RjIyMEI0QTU1MDA1NUNCRkMgLyogSlNJREJSZXF1ZXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCUmVxdWVzdEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ2NSw2ICsxODQ2OCw4IEBACiAJCTUxMEE1OEVFMUJB
QjcxRTAwMEMxOTI4MiAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUNBMjg3OURGMjI2RTcwRDEwMDEwMjZGNSAvKiBJREJBY3Rpdml0eUNv
dW50ZXIuY3BwICovLAorCQkJCUNBMjg3OUREMjI2RTcwQzkwMDEwMjZGNSAvKiBJREJBY3Rpdml0
eUNvdW50ZXIuaCAqLywKIAkJCQk1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2lu
Z1N0b3JlLmggKi8sCiAJCQkJNTE2RDdENkQxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHAgKi8sCiAJCQkJNTEwQTU4RkUxQkIwN0FBNTAwQzE5MjgyIC8qIElEQkNv
bm5lY3Rpb25Ub0NsaWVudC5oICovLApAQCAtMjkyOTUsNiArMjkzMDAsNyBAQAogCQkJCUIyNzUz
NTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJY29uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNGMTQ1
NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3
MTRFQTgxQ0Y0RTRCMTAwNDcyM0M0IC8qIElEQkFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0EyODc5RTEyMjZFNzEwNDAwMTAyNkY1IC8qIElEQkFjdGl2aXR5Q291bnRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4NUE2NjMxMUQ0RkFDNTAwNEMzRTRCIC8q
IElEQkJpbmRpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0IyNUFBMUNDODJC
MkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmYWJj
OWVhYTQ1NGNhYTdkMWI2ZGIzNTYzNjc0ZGI5ZjJlY2M4MjQ3Li40MTE1ZTliMTg0MzA1ZDJmM2Iz
ZjcyZGI2YzY0ODk5NzZiNWI4NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTM1LDYgKzEzNSwxMSBAQCBOZXR3b3JrUHJvY2Vz
czo6TmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3dlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlcigqdGhpcykKICNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgICwgbV9pZGJBY3Rpdml0eUNvdW50ZXJPYnNl
cnZlcihbdGhpc10oUEFMOjpIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
U2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoc3RhdGUgPT0gUEFMOjpIeXN0
ZXJlc2lzU3RhdGU6OlN0YXJ0ZWQpLCAwKTsKKyAgICB9KQorI2VuZGlmCiB7CiAgICAgTmV0d29y
a1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKIApAQCAtMTk5NSw2ICsy
MDAwLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hv
dWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2
ZXJzLnZhbHVlcygpKQorICAgICAgICBzZXJ2ZXItPnRyeVN0b3AoSURCU2VydmVyOjpTaG91bGRG
b3JjZVN0b3A6Olllcyk7CisjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3Vs
ZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpObyk7CiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiB9CkBAIC0yMDAyLDYgKzIwMTEsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKQogewogICAgIFJFTEVB
U0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZCgpIiwgdGhpcyk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2VydmVycy52
YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT50cnlTdG9wKElEQlNlcnZlcjo6U2hvdWxkRm9yY2VT
dG9wOjpObyk7CisjZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25v
d2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOjpZZXMpOwogfQogCkBAIC0yMDQxLDYgKzIwNTUsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygpKQorICAg
ICAgICBzZXJ2ZXItPnJlc3VtZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZDIzNGJlMzk1MWMxMDNmNGYwNjEz
NmUyM2JkZmM5ZmViODJlYmNhOC4uNzFiMjRjZjY4MmM1ZWE4ZDJjZDNiZTY1ZDkyYjliN2E0MTky
ZmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtNTYsNiArNTYsMTAgQEAKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisjaW5jbHVkZSA8V2ViQ29yZS9JREJBY3Rpdml0eUNvdW50ZXIuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB0eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29r
aWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKICNlbmRpZgpAQCAtNTE0LDYgKzUx
OCwxMCBAQCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVy
OjpDb3VudGVyT2JzZXJ2ZXIgbV9pZGJBY3Rpdml0eUNvdW50ZXJPYnNlcnZlcjsKKyNlbmRpZgor
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9zdG9yYWdlVGFza1F1ZXVlIHsgV29ya1F1ZXVlOjpjcmVh
dGUoImNvbS5hcHBsZS5XZWJLaXQuU3RvcmFnZVRhc2siKSB9OwogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMzQ0ZDE2MzgyNzM1YjBiNjgzYzY5NmY5
YjY2MjY3MTA3MWQ4NDY0Li4wN2NhMTZkOGRhYTc1MzExOWE1ODYyNzY4NGFhY2I3YTZiNTRhZmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEwNjAsNiArMTA2MCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmls
ZXMpCiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElzSW5kZXhlZERh
dGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9j
a2VkRmlsZXMpCit7CisgICAgaWYgKCFpc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxl
cykgeworICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlVJUHJvY2VzcyBp
cyByZWxlYXNpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIEluZGV4ZWREYXRhYmFz
ZXMgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcyBpcyBubyBsb25nZXIgaG9sZGluZyBsb2NrZWQgZmls
ZXMiKTsKKyAgICAgICAgbV90b2tlbkZvckluZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxl
cyA9IG51bGxwdHI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFtX3Rva2VuRm9y
SW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSB7CisgICAgICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNz
ZXJ0aW9uIGJlY2F1c2UgSW5kZXhlZERhdGFiYXNlcyBpbiB0aGUgTmV0d29yayBwcm9jZXNzIGlz
IGhvbGRpbmcgbG9ja2VkIGZpbGVzIik7CisgICAgICAgIG1fdG9rZW5Gb3JJbmRleGVkRGF0YWJh
c2VIb2xkaW5nTG9ja2VkRmlsZXMgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpOworICAgIH0KK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzeW5jQWxsQ29va2ll
cygpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNBbGxDb29raWVz
KCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCBmY2IyYjc4YjQ1ZGM1NzJjMzc4ODNlOGU2YTgwZmJiZjhk
YjFhNmMzLi44MmFiMjg5MmE2ZTMxYmQ0MmZhZGI2MjRkZmQ5OWMxNWIwOThlNmU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bnRoZXNpemVBcHBJ
c0JhY2tncm91bmQoYm9vbCBiYWNrZ3JvdW5kKTsKIAogICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9j
a2VkRmlsZXMoYm9vbCk7CisgICAgdm9pZCBzZXRJc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sKTsKIAogICAgIHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAgICB2b2lkIGRp
ZFN5bmNBbGxDb29raWVzKCk7CkBAIC0yNTksNiArMjYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlczsKKyAg
ICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySW5k
ZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzOwogICAgIFByb2Nlc3NUaHJvdHRsZXI6OkJh
Y2tncm91bmRBY3Rpdml0eVRva2VuIG1fc3luY0FsbENvb2tpZXNUb2tlbjsKICAgICAKICAgICB1
bnNpZ25lZCBtX3N5bmNBbGxDb29raWVzQ291bnRlciB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBiZTk4ZTY2NjMwZmFkNzkwNjEwOTIwY2VmODUyNzVkYzk3YWQxZjFk
Li4xYzg3MzI4YjIwMWFkYzY4ODNjMDA0ZjdkNzg1YTJiNmNiNDE0MDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMyw2ICszMyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgUHJvY2Vzc1JlYWR5VG9TdXNwZW5k
KCkKICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVz
KQorICAgIFNldElzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNJbmRl
eGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2Fn
ZXMgbG9nZ2luZwogICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggZDY4Yzc4NGI0ZTc1ODhhNmY1YjVhMDNkZmRhZmYzOGRmNWMxMGNi
NS4uMzZhNjg0OTM4NWIxY2E3NzdiODk0Mzc0ZjI3ZDUwZTdjNmY3YTg3ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE5LTA0LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFN0
b3AgSURCIHRyYW5zYWN0aW9ucyB0byByZWxlYXNlIGxvY2tlZCBkYXRhYmFzZSBmaWxlcyB3aGVu
IG5ldHdvcmsgcHJvY2VzcyBpcyByZWFkeSB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ4OTMwMTE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVk
REJTdXNwZW5kSW1taW5lbnRseS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciB1c2Vy
Q29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgIChy
dW5UZXN0QW5kQ2hlY2tSZXN1bHQpOgorICAgICAgICAoa2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZl
KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA0LTIzICBTdGVwaGFuIFN6YWJvICA8c3RlcGhh
bi5zemFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIFN1cHBvcnQgcnVubmlu
ZyBvZiBKU0MgdGVzdHMgb24gcmVtb3RlIHBsYXlzdGF0aW9uIGRldmljZXMKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjMyOTY2NTc2OGU2YzA5YWI3N2RhOTc0NWZlMzhkNDdiMzhmZmE3Yi4u
ZTk2NjBmMTZmZDExMzY3M2ZiZGYxYzJmNGM2MDllNDA2YmY0NGFkOSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc4MSw2ICs3ODEsOCBAQAogCQlDOUM5Q0Q0MzIxRTZBNjg2MDAxOURCOTYg
LyogYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUM5Q0Q0MjIxRTZBNjY3
MDAxOURCOTYgLyogYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCAqLzsg
fTsKIAkJQzlFNkREMzUxRUE5N0QwODAwREQ3OEFBIC8qIEZpcnN0UmVzcG9uZGVyU3VwcHJlc3Np
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUU2
REQzMTFFQTk3MkQ4MDBERDc4QUEgLyogRmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbi5tbSAqLzsg
fTsKIAkJQzlFOEVFNzUyMURFRDk0MzAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlFOEVFNzQyMURF
RDkxRTAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgKi87IH07CisJCUNBMjg3OURCMjI2RTY5QTUw
MDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBMjg3OURBMjI2RTY5ODYwMDEwMjZGNSAv
KiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSAqLzsgfTsKKwkJQ0EyODc5REMyMjZFNjlC
NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EyODc5RDkyMjZFNjk3
ODAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgKi87IH07CiAJCUNB
Mzg0NTk2MjBBRTE3QTkwMDk5MEQzQiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTM4NDU5NTIw
QUUwMTJFMDA5OTBEM0IgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tICovOyB9Owog
CQlDQTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
QTVCOTREMDIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAq
LzsgfTsKIAkJQ0E1Qjk0RDMyMTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6
ZS0yLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0y
Lmh0bWwgKi87IH07CkBAIC0xMTc1LDYgKzExNzcsNyBAQAogCQkJCTU3MUY3RkQwMUYyOTYxRkIw
MDk0NjY0OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHku
c3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc1OTlFMkExRjA3MUFBMDAw
QTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJl
YWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzU5OUUyQjFGMDcxQUEwMDBBM0ZC
OEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlDQTI4NzlEQzIyNkU2OUI2MDAxMDI2RjUg
LyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlDQTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDQTVCOTREMzIxOTBDMEY0MDA1OUZFMzgg
LyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDQTk3QjM5NTIxOTM2NjdBMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLApAQCAtMjEyOCw2ICsyMTMxLDggQEAKIAkJQzlDOUNENDIyMUU2
QTY2NzAwMTlEQjk2IC8qIGF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAiYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5RTZERDMxMUVBOTcyRDgwMERENzhBQSAvKiBG
aXJzdFJlc3BvbmRlclN1cHByZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlyc3RS
ZXNwb25kZXJTdXBwcmVzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlF
OEVFNzQyMURFRDkxRTAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImxvbmctdGVzdC5t
cDQiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlEOTIyNkU2OTc4MDAxMDI2
RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNBMjg3OURBMjI2RTY5ODYwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNw
ZW5kSW1taW5lbnRseS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDQTM4NDU5NTIwQUUwMTJFMDA5OTBEM0IgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTVC
OTREMDIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8q
IEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNTkyLDYgKzI1OTcsNyBAQAogCQkJCTUxQkNFRTQ5MUM4NEY0QUYwMDQyQzgyRSAv
KiBJbmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8sCiAJCQkJNTFCMUVFOEQxQzgwRjU4ODAwNjRG
Qjk4IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovLAogCQkJCTU3NTk5RTIwMUYwNzE5MTcw
MEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHku
bW0gKi8sCisJCQkJQ0EyODc5REEyMjZFNjk4NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJ
bW1pbmVudGx5Lm1tICovLAogCQkJCUNBNUI5NEQ2MjE5MTAwNUIwMDU5RkUzOCAvKiBJbmRleGVk
REJUZW1wRmlsZVNpemUubW0gKi8sCiAJCQkJQ0E5N0IzOTIyMTkzNjYzQjAwNDVERjZGIC8qIElu
ZGV4ZWREQlVzZXJEZWxldGUubW0gKi8sCiAJCQkJMEU0MDRBOEEyMTY2RERGODAwODI3MUJBIC8q
IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSAqLywKQEAgLTI5OTIs
NiArMjk5OCw3IEBACiAJCQkJNTcxRjdGQ0YxRjI5NjFFMTAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0
cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCAqLywKIAkJCQk1
NzU5OUUyNTFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5UmVhZC5odG1sICovLAogCQkJCTU3NTk5RTIzMUYwNzE5MkMwMEEzRkI4
QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5o
dG1sICovLAorCQkJCUNBMjg3OUQ5MjI2RTY5NzgwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseS5odG1sICovLAogCQkJCUNBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRl
eGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovLAogCQkJCUNBNUI5NEQxMjE5MEMwRTAwMDU5RkUz
OCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5odG1sICovLAogCQkJCUNBOTdCMzkzMjE5MzY2
NDcwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLmh0bWwgKi8sCkBAIC00MTcyLDYgKzQx
NzksNyBAQAogCQkJCTdDODNFMEJFMUQwQTY1MTMwMEZFQkNGMyAvKiBJbmRleGVkREJNdWx0aVBy
b2Nlc3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRjFEMEE2NTIyMDBGRUJDRjMgLyog
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzU5OUUyMTFGMDcx
OTE5MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmls
aXR5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0EyODc5REIyMjZFNjlBNTAwMTAyNkY1IC8qIElu
ZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDcy
MTkxMDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNBOTdCMzk0MjE5MzY2NjAwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5NUJERTExRTlCRUM1RjAwODY1NDk4IC8qIEluamVjdGVk
QnVuZGxlQXBwbGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHku
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3Vz
cGVuZEltbWluZW50bHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2Y2Y2QyZDZmZWMxMDU2YmFjODYzNTNl
YTFlYTM5ZmViMmM0Zjk2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sCkBAIC0wLDAg
KzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KKwordmFyIGRiOwordmFyIHNob3Vs
ZFNlbmRTdWNjZXNzTWVzc2FnZSA9IGZhbHNlOwordmFyIGhhc0Fib3J0ID0gZmFsc2U7Cit2YXIg
cmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkiKTsKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiQ29udGludWUi
KTsKKyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDsgaSsrKSB7CisgICAgICAgIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oIlRlc3RP
YmplY3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSB0cmFuc2Fj
dGlvbi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGZvciAobGV0IHRp
bWVzID0gMDsgdGltZXMgPCAxMDA7IHRpbWVzKyspCisgICAgICAgICAgICBvYmplY3RTdG9yZS5w
dXQoaSwgaSk7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSAoKT0+IHsKKyAgICAgICAg
ICAgIGlmICghaGFzQWJvcnQpIHsKKyAgICAgICAgICAgICAgICBoYXNBYm9ydCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkU2VuZFN1Y2Nlc3NNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVz
c2FnZSgiRXhwZWN0ZWQgQWJvcnQgRm9yIFN1c3BlbnNpb24iKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhh
bmRsZXIucG9zdE1lc3NhZ2UoIlVuZXhwZWN0ZWQgQWJvcnQiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gKCk9PiB7CisgICAgICAg
ICAgICBpZiAoc2hvdWxkU2VuZFN1Y2Nlc3NNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIkV4cGVj
dGVkIFN1Y2Nlc3MgQWZ0ZXIgUmVzdW1lIik7CisgICAgICAgICAgICAgICAgc2hvdWxkU2VuZFN1
Y2Nlc3NNZXNzYWdlID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIg
Y3JlYXRlUmVxdWVzdCA9IGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoIlRl
c3RPYmplY3RTdG9yZSIpOworICAgIGNyZWF0ZVJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKCJPYmplY3RTdG9yZSBFcnJvciIpOworICAgIH0KK30KKworcmVxdWVzdC5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiT3BlbiBFcnJvciIpOworfQorCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5k
ZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYjFh
NjM4NDNiMzU1MGU0NTIxZWI2NDNmOWU5ZGFkYjhkMjYyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lm1tCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVy
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7
CitzdGF0aWMgYm9vbCBpZGJBY2l0aXZpdGllc1N0YXJ0ZWQ7CitzdGF0aWMgUmV0YWluUHRyPFdL
U2NyaXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gSW5kZXhlZERCU3VzcGVuZEltbWlu
ZW50bHlNZXNzYWdlSGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNj
cmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBpZGJBY2l0aXZp
dGllc1N0YXJ0ZWQgPSB0cnVlOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7Cisg
ICAgbGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworfQorCitAZW5kCisKK3N0YXRpYyB2b2lk
IHJ1blRlc3RBbmRDaGVja1Jlc3VsdChOU1N0cmluZyogZXhwZWN0ZWRSZXN1bHQpCit7CisgICAg
cmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3Ry
aW5nID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIEVYUEVDVF9X
S19TVFJFUShleHBlY3RlZFJlc3VsdCwgc3RyaW5nLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQg
a2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCkKK3sKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dl
YnNpdGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBpZiAoIWlkYkFjaXRp
dml0aWVzU3RhcnRlZCkKKyAgICAgICAgICAgIGtlZXBOZXR3b3JrUHJvY2Vzc0FjdGl2ZSgpOwor
ICAgIH1dOworfQorCitURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkp
Cit7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWREQlN1c3BlbmRJbW1pbmVu
dGx5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5kZXhlZERCU3VzcGVuZElt
bWluZW50bHkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0
QVBJLnJlc291cmNlcyJdXTsKKyAgICBpZGJBY2l0aXZpdGllc1N0YXJ0ZWQgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIGtlZXBOZXR3b3JrUHJvY2Vz
c0FjdGl2ZSgpOworCisgICAgcnVuVGVzdEFuZENoZWNrUmVzdWx0KEAiQ29udGludWUiKTsKKwor
ICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9zZW5kTmV0d29ya1Byb2Nlc3NX
aWxsU3VzcGVuZEltbWluZW50bHldOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQ
b29sIF9zZW5kTmV0d29ya1Byb2Nlc3NEaWRSZXN1bWVdOworCisgICAgcnVuVGVzdEFuZENoZWNr
UmVzdWx0KEAiRXhwZWN0ZWQgQWJvcnQgRm9yIFN1c3BlbnNpb24iKTsKKyAgICBydW5UZXN0QW5k
Q2hlY2tSZXN1bHQoQCJFeHBlY3RlZCBTdWNjZXNzIEFmdGVyIFJlc3VtZSIpOworfQorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368128</attachid>
            <date>2019-04-24 08:51:35 -0700</date>
            <delta_ts>2019-04-24 11:14:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190424085134.patch</filename>
            <type>text/plain</type>
            <size>75942</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjU4MjM0NzRmZDJkMjgzMzU4YTFiOTFkOTdhM2U0OGFhMGMyMzc0
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBzdXNw
ZW5kIHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMg
c3VzcGVuZGVkLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCk6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnN1c3BlbmRBbmRXYWl0KToKKyAgICAg
ICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBHZW5lcmljIG1lbW9yeUZvb3Rw
cmludCgpIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgYm1hbGxvYyBvbiBMaW51eApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhlMzJiYTllMDU0MWE1ZDFmMDE5Zjc4OWQ0OWY5YWZiMzE2ZWQxZDguLjdkZGU1YzVj
OTNlYTNlMjk4Nzk3OGE5Y2EyMjY3NmNmMjg2MDViNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MDMgQEAKKzIwMTktMDQtMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFiYXNlIGZp
bGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW50cm9kdWNlIElEQkFjdGl2aXR5Q291bnRlciB0byB0cmFjayBTUUxp
dGUgZGF0YWJhc2UgYWN0aXZpdGllcyBvZiBJbmRleGVkREIgdGhhdCBtYXkgaG9sZCBsb2NrZWQg
ZGF0YWJhc2UgCisgICAgICAgIGZpbGVzLiBJZiBJREJBY3Rpdml0eUNvdW50ZXIgaXMgbm90IDAg
YW5kIG5ldHdvcmsgcHJvY2VzcyBoYXMgdG8gc3VzcGVuZCwgYWN0aXZlIElEQiB0cmFuc2FjdGlv
bnMgbXVzdCBiZSAKKyAgICAgICAgZmluaXNoZWQgaW4gYmFja2luZyBzdG9yZSB0byByZWxlYXNl
IGxvY2tlZCBmaWxlcy4gCisKKyAgICAgICAgQVBJIHRlc3Q6IEluZGV4ZWREQi5JbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkFjdGl2aXR5Q291bnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZp
dHlDb3VudGVyOjpzZXRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNv
dW50ZXI6OmluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJBY3Rpdml0eUNvdW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpDb3VudGVyT2JzZXJ2ZXI6OkNvdW50ZXJP
YnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OkNvdW50ZXJP
YnNlcnZlcjo6Y291bnRlckluY3JlbWVudGVkVG8pOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0
aXZpdHlDb3VudGVyOjpDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJEZWNyZW1lbnRlZFRvKToKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaDog
QWRkZWQuIElEQkFjdGl2aXR5Q291bnRlciByZWNvcmRzIHRoZSBudW1iZXIgb2YgSURCIAorICAg
ICAgICBhY3Rpdml0aWVzIHRoYXQgbmVlZCB0byBob2xkIGxvY2tlZCBkYXRhYmFzZSBmaWxlcy4g
TmV0d29yayBwcm9jZXNzIHRyYWNrcyB0aGUgdXBkYXRlIG9mIHRoaXMgY291bnRlci4gV2hlbiB0
aGUgCisgICAgICAgIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgdG8gMSBvciBkZWNyZW1lbnRlZCB0
byAwLCBuZXR3b3JrIHByb2Nlc3Mgc2VuZHMgYSBtZXNzYWdlIHRvIFVJIHByb2Nlc3MgZm9yIHRh
a2luZyBvciAKKyAgICAgICAgcmVsZWFzZSBhIGJhY2tncm91bmQgYXNzZXJ0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRlcjo6QXV0b0NvdW50ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRlcjo6fkF1
dG9Db3VudGVyKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNr
aW5nU3RvcmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwOiBIYW5nIGRhdGFiYXNlIHRocmVhZCBhbmQgY2hlY2sgdGhlIHZhbHVlIG9mIElEQkFj
dGl2aXR5Q291bnRlci4gSWYgdGhpcyAKKyAgICAgICAgaXMgbm90IGEgaGFyZCBzdG9wIGFuZCBj
b3VudGVyIGlzIG5vdCAwLCB0aGlzIG1lYW5zIG5ldHdvcmsgcHJvY2VzcyB3aWxsIG9yIGFscmVh
ZHkgc2VuZHMgb3V0IGEgInRha2luZyAKKyAgICAgICAgYXNzZXJ0aW9uIiBtZXNhZ2UgYW5kIElE
QlNlcnZlciBzaG91bGQgYmUgcmVzdW1lZCBzb29uLiBUaGVyZWZvcmUsIHdlIGNhbiBjb250aW51
ZSBkYXRhYmFzZSBhY3Rpdml0aWVzIGJ5IAorICAgICAgICByZXN1bWluZyBkYXRhYmFzZSB0aHJl
YWQuIElmIHRoaXMgaXMgYSBoYXJkIHN0b3AsIElEQlNlcnZlciBoYXMgdG8gZmluaXNoIG9uZ29p
bmcgdHJhbnNhY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnRyeVN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlc3Vt
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdT
dG9yZS5jcHA6IEluY3JlbWVudCBvciBkZWNyZW1lbnQgY291bnRlciBhdCBwbGFjZXMgdGhhdCB0
b3VjaGVzCisgICAgICAgIGRhdGFiYXNlIGZpbGVzLiBBbHNvIHJlbW92ZSBzb21lIGVycm9yIGxv
Z3MgYWJvdXQgaGF2aW5nIG5vIG9uZ29pbmcgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugbm93IHRyYW5z
YWN0aW9ucyBtYXkgYmUgCisgICAgICAgIGFib3J0ZWQgb24gdGhlIG1haW4gdGhyZWFkIGluIHBy
ZXBhcmF0aW9uIGZvciBuZXR3b3JrIHByb2Nlc3Mgc3VzcGVuc2lvbi4KKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp+U1FMaXRlSURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpkYXRhYmFzZU5hbWVGcm9tRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmJlZ2luVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
T2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnJlbmFtZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjbGVhck9iamVjdFN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRl
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnJlbmFtZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRS
ZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsSW5kZXhSZWNvcmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRJbmRleFJlY29y
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRl
S2V5R2VuZXJhdG9yTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Omhh
c1RyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOiBXaGVuIFVuaXF1ZUlEQkRhdGFiYXNlIGlzIGFz
a2VkIHRvIGZpbmlzaCBvbmdvaW5nIAorICAgICAgICB0cmFuc2FjdGlvbnMsIGl0IGFib3J0cyBv
ciBjb21taXRzIHRoZW0gdGhyb3VnaCBTUUxpdGVJREJCYWNraW5nU3RvcmUgb24gdGhlIG1haW4g
dGhyZWFkLiBUaGlzIGlzIHNhZmUgYmVjYXVzZSAKKyAgICAgICAgZGF0YmFzZSB0aHJlYWQgc2hv
dWxkIGFscmVhZHkgYmUgaHVuZy4gVW5pcXVlSURCRGF0YWJhc2UgYWxzbyBtYXJrcyB0aG9zZSB0
cmFuc2FjdGlvbnMgYXMgY29tbWl0dGVkIG9yIGFib3J0ZWQsCisgICAgICAgIHNvIHdoZW4gZGF0
YWJhc2UgdGhyZWFkIGlzIHJlc3VtZWQgYW5kIHN1YnNlcXVlbnQgcmVxdWVzdHMgb24gdGhvc2Ug
dHJhbnNhY3Rpb25zIGFyZSBwcm9jZXNzZWQsIHByb3BlciBlcnJvciAKKyAgICAgICAgd2lsbCBi
ZSByZXR1cm5lZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90YUNoZWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBl
cmZvcm1Db21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJh
bnNhY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZmluaXNoQWN0aXZlVHJhbnNh
Y3Rpb25zKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmg6IEludHJvZHVjZSBzdGF0ZSBvZiB0cmFuc2FjdGlvbiB0byBo
ZWxwIGRlY2lkZSB3aGV0aGVyCisgICAgICAgIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHNob3VsZCBi
ZSBhYm9ydGVkIG9yIGNvbW1pdHRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6c2V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpzdGF0ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OnNldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OnJlc3VsdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDQtMjMg
IFJlbXkgRGVtYXJlc3QgIDxyZGVtYXJlc3RAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBsYXlv
dXQgaXNzdWVzIG9jY3VyaW5nIHdoZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4gbW9kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggZDM3ZDkyOTgwMTE2OTllMWIxOTQyYzZkMjgxOGU2ZGY4OWQ3ZDUxMi4uNjAxNGI0MTgy
MDdiOGZlOTI2OWVlNDMyOTBmN2MzYmUyODEzYTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAxOS0wNC0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAg
ICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmlsZXMg
d2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dElzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAxOS0wNC0yMyAgUmVt
eSBEZW1hcmVzdCAgPHJkZW1hcmVzdEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxheW91dCBp
c3N1ZXMgb2NjdXJpbmcgd2hlbiBlbnRlcmluZyBmdWxsIHNjcmVlbiBtb2RlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAppbmRleCBiMjRkZmNjOTQ4OGYzZjdhYTM2
NmRmMDQyYjQ2N2Q0M2Q2ZmU4MWE5Li40NWVjMDQxNzc5Y2Y4MmY2NzNiYjJmODk3N2E2MmQ5YWUz
M2IwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApAQCAt
NjgsOCArNjgsMjAgQEAgdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgp
CiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YXNrVGhyZWFkQ3JlYXRpb25Mb2NrKTsK
ICAgICB9CiAKLSAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpCisgICAgd2hpbGUg
KCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAgICAgIG1fdGFza1F1ZXVlLndhaXRGb3JN
ZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKKworICAgICAgICBMb2NrZXI8TG9jaz4gc2hvdWxkU3Vz
cGVuZExvY2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICAgICAgd2hpbGUgKG1fc2hvdWxk
U3VzcGVuZCkgeworICAgICAgICAgICAgbV9zdXNwZW5kZWRMb2NrLmxvY2soKTsKKyAgICAgICAg
ICAgIGlmICghbV9zdXNwZW5kZWQpIHsKKyAgICAgICAgICAgICAgICBtX3N1c3BlbmRlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgbV9zdXNwZW5kZWRDb25kaXRpb24ubm90aWZ5T25lKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBtX3N1c3BlbmRlZExvY2sudW5sb2NrKCk7CisgICAg
ICAgICAgICBtX3Nob3VsZFN1c3BlbmRDb25kaXRpb24ud2FpdChtX3Nob3VsZFN1c3BlbmRMb2Nr
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpo
YW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBAIC04Myw1ICs5NSwzNCBAQCB2b2lkIENy
b3NzVGhyZWFkVGFza0hhbmRsZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCkKICAg
ICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKIH0KIAordm9pZCBDcm9zc1RocmVhZFRhc2tIYW5k
bGVyOjpzdXNwZW5kQW5kV2FpdCgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9zaG91bGRTdXNwZW5kTG9jayk7Cisg
ICAgICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAgfQorCisgICAgLy8gUG9zdCBhbiBl
bXB0eSB0YXNrIHRvIGVuc3VyZSBkYXRhYmFzZSB0aHJlYWQga25vd3MgbV9zaG91bGRTdXNwZW5k
IGFuZCBzZXRzIG1fc3VzcGVuZGVkLgorICAgIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayhbXSgp
IHsgfSkpOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3N1c3BlbmRlZExvY2spOworICAg
IHdoaWxlICghbV9zdXNwZW5kZWQpCisgICAgICAgIG1fc3VzcGVuZGVkQ29uZGl0aW9uLndhaXQo
bV9zdXNwZW5kZWRMb2NrKTsKK30KKwordm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1
bWUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTG9ja2VyPExvY2s+IGxv
Y2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICBpZiAobV9zaG91bGRTdXNwZW5kKSB7Cisg
ICAgICAgIG1fc3VzcGVuZGVkTG9jay5sb2NrKCk7CisgICAgICAgIGlmIChtX3N1c3BlbmRlZCkK
KyAgICAgICAgICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7CisgICAgICAgIG1fc3VzcGVuZGVkTG9j
ay51bmxvY2soKTsKKyAgICAgICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7CisgICAgICAgIG1f
c2hvdWxkU3VzcGVuZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFu
ZGxlci5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCmluZGV4IDI2
M2IzZDAzNWVjYmZjMmY4YjQxN2E5ZjAyMDA4MzMzNjZkZWQ2ODEuLmYwNTQ2MDFjMjQ2NjFlNDI5
Y2Y4Yjk4ZGI4OTBlYmI1ZDkyMzM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3Nz
VGhyZWFkVGFza0hhbmRsZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tI
YW5kbGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJvdGVjdGVkOgogCiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHN1c3BlbmRBbmRXYWl0KCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzdW1lKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVUYXNrUmVwbGll
c09uTWFpblRocmVhZCgpOwpAQCAtNTMsNiArNTUsMTQgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1f
bWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVk
IHsgZmFsc2UgfTsKIAorICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kIHsgZmFsc2UgfTsKKyAgICBD
b25kaXRpb24gbV9zaG91bGRTdXNwZW5kQ29uZGl0aW9uOworICAgIExvY2sgbV9zaG91bGRTdXNw
ZW5kTG9jazsKKyAgICAKKyAgICBib29sIG1fc3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBDb25k
aXRpb24gbV9zdXNwZW5kZWRDb25kaXRpb247CisgICAgTG9jayBtX3N1c3BlbmRlZExvY2s7CisK
ICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUXVldWU7CiAgICAg
Q3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fdGFza1JlcGx5UXVldWU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFj
dGl2aXR5Q291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQWN0aXZpdHlDb3VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjUzYWE2YTg0OWM3YzEyYmM5
ODJjYzkwMmUxMDEyMWUzYTNjNDc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkFjdGl2aXR5Q291bnRlci5jcHAKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURC
QWN0aXZpdHlDb3VudGVyLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIElE
QkFjdGl2aXR5Q291bnRlciB7CisKK3N0YXRpYyB1aW50NjRfdCBjb3VudDsKK3N0YXRpYyBMb2Nr
IGNvdW50TXV0ZXg7CitzdGF0aWMgQ291bnRlck9ic2VydmVyKiBjb3VudE9ic2VydmVyOworCit2
b2lkIHNldE9ic2VydmVyKENvdW50ZXJPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc3RkOjps
b2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7CisgICAgQVNTRVJUKCFjb3VudE9ic2Vy
dmVyKTsKKyAgICBjb3VudE9ic2VydmVyID0gb2JzZXJ2ZXI7Cit9CisKK3ZvaWQgaW5jcmVtZW50
SURCQWN0aXZpdHlDb3VudGVyKCkKK3sKKyAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhj
b3VudE11dGV4KTsKKyAgICArK2NvdW50OworCisgICAgaWYgKCFjb3VudE9ic2VydmVyKQorICAg
ICAgICByZXR1cm47CisgICAgY291bnRPYnNlcnZlci0+Y291bnRlckluY3JlbWVudGVkVG8oY291
bnQpOworfQorCit2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpCit7CisgICAgc3Rk
Ojpsb2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7CisgICAgLS1jb3VudDsKKworICAg
IGlmICghY291bnRPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50T2JzZXJ2ZXIt
PmNvdW50ZXJEZWNyZW1lbnRlZFRvKGNvdW50KTsKK30KKwordWludDY0X3QgaWRiQWN0aXZpdHlD
b3VudCgpCit7CisgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2soY291bnRNdXRleCk7Cisg
ICAgcmV0dXJuIGNvdW50OworfQorCitDb3VudGVyT2JzZXJ2ZXI6OkNvdW50ZXJPYnNlcnZlcihX
VEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYmIGh5c3RlcmVzaXNVcGRh
dGVGdW5jdGlvbikKKyAgICA6IG1faHlzdGVyZXNpcyhXVEZNb3ZlKGh5c3RlcmVzaXNVcGRhdGVG
dW5jdGlvbikpCit7CisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpzZXRPYnNlcnZlcih0aGlzKTsK
K30KKwordm9pZCBDb3VudGVyT2JzZXJ2ZXI6OmNvdW50ZXJJbmNyZW1lbnRlZFRvKHVpbnQ2NF90
IGNvdW50KQoreworICAgIGlmIChjb3VudCAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdGFydCgpOwor
ICAgIH0pOworfQorCit2b2lkIENvdW50ZXJPYnNlcnZlcjo6Y291bnRlckRlY3JlbWVudGVkVG8o
dWludDY0X3QgY291bnQpCit7CisgICAgaWYgKGNvdW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIG1faHlzdGVyZXNpcy5zdG9wKCk7
CisgICAgfSk7Cit9CisKK30gLy8gSURCQWN0aXZpdHlDb3VudGVyCit9IC8vIFdlYkNvcmUKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJBY3Rpdml0eUNvdW50ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMzU3OGUyM2UyNGU0Mzc3MTYxZjEzODg4NzliYmVkNjNkMTQ0MmI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkFjdGl2aXR5Q291bnRlci5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8cGFsL0h5
c3RlcmVzaXNBY3Rpdml0eS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBJ
REJBY3Rpdml0eUNvdW50ZXIgeworCitjbGFzcyBDb3VudGVyT2JzZXJ2ZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IENvdW50ZXJPYnNlcnZlcihXVEY6OkZ1bmN0aW9u
PHZvaWQoUEFMOjpIeXN0ZXJlc2lzU3RhdGUpPiYmKTsKKyAgICB2b2lkIGNvdW50ZXJJbmNyZW1l
bnRlZFRvKHVpbnQ2NF90KTsKKyAgICB2b2lkIGNvdW50ZXJEZWNyZW1lbnRlZFRvKHVpbnQ2NF90
KTsKK3ByaXZhdGU6CisgICAgUEFMOjpIeXN0ZXJlc2lzQWN0aXZpdHkgbV9oeXN0ZXJlc2lzOwor
fTsKKworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRPYnNlcnZlcihDb3VudGVyT2JzZXJ2ZXIqKTsK
K1dFQkNPUkVfRVhQT1JUIHZvaWQgaW5jcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworV0VCQ09SRV9F
WFBPUlQgdWludDY0X3QgaWRiQWN0aXZpdHlDb3VudCgpOworCitjbGFzcyBBdXRvQ291bnRlciB7
CitwdWJsaWM6CisgICAgQXV0b0NvdW50ZXIoKQorICAgIHsKKyAgICAgICAgSURCQWN0aXZpdHlD
b3VudGVyOjppbmNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKyAgICB9CisgICAgfkF1dG9D
b3VudGVyKCkKKyAgICB7CisgICAgICAgIElEQkFjdGl2aXR5Q291bnRlcjo6ZGVjcmVtZW50SURC
QWN0aXZpdHlDb3VudGVyKCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSURCQWN0aXZp
dHlDb3VudGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM2ZDdkNDNmOWViYWRkMjky
NDgwY2Y0ZWFjNDA3ODc1MTAwOWE0MDEuLjI5MWY3NmVkNWFjNWJiYjc3Yzg0ZGVmZjljMGM2Njc5
Yzc4YmEzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KSA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikgY29u
c3QgPSAwOwogcHJvdGVjdGVkOgogICAgIElEQkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFTRV9BU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNWJmNDdmMjE5MWM0ODNh
N2FkODA3Yzk2MDJlYjE5NjBiMDU2YjVlYi4uZjRkMzNhZTBkMWFmNTQ3MzE3ZjFkZmJkNDhkZDIz
NzJlMzEwNWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCQWN0aXZpdHlDb3VudGVyLmgiCiAjaW5j
bHVkZSAiSURCUmVxdWVzdERhdGEuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtODI4LDYgKzgyOSwzNiBAQCB2b2lkIElEQlNlcnZlcjo6dXBn
cmFkZUZpbGVzSWZOZWNlc3NhcnkoKQogICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobmV3VmVyc2lvbkRpcmVjdG9yeSk7CiB9CiAKK3ZvaWQgSURCU2VydmVyOjp0cnlTdG9w
KFNob3VsZEZvcmNlU3RvcCBzaG91bGRGb3JjZVN0b3ApCit7CisgICAgLy8gT25seSBzdG9wIG5v
bi1lcGhlbWVyYWwgSURCU2VydmVycyB0aGF0IGNhbiBob2xkIGxvY2tlZCBkYXRhYmFzZSBmaWxl
cy4KKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgc3VzcGVuZEFuZFdhaXQoKTsKKyAgICBhdXRvIHNxbGl0ZUlEQkFjdGl2aXR5Q291bnQg
PSBJREJBY3Rpdml0eUNvdW50ZXI6OmlkYkFjdGl2aXR5Q291bnQoKTsKKyAgICBpZiAoc2hvdWxk
Rm9yY2VTdG9wID09IFNob3VsZEZvcmNlU3RvcDo6Tm8pIHsKKyAgICAgICAgaWYgKHNxbGl0ZUlE
QkFjdGl2aXR5Q291bnQpCisgICAgICAgICAgICBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1
bWUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChzcWxpdGVJREJBY3Rpdml0
eUNvdW50KSB7CisgICAgICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX3VuaXF1ZUlEQkRhdGFi
YXNlTWFwLnZhbHVlcygpKQorICAgICAgICAgICAgZGF0YWJhc2UtPmZpbmlzaEFjdGl2ZVRyYW5z
YWN0aW9ucygpOworICAgIH0KKworICAgIEFTU0VSVCghSURCQWN0aXZpdHlDb3VudGVyOjppZGJB
Y3Rpdml0eUNvdW50KCkpOworfQorCit2b2lkIElEQlNlcnZlcjo6cmVzdW1lKCkKK3sKKyAgICBp
ZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ3Jv
c3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggMGI4NDY4N2YyN2NiMzU4
N2Q5ZGMzYTdmMjM2OTNhNjBmMjljNWRiYS4uNGQzMjhjNDgyMTU1NjRhMzIzMDQ5ZWQ2YjUzN2Ji
ZGJlMzdkYzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTgsNiArNTgsOCBAQCBjb25zdCB1aW50NjRfdCBkZWZh
dWx0UGVyT3JpZ2luUXVvdGEgPSA1MDAgKiBNQjsKIAogY2xhc3MgSURCQmFja2luZ1N0b3JlVGVt
cG9yYXJ5RmlsZUhhbmRsZXI7CiAKK2VudW0gY2xhc3MgU2hvdWxkRm9yY2VTdG9wIDogYm9vbCB7
IE5vLCBZZXMgfTsKKwogY2xhc3MgSURCU2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8SURCU2Vy
dmVyPiwgcHVibGljIENyb3NzVGhyZWFkVGFza0hhbmRsZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxJREJTZXJ2ZXI+IHsKIHB1YmxpYzoKICAgICB1c2luZyBRdW90YU1hbmFnZXJHZXR0ZXIgPSBX
VEY6OkZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXIqKFBBTDo6U2Vzc2lvbklELCBjb25zdCBD
bGllbnRPcmlnaW4mKT47CkBAIC0xMjQsNiArMTI2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBp
bml0aWFsaXplUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKSB7IGVuc3VyZVF1
b3RhVXNlcihvcmlnaW4pOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVN0b3AoU2hv
dWxkRm9yY2VTdG9wKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZSgpOworCiBwcml2
YXRlOgogICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURCQmFja2luZ1N0b3JlVGVtcG9y
YXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CiAgICAgSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgSURCQmFj
a2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggNjRlNmNjN2RlMGNhNjc2N2VjMThkNTE0
YmNhYWY0YmQ4YTU2MmM3Zi4uMTVmZTNjNDczOTk2YzZlNGYzN2U0ZjQzZmY1YTY1ZmNmNmZhM2Fm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtODUsNiArODUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1v
cnlPYmplY3RTdG9yZSYpOwogICAgIHZvaWQgcmVzdG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNo
YW5nZUFib3J0KFJlZjxNZW1vcnlPYmplY3RTdG9yZT4mJik7CiAKKyAgICBib29sIGhhc1RyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgaWRlbnRpZmllcikgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcik7IH0KKwogcHJp
dmF0ZToKICAgICBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHRha2VPYmplY3RTdG9yZUJ5SWRl
bnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcAppbmRleCA0ODlkZWQ0ZTNiZDcwNjFkYjgyMWNkNjlmYjQwMWM4NzEzNGRhYWE0Li44
MmM2YzZiNWQwNDViNDNmMDFjMDM5NjljYjU5YzFkNGU1YjJkMjI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJBY3Rpdml0eUNvdW50ZXIuaCIKICNpbmNsdWRl
ICJJREJCaW5kaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29ySW5mby5oIgogI2lu
Y2x1ZGUgIklEQkdldEFsbFJlY29yZHNEYXRhLmgiCkBAIC0yNDIsOCArMjQzLDEwIEBAIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6U1FMaXRlSURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYgaWRlbnRpCiAKIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6flNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZSgpCiB7Ci0gICAgaWYgKG1fc3FsaXRlREIpCisgICAgaWYgKG1fc3FsaXRlREIp
IHsKKyAgICAgICAgSURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRlciBhdXRvQ291bnRlcjsK
ICAgICAgICAgY2xvc2VTUUxpdGVEQigpOworICAgIH0KIAogICAgIGlmIChtX3ZtKSB7CiAgICAg
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV92bS5nZXQoKSk7CkBAIC03NzgsNiArNzgxLDggQEAg
U3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiAK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZyb21GaWxlKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogeworICAgIElEQkFjdGl2aXR5Q291bnRlcjo6QXV0b0Nv
dW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBTUUxpdGVEYXRhYmFzZSBkYXRhYmFzZTsKICAgICBp
ZiAoIWRhdGFiYXNlLm9wZW4oZGF0YWJhc2VQYXRoKSkgewogICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRoICclcycgd2hlbiBnZXR0aW5nIGRh
dGFiYXNlIG5hbWUiLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CkBAIC04MjMsNiArODI4
LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFi
YXNlSW5mbyhJREJEYXRhYmFzZUluZm8mIGluZm8KIAogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpBdXRvQ291bnRl
ciBhdXRvQ291bnRlcjsKKwogICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0
ZURhdGFiYXNlPigpOwogICAgIGlmICghbV9zcWxpdGVEQi0+b3BlbihkYkZpbGVuYW1lKSkgewog
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIFNRTGl0ZSBkYXRhYmFzZSBhdCBwYXRo
ICclcyciLCBkYkZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwpAQCAtOTI2LDEwICs5MzMsMTMgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElE
QlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkp
OwogICAgIEFTU0VSVChtX2RhdGFiYXNlSW5mbyk7CiAKKyAgICBJREJBY3Rpdml0eUNvdW50ZXI6
OmluY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworCiAgICAgbV9zcWxpdGVEQi0+c2V0TWF4
aW11bVNpemUobWF4aW11bVNpemUoKSk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3RyYW5zYWN0
aW9ucy5hZGQoaW5mby5pZGVudGlmaWVyKCksIG51bGxwdHIpOwogICAgIGlmICghYWRkUmVzdWx0
LmlzTmV3RW50cnkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGVzdGFibGlzaCB0
cmFuc2FjdGlvbiBpZGVudGlmaWVyIHRoYXQgYWxyZWFkeSBleGlzdHMiKTsKKyAgICAgICAgSURC
QWN0aXZpdHlDb3VudGVyOjpkZWNyZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBlc3RhYmxpc2ggdHJh
bnNhY3Rpb24gaWRlbnRpZmllciB0aGF0IGFscmVhZHkgZXhpc3RzIl9zIH07CiAgICAgfQogCkBA
IC05NTAsNiArOTYwLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpiZWdpblRy
YW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgfQogICAg
IH0KIAorICAgIGlmICghZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIElEQkFjdGl2aXR5Q291bnRl
cjo6ZGVjcmVtZW50SURCQWN0aXZpdHlDb3VudGVyKCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQog
CkBAIC05NjksNyArOTgxLDEwIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWJv
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGlkCiAgICAgaWYgKHRy
YW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlICYm
IG1fb3JpZ2luYWxEYXRhYmFzZUluZm9CZWZvcmVWZXJzaW9uQ2hhbmdlKQogICAgICAgICBtX2Rh
dGFiYXNlSW5mbyA9IFdURk1vdmUobV9vcmlnaW5hbERhdGFiYXNlSW5mb0JlZm9yZVZlcnNpb25D
aGFuZ2UpOwogCi0gICAgcmV0dXJuIHRyYW5zYWN0aW9uLT5hYm9ydCgpOworICAgIGF1dG8gcmVz
dWx0ID0gdHJhbnNhY3Rpb24tPmFib3J0KCk7CisgICAgSURCQWN0aXZpdHlDb3VudGVyOjpkZWNy
ZW1lbnRJREJBY3Rpdml0eUNvdW50ZXIoKTsKKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIElE
QkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQpAQCAtOTk0LDYgKzEwMDksOCBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgaQogICAgIH0gZWxzZQogICAgICAgICBtX29yaWdpbmFsRGF0YWJh
c2VJbmZvQmVmb3JlVmVyc2lvbkNoYW5nZSA9IG51bGxwdHI7CiAKKyAgICBJREJBY3Rpdml0eUNv
dW50ZXI6OmRlY3JlbWVudElEQkFjdGl2aXR5Q291bnRlcigpOworCiAgICAgcmV0dXJuIGVycm9y
OwogfQogCkBAIC0xMDA1LDEwICsxMDIyLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAg
ICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRy
YW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19F
UlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgp
ICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNo
YW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTEwNjEsMTAgKzEwNzcsOSBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBh
dXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZp
ZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUg
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSB3aXRo
b3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRy
YW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7
CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIGlu
IGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSBp
biBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTE1MywxMCArMTE2
OCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0U3RvcmUo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlz
T3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1l
IGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7Cisg
ICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUgYW4g
b2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAg
ICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBh
biBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byByZW5hbWUg
YW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07
CkBAIC0xMTg4LDEwICsxMjAyLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpj
bGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHIKICAgICBBU1NF
UlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0
aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigi
QXR0ZW1wdCB0byBjbGVhciBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblBy
b2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVt
cHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJU
cmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBjbGVhciBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjbGVhciBh
biBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTEyMjks
MTAgKzEyNDIsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIEFTU0VSVChtX3NxbGl0
ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IGNyZWF0ZSBhbiBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7Cisg
ICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4g
aW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwog
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lv
bmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4
IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IGluIGEg
bm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xNDIyLDEwICsxNDM0LDgg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVu
KCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgaW5k
ZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCBkdXJpbmcgYSBub24tdmVyc2lv
bi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKQEAgLTE0NzcsMTAgKzE0ODcsOCBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnJlbmFtZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhYwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJD
b3VsZCBub3QgcmVuYW1lIGluZGV4Il9zIH07CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5z
YWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byByZW5hbWUgYW4gaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9
OwotICAgIH0KIAogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9u
TW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVu
YW1lIGFuIGluZGV4IGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CkBAIC0x
NTE2LDEwICsxNTI0LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjprZXlFeGlz
dHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmkKICAgICBrZXlFeGlzdHMg
PSBmYWxzZTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gc2VlIGlm
IGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
c2VlIGlmIGtleSBleGlzdHMgaW4gb2JqZWN0c3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGtleUJ1
ZmZlciA9IHNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YSk7CiAgICAgaWYgKCFrZXlCdWZmZXIp
IHsKQEAgLTE2OTEsMTAgKzE2OTcsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OmRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhYwogICAgIEFT
U0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGRlbGV0ZSByYW5nZSBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3Is
ICJBdHRlbXB0IHRvIGRlbGV0ZSByYW5nZSBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1v
ZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBkZWxldGUgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJl
YWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGRlbGV0ZSByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlIGlu
IGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xODE0LDEwICsxODE5LDkgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBBU1NFUlQodmFsdWUuYmxvYlVSTHMoKS5zaXplKCkg
PT0gdmFsdWUuYmxvYkZpbGVQYXRocygpLnNpemUoKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICgh
dHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9H
X0VSUk9SKCJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSB3aXRo
b3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8
fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3Rv
cmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAg
IGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9ubHkp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9i
amVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFu
IG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTk4Mywx
MCArMTk4Nyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgQVNTRVJUKG1fc3FsaXRl
REItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJh
bnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
Z2V0IGEgcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
Z2V0IGEgcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0ga2V5UmFuZ2UubG93ZXJLZXk7CiAg
ICAgaWYgKGtleS5pc051bGwoKSkKQEAgLTIxNjAsMTAgKzIxNjIsOCBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmdldEFsbE9iamVjdFN0b3JlUmVjb3Jkcyhjb25zdCBJREJSZXNv
dXJjZUlkZW50aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRv
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCByZWNvcmRzIGZyb20gZGF0YWJhc2Ug
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0
byBrZXkgPSBnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEubG93ZXJLZXk7CiAgICAgaWYg
KGtleS5pc051bGwoKSkKQEAgLTIyNTYsMTAgKzIyNTYsOCBAQCBJREJFcnJvciBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmdldEFsbEluZGV4UmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZyb20gZGF0YWJh
c2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IGFsbCBpbmRleCByZWNvcmRzIGZy
b20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAg
IH0KIAogICAgIGF1dG8gY3Vyc29yID0gdHJhbnNhY3Rpb24tPm1heWJlT3BlbkJhY2tpbmdTdG9y
ZUN1cnNvcihnZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIsIGdldEFsbFJl
Y29yZHNEYXRhLmluZGV4SWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0RhdGEua2V5UmFuZ2VEYXRh
KTsKICAgICBpZiAoIWN1cnNvcikgewpAQCAtMjMwNiwxMCArMjMwNCw4IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1
dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkg
ewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZ2V0IGFuIGluZGV4IHJlY29yZCBmcm9t
IGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBhbiBpbmRleCByZWNv
cmQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
Ci0gICAgfQogCiAgICAgaWYgKHJhbmdlLmlzRXhhY3RseU9uZUtleSgpKQogICAgICAgICByZXR1
cm4gdW5jaGVja2VkR2V0SW5kZXhSZWNvcmRGb3JPbmVLZXkoaW5kZXhJRCwgb2JqZWN0U3RvcmVJ
RCwgdHlwZSwgcmFuZ2UubG93ZXJLZXksIGdldFJlc3VsdCk7CkBAIC0yNDEyLDEwICsyNDA4LDgg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW8KICAgICBvdXRDb3VudCA9IDA7CiAKICAgICBhdXRv
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
LSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBjb3VudCBmcm9tIGRhdGFiYXNlIHdpdGhv
dXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGN1
cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3Iob2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleElkZW50aWZpZXIsIHJhbmdlKTsKICAgICBpZiAoIWN1cnNvcikg
ewpAQCAtMjQ3NSwxMCArMjQ2OSw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNT
RVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gZ2VuZXJhdGUga2V5IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJB
dHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNz
IHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkg
PT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0
dGVtcHQgdG8gZ2VuZXJhdGUga2V5IGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2VuZXJhdGUg
a2V5IGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0yNTA0LDEwICsyNDk3LDkg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZXZlcnRHZW5lcmF0ZWRLZXlOdW1i
ZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGkKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVu
KCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZXZlcnQga2V5
IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5z
YWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0
byByZXZlcnQga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byByZXZlcnQga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFu
c2FjdGlvbiJfcyB9OwpAQCAtMjUyNSwxMCArMjUxNyw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3Vy
Y2VJCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0
YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJh
bnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3Ig
dmFsdWUgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9
OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
TW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHVwZGF0ZSBr
ZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAg
IHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBn
ZW5lcmF0b3IgdmFsdWUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1NTEs
MTAgKzI1NDIsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om9wZW5DdXJzb3Io
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdAogICAgIEFTU0VSVChtX3NxbGl0
ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25z
LmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IG9wZW4gYSBjdXJzb3IgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNz
KCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
b3BlbiBhIGN1cnNvciBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byogY3Vyc29yID0gdHJhbnNhY3Rpb24tPm1heWJl
T3BlbkN1cnNvcihpbmZvKTsKICAgICBpZiAoIWN1cnNvcikgewpAQCAtMjU4NSwxMCArMjU3NCw4
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAKICAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY3Vyc29yLT50cmFuc2FjdGlvbigpLT50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSA9PSB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogCi0gICAgaWYgKCFjdXJzb3ItPnRyYW5z
YWN0aW9uKCkgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKS0+aW5Qcm9ncmVzcygpKSB7Ci0gICAg
ICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBpdGVyYXRlIGEgY3Vyc29yIHdpdGhvdXQgYW4gaW4t
cHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIWN1cnNvci0+dHJhbnNhY3Rpb24oKSB8
fCAhY3Vyc29yLT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJ
REJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gaXRlcmF0ZSBhIGN1cnNvciB3aXRo
b3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBr
ZXkgPSBkYXRhLmtleURhdGE7CiAgICAgYXV0byBwcmltYXJ5S2V5ID0gZGF0YS5wcmltYXJ5S2V5
RGF0YTsKQEAgLTI2NDMsNiArMjYzMCw4IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVCYWNraW5nU3RvcmUoKQogCiAgICAgTE9HKEluZGV4ZWREQiwgIlNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6ZGVsZXRlQmFja2luZ1N0b3JlIGRlbGV0aW5nIGZpbGUgJyVzJyBvbiBkaXNrIiwg
ZGJGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKIAorICAgIElEQkFjdGl2aXR5Q291bnRlcjo6QXV0
b0NvdW50ZXIgYXV0b0NvdW50ZXI7CisKICAgICBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZXM7CiAg
ICAgewogICAgICAgICBib29sIGVycm9yZWQgPSB0cnVlOwpAQCAtMjcxOCw2ICsyNzA3LDEyIEBA
IHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjbG9zZVNRTGl0ZURCKCkKICAgICBtX3NxbGl0
ZURCID0gbnVsbHB0cjsKIH0KIAorYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Omhhc1RyYW5z
YWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
KSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fdHJh
bnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmgKaW5kZXggNTZiNTE3YzJhNjEwNzQ0YmRlZjIwZTE4ODljMDYzMWMzMGFh
ZmI1OC4uYzdkNTY4NDNjN2JjNzNlNmU3NDUwN2I1MzM0OTg5NTdhY2JmNjFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9T
UUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZU5hbWVGcm9tRmlsZShjb25zdCBTdHJpbmcmKTsK
IAorICAgIGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJikg
Y29uc3QgZmluYWw7CiBwcml2YXRlOgogICAgIFN0cmluZyBmaWxlbmFtZUZvckRhdGFiYXNlTmFt
ZSgpIGNvbnN0OwogICAgIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA4OGFjMmQ5ZDlmNjMwNTk4ZGJkNTcxOTVmNDU5YjQ0Y2U0
NzU5ZDk4Li40YjU0ZDljMmRmMjM5Y2ZiZGVkNjFiZDAwZDkwOTNjY2FjYWY1MmMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTE1NjcsMTMgKzE1NjcsMTQgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUGVyZm9ybUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyLCBjb24KICAgICBwZXJmb3JtR2V0UmVzdWx0Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvciwgcmVzdWx0KTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6cHJlcGFy
ZVRvRmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNh
Y3Rpb24pCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGUgc3RhdGUpCiB7CiAgICAgYXV0byB0YWtlblRyYW5zYWN0
aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlk
ZW50aWZpZXIoKSk7CiAgICAgaWYgKCF0YWtlblRyYW5zYWN0aW9uKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBBU1NFUlQoIW1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRy
YW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKKyAgICB0YWtlblRyYW5zYWN0aW9uLT5z
ZXRTdGF0ZShzdGF0ZSk7CiAgICAgbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0
aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIFdURk1vdmUodGFrZW5UcmFuc2FjdGlvbikpOwogCiAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xNjAxLDcgKzE2MDIsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjb21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYQogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFw
cmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICBpZiAoIXByZXBh
cmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGluZykpIHsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFz
ZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkp
IHsKICAgICAgICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nIG9y
IGhhcyBhbHJlYWR5IGNsb3NlZCwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gbWVzc2FnaW5nIGJh
Y2sgdG8gaXQgYWJvdXQgdGhlIGNvbW1pdCBmYWlsaW5nLgogICAgICAgICAgICAgZm9yZ2V0RXJy
b3JDYWxsYmFjayhjYWxsYmFja0lEKTsKQEAgLTE2MjksNyArMTYzMCwyMyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJh
Y2tJZGVudGlmaWVyLAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4
ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0
aW9uIC0gJXMiLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBl
cnJvcik7CisgICAgSURCRXJyb3IgcmVzdWx0ID0gZXJyb3I7CisgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwor
ICAgIHN3aXRjaCAodHJhbnNhY3Rpb24tPnN0YXRlKCkpIHsKKyAgICBjYXNlIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkOgorICAgICAgICByZXN1bHQgPSBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlRyYW5zYWN0aW9uIGlzIGFscmVhZHkgYWJvcnRlZCJfcyB9
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OlN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5yZXN1bHQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjpTdGF0ZTo6Q29tbWl0dGluZzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6UnVubmluZzoKKyAgICBjYXNlIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGluZzoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVu
dGlmaWVyLCByZXN1bHQpOwogCiAgICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQobV9maW5pc2hpbmdU
cmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KQEAgLTE2NTYsNyAr
MTY3Myw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb24oVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgaWYgKCFjYWxsYmFja0lEKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKSkgeworICAgIGlmICghcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGluZykpIHsK
ICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2Fj
dGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgZGF0YWJh
c2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nIG9yIGhhcyBhbHJlYWR5IGNsb3NlZCwgc28gdGhlcmUg
aXMgbm8gcG9pbnQgaW4gbWVzc2FnaW5nIGJhY2sgdG8gaXQgYWJvdXQgdGhlIGFib3J0IGZhaWxp
bmcuCiAgICAgICAgICAgICBmb3JnZXRFcnJvckNhbGxiYWNrKGNhbGxiYWNrSUQpOwpAQCAtMTcx
Myw3ICsxNzMwLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJh
bnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBtX2RhdGFiYXNl
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAotICAgIHBlcmZv
cm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworICAgIElEQkVycm9y
IHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDogZXJyb3I7Cisg
ICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1bHQpOwogCiAg
ICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQoV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogfQpAQCAtMjI3
Nyw2ICsyMjk1LDQ3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNldFF1b3RhKHVpbnQ2NF90
IHF1b3RhKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+c2V0UXVvdGEocXVvdGEpOwogfQogCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIHRyYW5zYWN0aW9u
LnNldFJlc3VsdChtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5p
bmZvKCkuaWRlbnRpZmllcigpKSk7CisgICAgdHJhbnNhY3Rpb24uc2V0U3RhdGUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQpOworfQorCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICB0cmFuc2FjdGlvbi5zZXRSZXN1bHQo
bV9iYWNraW5nU3RvcmUtPmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVu
dGlmaWVyKCkpKTsKKyAgICB0cmFuc2FjdGlvbi5zZXRTdGF0ZShVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGVkKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1faW5Qcm9n
cmVzc1RyYW5zYWN0aW9ucy5rZXlzKCkpKSB7CisgICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBt
X2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBhYm9ydFRy
YW5zYWN0aW9uT25NYWluVGhyZWFkKCp0cmFuc2FjdGlvbik7CisgICAgfQorCisgICAgZm9yIChh
dXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmtl
eXMoKSkpIHsKKyAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+aGFzVHJhbnNhY3Rpb24oaWRl
bnRpZmllcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBz
d2l0Y2ggKHRyYW5zYWN0aW9uLT5zdGF0ZSgpKSB7CisgICAgICAgIGNhc2UgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0aW5nOgorICAgICAgICAgICAgYWJvcnRUcmFu
c2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRp
bmc6CisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rp
b24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbjo6U3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIGNhc2UgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQ6CisgICAgICAgIGNhc2UgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRlZDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAppbmRl
eCBlM2E3YjFiMWNlNTI0YzkyMmUyZWQ5MDI1NDE5NzA4M2UyYzliZDI2Li5iMzAyZjAzZDgyMWRk
ZDlkYzQ4OWU0YmRhNmI1Zjk1ZWVmNGNhMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAt
MTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UXVvdGEodWludDY0X3QpOwog
CisgICAgdm9pZCBmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICB2
b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgaGFuZGxlQ3VycmVudE9w
ZXJhdGlvbigpOwpAQCAtMjM3LDcgKzIzOSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBvcGVyYXRp
b25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQoKTsKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gdGFrZU5leHRSdW5uYWJsZVRyYW5zYWN0aW9uKGJvb2wmIGhhZERlZmVy
cmVkVHJhbnNhY3Rpb25zKTsKIAotICAgIGJvb2wgcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24o
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIGJvb2wgcHJlcGFyZVRvRmluaXNo
VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OlN0YXRlKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rpb25Pbk1haW5U
aHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIHZvaWQgY29tbWl0VHJh
bnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOwogICAg
IAogICAgIHZvaWQgY2xlYXJTdGFsZVBlbmRpbmdPcGVuREJSZXF1ZXN0cygpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA0ZjNjMjAxNTI4NmYyMjE4
NzNiY2YyMjNlYzQxNGFlMzQwMTEzODg4Li4wMzQyMjZiMTRlMjVkNjU3NGVhNTkzZWEyYTIxOGFk
ODk1YmQ2NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgK
QEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOwogCiBj
bGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgorICAgIGVudW0gY2xhc3MgU3Rh
dGUgeyBSdW5uaW5nLCBBYm9ydGluZywgQ29tbWl0dGluZywgQWJvcnRlZCwgQ29tbWl0dGVkIH07
CisKICAgICBzdGF0aWMgUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IGNyZWF0ZShV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsK
IAogICAgIH5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKCk7CkBAIC05MCw2ICs5MiwxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvYmplY3RTdG9yZUlkZW50
aWZpZXJzKCk7CiAKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHN0YXRlKSB7IG1fc3RhdGUgPSBz
dGF0ZTsgfQorICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQorICAg
IHZvaWQgc2V0UmVzdWx0KGNvbnN0IElEQkVycm9yJiBlcnJvcikgeyBtX3Jlc3VsdCA9IGVycm9y
OyB9CisgICAgY29uc3QgSURCRXJyb3ImIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
OyB9CisKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKTsKIApAQCAt
MTAwLDYgKzEwNyw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNl
SW5mbz4gbV9vcmlnaW5hbERhdGFiYXNlSW5mbzsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9v
YmplY3RTdG9yZUlkZW50aWZpZXJzOworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSdW5u
aW5nIH07CisgICAgSURCRXJyb3IgbV9yZXN1bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNv
bXB1dGVQYXNzRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuY3BwCmluZGV4IDc3MGQxYTFiMTRkNGMyMGM0MTQ2MTI4M2U2
YzI0MWQ1OTE4NWQ2Y2YuLmFjZmE3ODhjODZiYzkxYjhiMDczYTZkNWIzZDU1MTU3NzI3MjNjY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQVUNvbXB1dGVQ
YXNzRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR1BV
Q29tcHV0ZVBhc3NFbmNvZGVyLmgiCiAjaW5jbHVkZSAiR1BVUHJvZ3JhbW1hYmxlUGFzc0VuY29k
ZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMzA5YmE0N2Fl
MGNhMGQ4ZGFmOGMyYWRmOGQ3MWEwNGY5Y2NlYWYyNS4uYzU0M2M1MGUyNDE1MjI5YTZmYjNhN2Fi
MDA2Y2IyM2NjNmQ5NGU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEwMCw2ICsxMDAsNyBAQCBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKIAorTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkFjdGl2aXR5Q291bnRlci5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJD
b25uZWN0aW9uVG9DbGllbnQuY3BwCiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VyaWFs
aXphdGlvbi5jcHAKIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MWU1Y2Y5ZDBlNTczMzFmODhkMTE5MjBhMzRkNWRkNzlmYWJkMTQ2OC4uZTE3ZDg0M2E4Njg4MGEx
OWU4YTRjN2Y1MDcyNWM2NWEwOGIxOWM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzk4NSw2ICszOTg1LDcgQEAKIAkJQzlE
NDY3MDUxRTYwQzQ2NTAwODE5NUZCIC8qIEF1dG9wbGF5RXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RDQ2NzA0MUU2MEMzRUIwMDgxOTVGQiAv
KiBBdXRvcGxheUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzlEODUxRjAxQjM5REM3ODAwODUwNjJFIC8qIE1lZGlhU2Vzc2lvbk1ldGFk
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUQ4
NTFFRTFCMzlEQzc4MDA4NTA2MkUgLyogTWVkaWFTZXNzaW9uTWV0YWRhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDOUY4N0NGRTFCMjhGNDBF
MDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUY4N0NGRDFCMjhFNUY2MDA5NzlCODMgLyogTWVkaWFT
ZXNzaW9uRXZlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQ0EyODc5RTEyMjZFNzEwNDAwMTAyNkY1IC8qIElEQkFjdGl2aXR5Q291bnRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EyODc5REQy
MjZFNzBDOTAwMTAyNkY1IC8qIElEQkFjdGl2aXR5Q291bnRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1
MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0E2QzE1
MzAyMjBCOThDQzAwNTVDQkZDIC8qIEpTVmFsdWVJbldyYXBwZWRPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUFFM0I4MUZCODBFQUUwMEY1
RUZCMiAvKiBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0FFOUY5MTAxNDY0NDFGMDAwQzI0NUIwIC8qIENT
U0FzcGVjdFJhdGlvVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENBRTlGOTBFMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVl
LmggKi87IH07CkBAIC0xMzQwNSw2ICsxMzQwNiw4IEBACiAJCUM5REFEQkNBMUIxRDNCMjUwMDFG
MTdEOCAvKiBKU01lZGlhU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01lZGlhU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUY4N0NG
RDFCMjhFNUY2MDA5NzlCODMgLyogTWVkaWFTZXNzaW9uRXZlbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFTZXNzaW9uRXZlbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBMTYz
NURDMjA3MkU3NjkwMEU3RDJDRSAvKiBSZWZlcnJlclBvbGljeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZlcnJlclBvbGljeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNBMjg3OUREMjI2RTcwQzkwMDEwMjZGNSAvKiBJREJBY3Rpdml0eUNv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQWN0aXZpdHlDb3Vu
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBMjg3OURGMjI2RTcwRDEwMDEw
MjZGNSAvKiBJREJBY3Rpdml0eUNvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSURCQWN0aXZpdHlDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0EzQkY2N0IxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzQkY2N0QxMEQ5OUJBRTAwRTZDRTUzIC8q
IFNjcm9sbEFuaW1hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9s
bEFuaW1hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBNkMxNTJGMjIwQjRB
NTUwMDU1Q0JGQyAvKiBKU0lEQlJlcXVlc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNJREJSZXF1ZXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4NDY1LDYgKzE4NDY4LDggQEAKIAkJNTEwQTU4RUUxQkFCNzFFMDAw
QzE5MjgyIC8qIHNlcnZlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0EyODc5REYyMjZFNzBEMTAwMTAyNkY1IC8qIElEQkFjdGl2aXR5Q291bnRlci5j
cHAgKi8sCisJCQkJQ0EyODc5REQyMjZFNzBDOTAwMTAyNkY1IC8qIElEQkFjdGl2aXR5Q291bnRl
ci5oICovLAogCQkJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUu
aCAqLywKIAkJCQk1MTZEN0Q2RDFCQjVGMDY1MDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcCAqLywKIAkJCQk1MTBBNThGRTFCQjA3QUE1MDBDMTkyODIgLyogSURCQ29ubmVjdGlv
blRvQ2xpZW50LmggKi8sCkBAIC0yOTI5NSw2ICsyOTMwMCw3IEBACiAJCQkJQjI3NTM1NkUwQjA1
MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxM0YxNDU0MEFCNjM0
QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTcxNEVBODFD
RjRFNEIxMDA0NzIzQzQgLyogSURCQWN0aXZlRE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDQTI4NzlFMTIyNkU3MTA0MDAxMDI2RjUgLyogSURCQWN0aXZpdHlDb3VudGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyogSURCQmFja2luZ1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTg1QTY2MzExRDRGQUM1MDA0QzNFNEIgLyogSURCQmlu
ZGluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjI1QUExQ0M4MkIyQTAwNjFD
MDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGZhYmM5ZWFhNDU0
Y2FhN2QxYjZkYjM1NjM2NzRkYjlmMmVjYzgyNDcuLjQxMTVlOWIxODQzMDVkMmYzYjNmNzJkYjZj
NjQ4OTk3NmI1Yjg1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0xMzUsNiArMTM1LDExIEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3
b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1lCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyKCp0aGlzKQogI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisgICAgLCBtX2lkYkFjdGl2aXR5Q291bnRlck9ic2VydmVyKFt0
aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeworICAgICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXRJc0lu
ZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxlcyhzdGF0ZSA9PSBQQUw6Okh5c3RlcmVzaXNT
dGF0ZTo6U3RhcnRlZCksIDApOworICAgIH0pCisjZW5kaWYKIHsKICAgICBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwogCkBAIC0xOTk1LDYgKzIwMDAsMTAg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZAogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFs
dWVzKCkpCisgICAgICAgIHNlcnZlci0+dHJ5U3RvcChJREJTZXJ2ZXI6OlNob3VsZEZvcmNlU3Rv
cDo6WWVzKTsKKyNlbmRpZgogICAgIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93
bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ6Ok5vKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVl
KTsKIH0KQEAgLTIwMDIsNiArMjAxMSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+Jgogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpCiB7CiAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KCkiLCB0aGlzKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygp
KQorICAgICAgICBzZXJ2ZXItPnRyeVN0b3AoSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6Ok5v
KTsKKyNlbmRpZgogICAgIGFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VX
aGVuUmVhZHlUb1N1c3BlbmQ6Olllcyk7CiB9CiAKQEAgLTIwNDEsNiArMjA1NSwxMCBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9zd1Nl
cnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+ZW5kU3VzcGVuc2lvbigpOwogI2VuZGlm
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisg
ICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMudmFsdWVzKCkpCisgICAgICAgIHNl
cnZlci0+cmVzdW1lKCk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0
Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkMjM0YmUzOTUxYzEwM2Y0ZjA2MTM2ZTIzYmRm
YzlmZWI4MmViY2E4Li43MWIyNGNmNjgyYzVlYThkMmNkM2JlNjVkOTJiOWI3YTQxOTJmZjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC01
Niw2ICs1NiwxMCBAQAogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2Vu
ZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyNpbmNsdWRlIDxXZWJDb3JlL0lEQkFjdGl2aXR5Q291bnRlci5oPgorI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3Jh
Z2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwogI2VuZGlmCkBAIC01MTQsNiArNTE4LDEwIEBA
IHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKyAgICBXZWJDb3JlOjpJREJBY3Rpdml0eUNvdW50ZXI6OkNvdW50
ZXJPYnNlcnZlciBtX2lkYkFjdGl2aXR5Q291bnRlck9ic2VydmVyOworI2VuZGlmCisKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX3N0b3JhZ2VUYXNrUXVldWUgeyBXb3JrUXVldWU6OmNyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5TdG9yYWdlVGFzayIpIH07CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMzNDRkMTYzODI3MzViMGI2ODNjNjk2ZjliNjYyNjcx
MDcxZDg0NjQuLjA3Y2ExNmQ4ZGFhNzUzMTE5YTU4NjI3Njg0YWFjYjdhNmI1NGFmZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTA2MCw2ICsxMDYwLDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKICAg
ICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SXNJbmRleGVkRGF0YWJhc2VI
b2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0luZGV4ZWREYXRhYmFzZUhvbGRpbmdMb2NrZWRGaWxl
cykKK3sKKyAgICBpZiAoIWlzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiVUlQcm9jZXNzIGlzIHJlbGVh
c2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgSW5kZXhlZERhdGFiYXNlcyBpbiB0
aGUgTmV0d29yayBwcm9jZXNzIGlzIG5vIGxvbmdlciBob2xkaW5nIGxvY2tlZCBmaWxlcyIpOwor
ICAgICAgICBtX3Rva2VuRm9ySW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVzID0gbnVs
bHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIW1fdG9rZW5Gb3JJbmRleGVk
RGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICJVSVByb2Nlc3MgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSBJbmRleGVkRGF0YWJhc2VzIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MgaXMgaG9sZGlu
ZyBsb2NrZWQgZmlsZXMiKTsKKyAgICAgICAgbV90b2tlbkZvckluZGV4ZWREYXRhYmFzZUhvbGRp
bmdMb2NrZWRGaWxlcyA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7Cisg
ICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN5bmNBbGxDb29raWVzKCkKIHsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3luY0FsbENvb2tpZXMoKSwgMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IGZjYjJiNzhiNDVkYzU3MmMzNzg4M2U4ZTZhODBmYmJmOGRiMWE2YzMu
LjgyYWIyODkyYTZlMzFiZDQyZmFkYjYyNGRmZDk5YzE1YjA5OGU2ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBA
IC0xNTksNiArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3ludGhlc2l6ZUFwcElzQmFja2dy
b3VuZChib29sIGJhY2tncm91bmQpOwogCiAgICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxl
cyhib29sKTsKKyAgICB2b2lkIHNldElzSW5kZXhlZERhdGFiYXNlSG9sZGluZ0xvY2tlZEZpbGVz
KGJvb2wpOwogCiAgICAgdm9pZCBzeW5jQWxsQ29va2llcygpOwogICAgIHZvaWQgZGlkU3luY0Fs
bENvb2tpZXMoKTsKQEAgLTI1OSw2ICsyNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUHJv
Y2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKICAgICBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbiBtX3Rva2VuRm9ySG9sZGluZ0xvY2tlZEZpbGVzOworICAgIFByb2Nl
c3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuIG1fdG9rZW5Gb3JJbmRleGVkRGF0
YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXM7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4gbV9zeW5jQWxsQ29va2llc1Rva2VuOwogICAgIAogICAgIHVuc2lnbmVk
IG1fc3luY0FsbENvb2tpZXNDb3VudGVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGJlOThlNjY2MzBmYWQ3OTA2MTA5MjBjZWY4NTI3NWRjOTdhZDFmMWQuLjFjODcz
MjhiMjAxYWRjNjg4M2MwMDRmN2Q3ODVhMmI2Y2I0MTQwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMzLDYgKzMzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBQcm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogICAg
IFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCisgICAg
U2V0SXNJbmRleGVkRGF0YWJhc2VIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0luZGV4ZWREYXRh
YmFzZUhvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMgRGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dn
aW5nCiAgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVz
c2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBkNjhjNzg0YjRlNzU4OGE2ZjViNWEwM2RmZGFmZjM4ZGY1YzEwY2I1Li4zNmE2
ODQ5Mzg1YjFjYTc3N2I4OTQzNzRmMjdkNTBlN2M2ZjdhODdmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQt
MjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIg
dHJhbnNhY3Rpb25zIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5
MzAxMTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3Bl
bmRJbW1pbmVudGx5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW06IEFkZGVkLgorICAgICAg
ICAoLVtJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50
Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAgKHJ1blRlc3RB
bmRDaGVja1Jlc3VsdCk6CisgICAgICAgIChrZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUpOgorICAg
ICAgICAoVEVTVCk6CisKIDIwMTktMDQtMjMgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJv
QHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gU3VwcG9ydCBydW5uaW5nIG9mIEpT
QyB0ZXN0cyBvbiByZW1vdGUgcGxheXN0YXRpb24gZGV2aWNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmMzI5NjY1NzY4ZTZjMDlhYjc3ZGE5NzQ1ZmUzOGQ0N2IzOGZmYTdiLi5lOTY2MGYx
NmZkMTEzNjczZmJkZjFjMmY0YzYwOWU0MDZiZjQ0YWQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNzgxLDYgKzc4MSw4IEBACiAJCUM5QzlDRDQzMjFFNkE2ODYwMDE5REI5NiAvKiBhdXRv
cGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5QzlDRDQyMjFFNkE2NjcwMDE5REI5
NiAvKiBhdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sICovOyB9OwogCQlD
OUU2REQzNTFFQTk3RDA4MDBERDc4QUEgLyogRmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM5RTZERDMxMUVB
OTcyRDgwMERENzhBQSAvKiBGaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uLm1tICovOyB9OwogCQlD
OUU4RUU3NTIxREVEOTQzMDA3OTc3NjUgLyogbG9uZy10ZXN0Lm1wNCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUU4RUU3NDIxREVEOTFFMDA3
OTc3NjUgLyogbG9uZy10ZXN0Lm1wNCAqLzsgfTsKKwkJQ0EyODc5REIyMjZFNjlBNTAwMTAyNkY1
IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EyODc5REEyMjZFNjk4NjAwMTAyNkY1IC8qIEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tICovOyB9OworCQlDQTI4NzlEQzIyNkU2OUI2MDAxMDI2
RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTI4NzlEOTIyNkU2OTc4MDAxMDI2
RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLzsgfTsKIAkJQ0EzODQ1OTYy
MEFFMTdBOTAwOTkwRDNCIC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBMzg0NTk1MjBBRTAxMkUw
MDk5MEQzQiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0gKi87IH07CiAJCUNBNUI5
NEQyMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBNUI5NEQw
MjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovOyB9Owog
CQlDQTVCOTREMzIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
QTVCOTREMTIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCAq
LzsgfTsKQEAgLTExNzUsNiArMTE3Nyw3IEBACiAJCQkJNTcxRjdGRDAxRjI5NjFGQjAwOTQ2NjQ4
IC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUz
LXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzU5OUUyQTFGMDcxQUEwMDBBM0ZCOEMg
LyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5UmVhZC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3NTk5RTJCMUYwNzFBQTAwMEEzRkI4QyAvKiBJ
bmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAorCQkJCUNBMjg3OURDMjI2RTY5QjYwMDEwMjZGNSAvKiBJbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNB
NUI5NEQyMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNBNUI5NEQzMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRl
eGVkREJUZW1wRmlsZVNpemUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUNBOTdC
Mzk1MjE5MzY2N0EwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCkBAIC0yMTI4LDYgKzIxMzEsOCBAQAogCQlDOUM5Q0Q0MjIxRTZBNjY3MDAx
OURCOTYgLyogYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJhdXRvcGxheWluZy1tdWx0aXBsZS1tZWRpYS1lbGVtZW50cy5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlFNkREMzExRUE5NzJEODAwREQ3OEFBIC8qIEZpcnN0UmVz
cG9uZGVyU3VwcHJlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaXJzdFJlc3BvbmRl
clN1cHByZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUU4RUU3NDIx
REVEOTFFMDA3OTc3NjUgLyogbG9uZy10ZXN0Lm1wNCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAibG9uZy10ZXN0Lm1wNCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNBMjg3OUQ5MjI2RTY5NzgwMDEwMjZGNSAvKiBJ
bmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0EyODc5REEyMjZFNjk4NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNB
Mzg0NTk1MjBBRTAxMkUwMDk5MEQzQiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBNUI5NEQwMjE5
MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlRlbXBGaWxlU2l6ZS0xLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDQTVCOTREMTIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhl
ZERCVGVtcEZpbGVTaXplLTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRl
eGVkREJUZW1wRmlsZVNpemUtMi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1OTIsNiArMjU5Nyw3IEBACiAJCQkJNTFCQ0VFNDkxQzg0RjRBRjAwNDJDODJFIC8qIEluZGV4
ZWREQk11bHRpUHJvY2Vzcy5tbSAqLywKIAkJCQk1MUIxRUU4RDFDODBGNTg4MDA2NEZCOTggLyog
SW5kZXhlZERCUGVyc2lzdGVuY2UubW0gKi8sCiAJCQkJNTc1OTlFMjAxRjA3MTkxNzAwQTNGQjhD
IC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSAqLywK
KwkJCQlDQTI4NzlEQTIyNkU2OTg2MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkubW0gKi8sCiAJCQkJQ0E1Qjk0RDYyMTkxMDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBG
aWxlU2l6ZS5tbSAqLywKIAkJCQlDQTk3QjM5MjIxOTM2NjNCMDA0NURGNkYgLyogSW5kZXhlZERC
VXNlckRlbGV0ZS5tbSAqLywKIAkJCQkwRTQwNEE4QTIxNjZEREY4MDA4MjcxQkEgLyogSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlSXNTZWxlY3RFbGVtZW50Lm1tICovLApAQCAtMjk5Miw2ICsyOTk4
LDcgQEAKIAkJCQk1NzFGN0ZDRjFGMjk2MUUxMDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0dXJl
ZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2FsICovLAogCQkJCTU3NTk5RTI1
MUYwNzE5MkMwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBh
dGliaWxpdHlSZWFkLmh0bWwgKi8sCiAJCQkJNTc1OTlFMjMxRjA3MTkyQzAwQTNGQjhDIC8qIElu
ZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVdyaXRlLmh0bWwgKi8s
CisJCQkJQ0EyODc5RDkyMjZFNjk3ODAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVu
dGx5Lmh0bWwgKi8sCiAJCQkJQ0E1Qjk0RDAyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRl
bXBGaWxlU2l6ZS0xLmh0bWwgKi8sCiAJCQkJQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8qIElu
ZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgKi8sCiAJCQkJQ0E5N0IzOTMyMTkzNjY0NzAwNDVE
RjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUuaHRtbCAqLywKQEAgLTQxNzIsNiArNDE3OSw3IEBA
CiAJCQkJN0M4M0UwQkUxRDBBNjUxMzAwRkVCQ0YzIC8qIEluZGV4ZWREQk11bHRpUHJvY2Vzcy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJGMUQwQTY1MjIwMEZFQkNGMyAvKiBJbmRleGVk
REJQZXJzaXN0ZW5jZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3NTk5RTIxMUYwNzE5MTkwMEEz
RkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0g
aW4gU291cmNlcyAqLywKKwkJCQlDQTI4NzlEQjIyNkU2OUE1MDAxMDI2RjUgLyogSW5kZXhlZERC
U3VzcGVuZEltbWluZW50bHkubW0gaW4gU291cmNlcyAqLywKIAkJCQlDQTVCOTRENzIxOTEwMDVC
MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0E5N0IzOTQyMTkzNjY2MDAwNDVERjZGIC8qIEluZGV4ZWREQlVzZXJEZWxldGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3QTk1QkRFMTFFOUJFQzVGMDA4NjU0OTggLyogSW5qZWN0ZWRCdW5kbGVB
cHBsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjZjZDJkNmZlYzEwNTZiYWM4NjM1M2VhMWVhMzlm
ZWIyYzRmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwKQEAgLTAsMCArMSw0NSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0PgorCit2YXIgZGI7Cit2YXIgc2hvdWxkU2VuZFN1
Y2Nlc3NNZXNzYWdlID0gZmFsc2U7Cit2YXIgaGFzQWJvcnQgPSBmYWxzZTsKK3ZhciByZXF1ZXN0
ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSIpOwor
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbihldmVudCkgeworICAgIHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJDb250aW51ZSIpOworICAg
IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBp
KyspIHsKKyAgICAgICAgdHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0
b3JlIiwgInJlYWR3cml0ZSIpOworICAgICAgICBvYmplY3RTdG9yZSA9IHRyYW5zYWN0aW9uLm9i
amVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgZm9yIChsZXQgdGltZXMgPSAw
OyB0aW1lcyA8IDEwMDsgdGltZXMrKykKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLnB1dChpLCBp
KTsKKyAgICAgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9ICgpPT4geworICAgICAgICAgICAgaWYg
KCFoYXNBYm9ydCkgeworICAgICAgICAgICAgICAgIGhhc0Fib3J0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UgPSB0cnVlOworICAgICAgICAgICAgICAg
IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJF
eHBlY3RlZCBBYm9ydCBGb3IgU3VzcGVuc2lvbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5w
b3N0TWVzc2FnZSgiVW5leHBlY3RlZCBBYm9ydCIpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSAoKT0+IHsKKyAgICAgICAgICAgIGlm
IChzaG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiRXhwZWN0ZWQgU3Vj
Y2VzcyBBZnRlciBSZXN1bWUiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRTZW5kU3VjY2Vzc01l
c3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBjcmVhdGVS
ZXF1ZXN0ID0gZXZlbnQudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVj
dFN0b3JlIik7CisgICAgY3JlYXRlUmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoIk9iamVjdFN0b3JlIEVycm9yIik7CisgICAgfQorfQorCityZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRl
c3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJPcGVuIEVycm9yIik7Cit9CisKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJiMWE2Mzg0M2Iz
NTUwZTQ1MjFlYjY0M2Y5ZTlkYWRiOGQyNjIwNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHku
bW0KQEAgLTAsMCArMSw5NyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUg
bWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKworI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisKK3N0YXRpYyBib29sIHJlY2VpdmVkU2NyaXB0TWVzc2FnZTsKK3N0YXRp
YyBib29sIGlkYkFjaXRpdml0aWVzU3RhcnRlZDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tTY3JpcHRN
ZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2FnZTsKKworQGludGVyZmFjZSBJbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseU1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseU1l
c3NhZ2VIYW5kbGVyCisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250
ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVz
c2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIGlkYkFjaXRpdml0aWVzU3Rh
cnRlZCA9IHRydWU7CisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKKyAgICBsYXN0
U2NyaXB0TWVzc2FnZSA9IG1lc3NhZ2U7Cit9CisKK0BlbmQKKworc3RhdGljIHZvaWQgcnVuVGVz
dEFuZENoZWNrUmVzdWx0KE5TU3RyaW5nKiBleHBlY3RlZFJlc3VsdCkKK3sKKyAgICByZWNlaXZl
ZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJl
Y2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzdHJpbmcgPSAo
TlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV07CisgICAgRVhQRUNUX1dLX1NUUkVR
KGV4cGVjdGVkUmVzdWx0LCBzdHJpbmcuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBrZWVwTmV0
d29ya1Byb2Nlc3NBY3RpdmUoKQoreworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURh
dGFSZWNvcmQgKj4gKmRhdGFSZWNvcmRzKSB7CisgICAgICAgIGlmICghaWRiQWNpdGl2aXRpZXNT
dGFydGVkKQorICAgICAgICAgICAga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKCk7CisgICAgfV07
Cit9CisKK1RFU1QoSW5kZXhlZERCLCBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseSkKK3sKKyAg
ICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFu
ZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJbmRleGVkREJTdXNwZW5kSW1taW5lbnRs
eSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOworICAgIGlkYkFjaXRpdml0aWVzU3RhcnRlZCA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAga2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZl
KCk7CisKKyAgICBydW5UZXN0QW5kQ2hlY2tSZXN1bHQoQCJDb250aW51ZSIpOworCisgICAgW2Nv
bmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3NlbmROZXR3b3JrUHJvY2Vzc1dpbGxTdXNw
ZW5kSW1taW5lbnRseV07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgX3Nl
bmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZV07CisKKyAgICBydW5UZXN0QW5kQ2hlY2tSZXN1bHQo
QCJFeHBlY3RlZCBBYm9ydCBGb3IgU3VzcGVuc2lvbiIpOworICAgIHJ1blRlc3RBbmRDaGVja1Jl
c3VsdChAIkV4cGVjdGVkIFN1Y2Nlc3MgQWZ0ZXIgUmVzdW1lIik7Cit9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZSBiL1dlYktpdC54Y3dvcmtzcGFj
ZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKaW5kZXggZmE2ZGVl
MjQzZTUzMDdkNzNmYjBiMmRmOTQ4YWEwMWJhYzk3YWY0OS4uNmRmZjhlZjVlMTc2NTIyZDI0YTdj
OTZjNmViMTg4MTU0MjdmNWQ1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hh
cmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKKysrIGIvV2ViS2l0Lnhjd29y
a3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKQEAgLTE2
MywxNiArMTYzLDE3IEBACiAgICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAg
ICAgICBkZWJ1Z1NlcnZpY2VFeHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0
aW9uU2ltdWxhdGlvbiA9ICJZRVMiPgotICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQot
ICAgICAgICAgcnVubmFibGVEZWJ1Z2dpbmdNb2RlID0gIjAiPgotICAgICAgICAgPEJ1aWxkYWJs
ZVJlZmVyZW5jZQotICAgICAgICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5Igot
ICAgICAgICAgICAgQmx1ZXByaW50SWRlbnRpZmllciA9ICI4RDExMDcyNjA0ODZDRUI4MDBFNDcw
OTAiCi0gICAgICAgICAgICBCdWlsZGFibGVOYW1lID0gIk1pbmlCcm93c2VyLmFwcCIKLSAgICAg
ICAgICAgIEJsdWVwcmludE5hbWUgPSAiTWluaUJyb3dzZXIiCi0gICAgICAgICAgICBSZWZlcmVu
Y2VkQ29udGFpbmVyID0gImNvbnRhaW5lcjpUb29scy9NaW5pQnJvd3Nlci9NaW5pQnJvd3Nlci54
Y29kZXByb2oiPgotICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+Ci0gICAgICA8L0J1aWxk
YWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5h
YmxlRGVidWdnaW5nTW9kZSA9ICIwIgorICAgICAgICAgQnVuZGxlSWRlbnRpZmllciA9ICJvcmcu
d2Via2l0Lk1vYmlsZU1pbmlCcm93c2VyIgorICAgICAgICAgRmlsZVBhdGggPSAiL1ZvbHVtZXMv
RGF0YS93czEvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9EZWJ1Zy1pcGhvbmVzaW11bGF0b3IvTW9i
aWxlTWluaUJyb3dzZXIuYXBwIj4KKyAgICAgIDwvUGF0aFJ1bm5hYmxlPgorICAgICAgPENvbW1h
bmRMaW5lQXJndW1lbnRzPgorICAgICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAgICAg
ICAgIGFyZ3VtZW50ID0gIiIKKyAgICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAg
ICAgPC9Db21tYW5kTGluZUFyZ3VtZW50PgorICAgICAgPC9Db21tYW5kTGluZUFyZ3VtZW50cz4K
ICAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4KICAgICAgIDwvQWRkaXRpb25hbE9wdGlvbnM+CiAg
ICA8L0xhdW5jaEFjdGlvbj4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368146</attachid>
            <date>2019-04-24 11:14:02 -0700</date>
            <delta_ts>2019-04-24 11:27:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190424111401.patch</filename>
            <type>text/plain</type>
            <size>52939</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjAyZjBjZjdjMDc4YTJhNTUyOTE0MTAyZDY0ZTExM2YyMjdkNDVj
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBzdXNw
ZW5kIHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMg
c3VzcGVuZGVkLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCk6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnN1c3BlbmRBbmRXYWl0KToKKyAgICAg
ICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBHZW5lcmljIG1lbW9yeUZvb3Rw
cmludCgpIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgYm1hbGxvYyBvbiBMaW51eApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhlMzJiYTllMDU0MWE1ZDFmMDE5Zjc4OWQ0OWY5YWZiMzE2ZWQxZDguLmIzZGRkOGEy
ZWNlOTE3NzEzYjBjNTRhNTE3ZmFhYWJlZDI3ZTJlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NSBAQAorMjAxOS0wNC0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmls
ZXMgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdXNwZW5kIElEQiBkYXRhYmFzZSB0aHJlYWQgYW5kIGZpbmlzaCBvbmdv
aW5nIElEQiB0cmFuc2FjdGlvbnMgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBzdXNwZW5kaW5n
IG5ldHdvcmsgCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgQVBJIHRlc3Q6IEluZGV4ZWRE
Qi5JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OnRyeVN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnJlc3VtZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwOiBSZW1vdmUgc29tZSBlcnJvciBsb2cgbWVzc2FnZXMsIGJlY2F1c2Ugbm93
IHdlIG1heSB0cnkKKyAgICAgICAgcGVyZm9ybWluZyBkYXRhYmFzZSBvcGVyYXRpb25zIHdpdGhv
dXQgYW4gYWN0aXZlIHRyYW5zYWN0aW9uIGlmIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVPYmpl
Y3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhp
c3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmplY3RTdG9y
ZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5n
U3RvcmU6OmdldEFsbEluZGV4UmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51
bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjptYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6aXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6aGFzVHJhbnNhY3Rpb24gY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6Y29tbWl0VHJhbnNhY3Rpb25BZnRlclF1b3RhQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1pdFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUGVyZm9ybUFib3J0VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRU
cmFuc2FjdGlvbk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlOjpmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6c3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpzZXRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpyZXN1bHQgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2VUcmFja2VyOjpoYXNUcmFuc2FjdGlvbklu
UHJvZ3Jlc3MpOgorCiAyMDE5LTA0LTIzICBSZW15IERlbWFyZXN0ICA8cmRlbWFyZXN0QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggbGF5b3V0IGlzc3VlcyBvY2N1cmluZyB3aGVuIGVudGVyaW5n
IGZ1bGwgc2NyZWVuIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQzN2Q5Mjk4MDExNjk5ZTFiMTk0MmM2ZDI4
MThlNmRmODlkN2Q1MTIuLmU4YWVjMDMxNzhjZjQ5MTBlYjg1ZDRkMDE5ZDgzYjcxYzUwMmEzZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDQtMjQgIFNpaHVpIExpdSAgPHNpaHVp
X2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVh
c2UgbG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRv
IHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNz
V2lsbFN1c3BlbmRJbW1pbmVudGx5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVz
dW1lKToKKwogMjAxOS0wNC0yMyAgUmVteSBEZW1hcmVzdCAgPHJkZW1hcmVzdEBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IGxheW91dCBpc3N1ZXMgb2NjdXJpbmcgd2hlbiBlbnRlcmluZyBmdWxs
IHNjcmVlbiBtb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNr
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcApp
bmRleCBiMjRkZmNjOTQ4OGYzZjdhYTM2NmRmMDQyYjQ2N2Q0M2Q2ZmU4MWE5Li40NWVjMDQxNzc5
Y2Y4MmY2NzNiYjJmODk3N2E2MmQ5YWUzM2IwMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1Ro
cmVhZFRhc2tIYW5kbGVyLmNwcApAQCAtNjgsOCArNjgsMjAgQEAgdm9pZCBDcm9zc1RocmVhZFRh
c2tIYW5kbGVyOjp0YXNrUnVuTG9vcCgpCiAgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90
YXNrVGhyZWFkQ3JlYXRpb25Mb2NrKTsKICAgICB9CiAKLSAgICB3aGlsZSAoIW1fdGFza1F1ZXVl
LmlzS2lsbGVkKCkpCisgICAgd2hpbGUgKCFtX3Rhc2tRdWV1ZS5pc0tpbGxlZCgpKSB7CiAgICAg
ICAgIG1fdGFza1F1ZXVlLndhaXRGb3JNZXNzYWdlKCkucGVyZm9ybVRhc2soKTsKKworICAgICAg
ICBMb2NrZXI8TG9jaz4gc2hvdWxkU3VzcGVuZExvY2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsK
KyAgICAgICAgd2hpbGUgKG1fc2hvdWxkU3VzcGVuZCkgeworICAgICAgICAgICAgbV9zdXNwZW5k
ZWRMb2NrLmxvY2soKTsKKyAgICAgICAgICAgIGlmICghbV9zdXNwZW5kZWQpIHsKKyAgICAgICAg
ICAgICAgICBtX3N1c3BlbmRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9zdXNwZW5kZWRD
b25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3N1c3Bl
bmRlZExvY2sudW5sb2NrKCk7CisgICAgICAgICAgICBtX3Nob3VsZFN1c3BlbmRDb25kaXRpb24u
d2FpdChtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBD
cm9zc1RocmVhZFRhc2tIYW5kbGVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpCkBA
IC04Myw1ICs5NSwzNCBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OmhhbmRsZVRhc2tS
ZXBsaWVzT25NYWluVGhyZWFkKCkKICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKTsKIH0KIAor
dm9pZCBDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjpzdXNwZW5kQW5kV2FpdCgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIo
bV9zaG91bGRTdXNwZW5kTG9jayk7CisgICAgICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7Cisg
ICAgfQorCisgICAgLy8gUG9zdCBhbiBlbXB0eSB0YXNrIHRvIGVuc3VyZSBkYXRhYmFzZSB0aHJl
YWQga25vd3MgbV9zaG91bGRTdXNwZW5kIGFuZCBzZXRzIG1fc3VzcGVuZGVkLgorICAgIHBvc3RU
YXNrKENyb3NzVGhyZWFkVGFzayhbXSgpIHsgfSkpOworCisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX3N1c3BlbmRlZExvY2spOworICAgIHdoaWxlICghbV9zdXNwZW5kZWQpCisgICAgICAgIG1f
c3VzcGVuZGVkQ29uZGl0aW9uLndhaXQobV9zdXNwZW5kZWRMb2NrKTsKK30KKwordm9pZCBDcm9z
c1RocmVhZFRhc2tIYW5kbGVyOjpyZXN1bWUoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Nob3VsZFN1c3BlbmRMb2NrKTsKKyAgICBp
ZiAobV9zaG91bGRTdXNwZW5kKSB7CisgICAgICAgIG1fc3VzcGVuZGVkTG9jay5sb2NrKCk7Cisg
ICAgICAgIGlmIChtX3N1c3BlbmRlZCkKKyAgICAgICAgICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7
CisgICAgICAgIG1fc3VzcGVuZGVkTG9jay51bmxvY2soKTsKKyAgICAgICAgbV9zaG91bGRTdXNw
ZW5kID0gZmFsc2U7CisgICAgICAgIG1fc2hvdWxkU3VzcGVuZENvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKKyAgICB9Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oIGIvU291cmNlL1dURi93dGYvQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5oCmluZGV4IDI2M2IzZDAzNWVjYmZjMmY4YjQxN2E5ZjAyMDA4MzMzNjZk
ZWQ2ODEuLmYwNTQ2MDFjMjQ2NjFlNDI5Y2Y4Yjk4ZGI4OTBlYmI1ZDkyMzM3OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHJvdGVj
dGVkOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRU
YXNrJiYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHBvc3RUYXNrUmVwbHkoQ3Jvc3NU
aHJlYWRUYXNrJiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN1c3BlbmRBbmRXYWl0
KCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzdW1lKCk7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOwpAQCAtNTMsNiArNTUsMTQg
QEAgcHJpdmF0ZToKICAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsKICAgICBib29sIG1f
bWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKIAorICAgIGJvb2wgbV9zaG91bGRT
dXNwZW5kIHsgZmFsc2UgfTsKKyAgICBDb25kaXRpb24gbV9zaG91bGRTdXNwZW5kQ29uZGl0aW9u
OworICAgIExvY2sgbV9zaG91bGRTdXNwZW5kTG9jazsKKyAgICAKKyAgICBib29sIG1fc3VzcGVu
ZGVkIHsgZmFsc2UgfTsKKyAgICBDb25kaXRpb24gbV9zdXNwZW5kZWRDb25kaXRpb247CisgICAg
TG9jayBtX3N1c3BlbmRlZExvY2s7CisKICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFk
VGFzaz4gbV90YXNrUXVldWU7CiAgICAgQ3Jvc3NUaHJlYWRRdWV1ZTxDcm9zc1RocmVhZFRhc2s+
IG1fdGFza1JlcGx5UXVldWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGM2ZDdkNDNmOWVi
YWRkMjkyNDgwY2Y0ZWFjNDA3ODc1MTAwOWE0MDEuLjI5MWY3NmVkNWFjNWJiYjc3Yzg0ZGVmZjlj
MGM2Njc5Yzc4YmEzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTEwMSw2ICsxMDEsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGRhdGFiYXNlc1NpemVGb3JPcmlnaW4oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFF1b3RhKHVpbnQ2NF90KSA9IDA7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JikgY29uc3QgPSAwOwogcHJvdGVjdGVkOgogICAgIElEQkJhY2tpbmdTdG9yZSgpIHsgUkVMRUFT
RV9BU1NFUlQoIWlzTWFpblRocmVhZCgpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNWJmNDdmMjE5
MWM0ODNhN2FkODA3Yzk2MDJlYjE5NjBiMDU2YjVlYi4uMDU0YjdlMmZhZDhmYjE3MWQ4MzcyMDA3
ZGI5ZGExNmQ3Yzg3NTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIK
ICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCkBAIC04MjgsNiArODI5LDMw
IEBAIHZvaWQgSURCU2VydmVyOjp1cGdyYWRlRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhuZXdWZXJzaW9uRGlyZWN0b3J5KTsKIH0KIAor
dm9pZCBJREJTZXJ2ZXI6OnRyeVN0b3AoU2hvdWxkRm9yY2VTdG9wIHNob3VsZEZvcmNlU3RvcCkK
K3sKKyAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXJzIHRoYXQgY2FuIGhv
bGQgbG9ja2VkIGRhdGFiYXNlIGZpbGVzLgorICAgIGlmIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdXNwZW5kQW5kV2FpdCgpOworICAgIGlmIChz
aG91bGRGb3JjZVN0b3AgPT0gU2hvdWxkRm9yY2VTdG9wOjpObyAmJiBTUUxpdGVEYXRhYmFzZVRy
YWNrZXI6Omhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKSB7CisgICAgICAgIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OnJlc3VtZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9y
IChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudmFsdWVzKCkpCisgICAg
ICAgIGRhdGFiYXNlLT5maW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKTsKK30KKwordm9pZCBJREJT
ZXJ2ZXI6OnJlc3VtZSgpCit7CisgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnJlc3VtZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oCmluZGV4IDBiODQ2ODdmMjdjYjM1ODdkOWRjM2E3ZjIzNjkzYTYwZjI5YzVkYmEuLjRkMzI4
YzQ4MjE1NTY0YTMyMzA0OWVkNmI1MzdiYmRiZTM3ZGM4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTU4LDYgKzU4
LDggQEAgY29uc3QgdWludDY0X3QgZGVmYXVsdFBlck9yaWdpblF1b3RhID0gNTAwICogTUI7CiAK
IGNsYXNzIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyOwogCitlbnVtIGNsYXNz
IFNob3VsZEZvcmNlU3RvcCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIElEQlNlcnZlciA6
IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlcj4sIHB1YmxpYyBDcm9zc1RocmVhZFRhc2tIYW5k
bGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SURCU2VydmVyPiB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgUXVvdGFNYW5hZ2VyR2V0dGVyID0gV1RGOjpGdW5jdGlvbjxTdG9yYWdlUXVvdGFNYW5hZ2Vy
KihQQUw6OlNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJik+OwpAQCAtMTI0LDYgKzEyNiw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVF1b3RhVXNlcihjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbikgeyBlbnN1cmVRdW90YVVzZXIob3JpZ2luKTsgfQogCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB0cnlTdG9wKFNob3VsZEZvcmNlU3RvcCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXN1bWUoKTsKKwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoUEFMOjpTZXNzaW9u
SUQsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwgUXVvdGFNYW5hZ2VyR2V0
dGVyJiYpOwogICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiwg
UXVvdGFNYW5hZ2VyR2V0dGVyJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4
IDY0ZTZjYzdkZTBjYTY3NjdlYzE4ZDUxNGJjYWFmNGJkOGE1NjJjN2YuLjE1ZmUzYzQ3Mzk5NmM2
ZTRmMzdlNGY0M2ZmNWE2NWZjZjZmYTNhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgKQEAgLTg1LDYgKzg1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmVG
b3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2JqZWN0U3RvcmUmKTsKICAgICB2b2lkIHJlc3Rv
cmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChSZWY8TWVtb3J5T2JqZWN0U3RvcmU+
JiYpOwogCisgICAgYm9vbCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRh
aW5zKGlkZW50aWZpZXIpOyB9CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPE1lbW9yeU9iamVjdFN0
b3JlPiB0YWtlT2JqZWN0U3RvcmVCeUlkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNDg5ZGVkNGUzYmQ3MDYxZGI4
MjFjZDY5ZmI0MDFjODcxMzRkYWFhNC4uZDFiMDQ3Y2VmNjVhYzNkOWY5MmRiZjNmZGJjMWM2NDUw
ODIyMjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTEwMDUsMTAg
KzEwMDUsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURC
LT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNy
ZWF0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIp
OworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3JlYXRl
IGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25N
b2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVh
dGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gY3Jl
YXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJf
cyB9OwpAQCAtMTA2MSwxMCArMTA2MCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFu
c2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAh
PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFu
Z2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hh
bmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMTUzLDEwICsxMTUxLDkgQEAgSURCRXJyb3IgU1FM
aXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0
byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0IHN0b3JlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91
dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewog
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9yZSBpbiBh
IG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgaW4g
YSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTExODgsMTAgKzExODUs
OSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cgogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09w
ZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9u
LT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNsZWFyIGFu
IG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAg
aWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjbGVhciBhbiBvYmpl
Y3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0K
KwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVh
ZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBz
dG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBzdG9yZSBpbiBh
IHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTIyOSwxMCArMTIyNSw5IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAog
ICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9u
LT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAg
IExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1j
aGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggaW4gYSBub24tdmVyc2lvbi1jaGFuZ2Ug
dHJhbnNhY3Rpb24iX3MgfTsKQEAgLTE0MjIsMTAgKzE0MTcsOCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhYwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwot
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0ZSBpbmRleCB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBkZWxldGUgaW5kZXggd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KIAogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRy
YW5zYWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVt
cHQgdG8gZGVsZXRlIGluZGV4IGR1cmluZyBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biIpOwpAQCAtMTQ3NywxMCArMTQ3MCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6cmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkNvdWxkIG5vdCByZW5hbWUgaW5k
ZXgiX3MgfTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcmVuYW1l
IGFuIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJlbmFtZSBhbiBpbmRleCB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdl
KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gaW5kZXggaW4gYSBu
b24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKQEAgLTE1MTYsMTAgKzE1MDcsOCBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaQogICAgIGtleUV4aXN0cyA9IGZhbHNlOwogCiAgICAgYXV0
byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBpbiBvYmpl
Y3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBzZWUgaWYga2V5IGV4aXN0cyBp
biBvYmplY3RzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0g
ICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURC
S2V5RGF0YShrZXlEYXRhKTsKICAgICBpZiAoIWtleUJ1ZmZlcikgewpAQCAtMTY5MSwxMCArMTY4
MCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmFuZ2UoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlz
T3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRy
YW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRl
IHJhbmdlIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIp
OworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAg
ICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZGVsZXRl
IHJhbmdlIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJf
cyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0
aW9uTW9kZTo6UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGRlbGV0
ZSByZWNvcmRzIGZyb20gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9u
Iik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8g
ZGVsZXRlIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNh
Y3Rpb24iX3MgfTsKQEAgLTE4MTQsMTAgKzE4MDIsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aQogICAgIEFTU0VSVCh2YWx1ZS5ibG9iVVJMcygpLnNpemUoKSA9PSB2YWx1ZS5ibG9iRmlsZVBh
dGhzKCkuc2l6ZSgpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMu
Z2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJh
bnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8g
c3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHN0b3JlIGEgcmVjb3JkIGluIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewogICAgICAgICBMT0dfRVJS
T1IoIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVh
ZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gc3RvcmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIGluIGEg
cmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xOTgzLDEwICsxOTcwLDggQEAgSURCRXJy
b3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGkKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAg
ICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZXQgYSByZWNvcmQgZnJvbSBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZXQgYSByZWNvcmQgZnJvbSBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQog
CiAgICAgYXV0byBrZXkgPSBrZXlSYW5nZS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgp
KQpAQCAtMjE2MCwxMCArMjE0NSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
Z2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAgICAgQVNT
RVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gZ2V0IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBnZXQgcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jl
c3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGtleSA9IGdldEFsbFJlY29y
ZHNEYXRhLmtleVJhbmdlRGF0YS5sb3dlcktleTsKICAgICBpZiAoa2V5LmlzTnVsbCgpKQpAQCAt
MjI1NiwxMCArMjIzOSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxs
SW5kZXhSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBnZXQgYWxsIGluZGV4IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiQXR0ZW1wdCB0byBnZXQgYWxsIGluZGV4IHJlY29yZHMgZnJvbSBkYXRhYmFzZSB3aXRob3V0
IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQogCiAgICAgYXV0byBjdXJz
b3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQmFja2luZ1N0b3JlQ3Vyc29yKGdldEFsbFJlY29y
ZHNEYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllciwgZ2V0QWxsUmVjb3Jkc0RhdGEuaW5kZXhJZGVu
dGlmaWVyLCBnZXRBbGxSZWNvcmRzRGF0YS5rZXlSYW5nZURhdGEpOwogICAgIGlmICghY3Vyc29y
KSB7CkBAIC0yMzA2LDEwICsyMjg3LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW4KICAgICBB
U1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5z
YWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBnZXQgYW4gaW5kZXggcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBh
biBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRy
YW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gZ2V0IGFuIGluZGV4IHJlY29yZCBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAo
cmFuZ2UuaXNFeGFjdGx5T25lS2V5KCkpCiAgICAgICAgIHJldHVybiB1bmNoZWNrZWRHZXRJbmRl
eFJlY29yZEZvck9uZUtleShpbmRleElELCBvYmplY3RTdG9yZUlELCB0eXBlLCByYW5nZS5sb3dl
cktleSwgZ2V0UmVzdWx0KTsKQEAgLTI0MTIsMTAgKzIzOTEsOCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3RpbwogICAgIG91dENvdW50ID0gMDsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90
cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2Fj
dGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1Io
IkF0dGVtcHQgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5p
blByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0
dGVtcHQgdG8gZ2V0IGNvdW50IGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0
cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8gY3Vyc29yID0gdHJhbnNhY3Rpb24t
Pm1heWJlT3BlbkJhY2tpbmdTdG9yZUN1cnNvcihvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
SWRlbnRpZmllciwgcmFuZ2UpOwogICAgIGlmICghY3Vyc29yKSB7CkBAIC0yNDc1LDEwICsyNDUy
LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNP
cGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJh
bnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlv
bi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZW5lcmF0
ZSBrZXkgaW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwor
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gZ2VuZXJhdGUg
a2V5IGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsK
LSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1v
ZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBnZW5lcmF0ZSBr
ZXkgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9y
IHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZW5lcmF0ZSBrZXkgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1MDQsMTAgKzI0ODAsOSBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OnJldmVydEdlbmVyYXRlZEtleU51bWJlcihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwot
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2VuZXJhdG9yIHZhbHVlIGlu
IGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAo
IXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2VuZXJh
dG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24i
X3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2Fj
dGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZXZl
cnQga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHJldmVydCBr
ZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0y
NTI1LDEwICsyNTAwLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjptYXliZVVw
ZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUkKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3aXRob3V0IGFuIGlu
LXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNh
Y3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBkYXRhYmFzZSB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewog
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gdXBkYXRlIGtleSBnZW5lcmF0b3IgdmFsdWUg
aW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBh
IHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMjU1MSwxMCArMjUyNSw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6b3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAog
ICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gb3BlbiBhIGN1cnNvciBpbiBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBvcGVuIGEgY3Vyc29yIGluIGRh
dGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAK
ICAgICBhdXRvKiBjdXJzb3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVuQ3Vyc29yKGluZm8pOwog
ICAgIGlmICghY3Vyc29yKSB7CkBAIC0yNTg1LDEwICsyNTU3LDggQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnMKIAogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjdXJz
b3ItPnRyYW5zYWN0aW9uKCktPnRyYW5zYWN0aW9uSWRlbnRpZmllcigpID09IHRyYW5zYWN0aW9u
SWRlbnRpZmllcik7CiAKLSAgICBpZiAoIWN1cnNvci0+dHJhbnNhY3Rpb24oKSB8fCAhY3Vyc29y
LT50cmFuc2FjdGlvbigpLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRl
bXB0IHRvIGl0ZXJhdGUgYSBjdXJzb3Igd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0
aW9uKCktPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiQXR0ZW1wdCB0byBpdGVyYXRlIGEgY3Vyc29yIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGtleSA9IGRhdGEua2V5RGF0YTsK
ICAgICBhdXRvIHByaW1hcnlLZXkgPSBkYXRhLnByaW1hcnlLZXlEYXRhOwpAQCAtMjcxOCw2ICsy
Njg4LDEyIEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpjbG9zZVNRTGl0ZURCKCkKICAg
ICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKIH0KIAorYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6
Omhhc1RyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0
dXJuIG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
U1FMaXRlSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNTZiNTE3YzJhNjEwNzQ0YmRlZjIwZTE4ODlj
MDYzMWMzMGFhZmI1OC4uYzdkNTY4NDNjN2JjNzNlNmU3NDUwN2I1MzM0OTg5NTdhY2JmNjFkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaApAQCAtMTAwLDYgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGhGb3JEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyBkYXRhYmFzZU5hbWVGcm9tRmlsZShjb25zdCBT
dHJpbmcmKTsKIAorICAgIGJvb2wgaGFzVHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJikgY29uc3QgZmluYWw7CiBwcml2YXRlOgogICAgIFN0cmluZyBmaWxlbmFtZUZvckRh
dGFiYXNlTmFtZSgpIGNvbnN0OwogICAgIFN0cmluZyBmdWxsRGF0YWJhc2VQYXRoKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA4OGFjMmQ5ZDlmNjMwNTk4ZGJkNTcxOTVm
NDU5YjQ0Y2U0NzU5ZDk4Li40YjU0ZDljMmRmMjM5Y2ZiZGVkNjFiZDAwZDkwOTNjY2FjYWY1MmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTE1NjcsMTMgKzE1NjcsMTQgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUl0ZXJhdGVDdXJzb3IodWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb24KICAgICBwZXJmb3JtR2V0UmVzdWx0Q2FsbGJhY2soY2FsbGJh
Y2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0KTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFz
ZTo6cHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVwYXJlVG9GaW5pc2hU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGUgc3RhdGUpCiB7CiAgICAgYXV0byB0YWtl
blRyYW5zYWN0aW9uID0gbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnRha2UodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgaWYgKCF0YWtlblRyYW5zYWN0aW9uKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoIW1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKKyAgICB0YWtlblRyYW5z
YWN0aW9uLT5zZXRTdGF0ZShzdGF0ZSk7CiAgICAgbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuc2V0
KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIFdURk1vdmUodGFrZW5UcmFuc2FjdGlv
bikpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjAxLDcgKzE2MDIsNyBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbkFmdGVyUXVvdGFDaGVjayhVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYQogICAgIGlmICghY2FsbGJhY2tJRCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICBp
ZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGluZykpIHsKICAgICAgICAgaWYgKCFtX29w
ZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZ0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5l
Y3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBj
bG9zaW5nIG9yIGhhcyBhbHJlYWR5IGNsb3NlZCwgc28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gbWVz
c2FnaW5nIGJhY2sgdG8gaXQgYWJvdXQgdGhlIGNvbW1pdCBmYWlsaW5nLgogICAgICAgICAgICAg
Zm9yZ2V0RXJyb3JDYWxsYmFjayhjYWxsYmFja0lEKTsKQEAgLTE2MjksNyArMTYzMCwyMyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24odWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
TE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUNvbW1p
dFRyYW5zYWN0aW9uIC0gJXMiLCB0cmFuc2FjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVu
dGlmaWVyLCBlcnJvcik7CisgICAgSURCRXJyb3IgcmVzdWx0ID0gZXJyb3I7CisgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fZmluaXNoaW5nVHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50
aWZpZXIpOworICAgIHN3aXRjaCAodHJhbnNhY3Rpb24tPnN0YXRlKCkpIHsKKyAgICBjYXNlIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkOgorICAgICAgICByZXN1
bHQgPSBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlRyYW5zYWN0aW9uIGlzIGFscmVhZHkgYWJv
cnRlZCJfcyB9OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OlN0YXRlOjpDb21taXR0ZWQ6CisgICAgICAgIHJlc3VsdCA9IHRyYW5zYWN0aW9u
LT5yZXN1bHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGluZzoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6UnVubmluZzoKKyAgICBjYXNlIFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGluZzoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2Fs
bGJhY2tJZGVudGlmaWVyLCByZXN1bHQpOwogCiAgICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQobV9m
aW5pc2hpbmdUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpKTsKIH0KQEAg
LTE2NTYsNyArMTY3Myw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rp
b24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3RpCiAgICAgaWYgKCFjYWxs
YmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXByZXBhcmVUb0ZpbmlzaFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgIGlmICghcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9y
dGluZykpIHsKICAgICAgICAgaWYgKCFtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5z
KCZ0cmFuc2FjdGlvbi5kYXRhYmFzZUNvbm5lY3Rpb24oKSkpIHsKICAgICAgICAgICAgIC8vIFRo
aXMgZGF0YWJhc2UgY29ubmVjdGlvbiBpcyBjbG9zaW5nIG9yIGhhcyBhbHJlYWR5IGNsb3NlZCwg
c28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gbWVzc2FnaW5nIGJhY2sgdG8gaXQgYWJvdXQgdGhlIGFi
b3J0IGZhaWxpbmcuCiAgICAgICAgICAgICBmb3JnZXRFcnJvckNhbGxiYWNrKGNhbGxiYWNrSUQp
OwpAQCAtMTcxMyw3ICsxNzMwLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bUFib3J0VHJhbnNhY3Rpb24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLAogICAgICAgICBt
X2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPigqbV92ZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwogICAgIH0KIAot
ICAgIHBlcmZvcm1FcnJvckNhbGxiYWNrKGNhbGxiYWNrSWRlbnRpZmllciwgZXJyb3IpOworICAg
IElEQkVycm9yIHJlc3VsdCA9IHRyYW5zYWN0aW9uLT5zdGF0ZSgpID09IFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OlN0YXRlOjpBYm9ydGVkID8gdHJhbnNhY3Rpb24tPnJlc3VsdCgpIDog
ZXJyb3I7CisgICAgcGVyZm9ybUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCByZXN1
bHQpOwogCiAgICAgdHJhbnNhY3Rpb25Db21wbGV0ZWQoV1RGTW92ZSh0cmFuc2FjdGlvbikpOwog
fQpAQCAtMjI3Nyw2ICsyMjk1LDQ3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnNldFF1b3Rh
KHVpbnQ2NF90IHF1b3RhKQogICAgICAgICBtX2JhY2tpbmdTdG9yZS0+c2V0UXVvdGEocXVvdGEp
OwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRyYW5zYWN0aW9uT25NYWluVGhy
ZWFkKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIHRy
YW5zYWN0aW9uLnNldFJlc3VsdChtX2JhY2tpbmdTdG9yZS0+YWJvcnRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSk7CisgICAgdHJhbnNhY3Rpb24uc2V0U3RhdGUo
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQpOworfQorCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKK3sKKyAgICB0cmFuc2FjdGlvbi5z
ZXRSZXN1bHQobV9iYWNraW5nU3RvcmUtPmNvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCkpKTsKKyAgICB0cmFuc2FjdGlvbi5zZXRTdGF0ZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGVkKTsKK30KKwordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9y
KG1faW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5rZXlzKCkpKSB7CisgICAgICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgICAg
ICBhYm9ydFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKCp0cmFuc2FjdGlvbik7CisgICAgfQorCisg
ICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fZmluaXNoaW5nVHJhbnNh
Y3Rpb25zLmtleXMoKSkpIHsKKyAgICAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+aGFzVHJhbnNh
Y3Rpb24oaWRlbnRpZmllcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRv
IHRyYW5zYWN0aW9uID0gbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOwor
ICAgICAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5zdGF0ZSgpKSB7CisgICAgICAgIGNhc2UgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0aW5nOgorICAgICAgICAgICAg
YWJvcnRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCgqdHJhbnNhY3Rpb24pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6
OkNvbW1pdHRpbmc6CisgICAgICAgICAgICBjb21taXRUcmFuc2FjdGlvbk9uTWFpblRocmVhZCgq
dHJhbnNhY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIGNhc2UgVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQ6CisgICAgICAgIGNhc2UgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkNvbW1pdHRlZDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuaAppbmRleCBlM2E3YjFiMWNlNTI0YzkyMmUyZWQ5MDI1NDE5NzA4M2UyYzliZDI2Li5iMzAy
ZjAzZDgyMWRkZDlkYzQ4OWU0YmRhNmI1Zjk1ZWVmNGNhMzY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UXVvdGEodWlu
dDY0X3QpOwogCisgICAgdm9pZCBmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKTsKKwogcHJpdmF0
ZToKICAgICB2b2lkIGhhbmRsZURhdGFiYXNlT3BlcmF0aW9ucygpOwogICAgIHZvaWQgaGFuZGxl
Q3VycmVudE9wZXJhdGlvbigpOwpAQCAtMjM3LDcgKzIzOSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBvcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQoKTsKICAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gdGFrZU5leHRSdW5uYWJsZVRyYW5zYWN0aW9uKGJvb2wm
IGhhZERlZmVycmVkVHJhbnNhY3Rpb25zKTsKIAotICAgIGJvb2wgcHJlcGFyZVRvRmluaXNoVHJh
bnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIGJvb2wgcHJlcGFy
ZVRvRmluaXNoVHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlKTsKKyAgICB2b2lkIGFib3J0VHJhbnNhY3Rp
b25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYpOworICAgIHZvaWQg
Y29tbWl0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
biYpOwogICAgIAogICAgIHZvaWQgY2xlYXJTdGFsZVBlbmRpbmdPcGVuREJSZXF1ZXN0cygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAppbmRleCA0ZjNjMjAx
NTI4NmYyMjE4NzNiY2YyMjNlYzQxNGFlMzQwMTEzODg4Li4wMzQyMjZiMTRlMjVkNjU3NGVhNTkz
ZWEyYTIxOGFkODk1YmQ2NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uLmgKQEAgLTU2LDYgKzU2LDggQEAgY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uOwogCiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewogcHVibGljOgorICAgIGVudW0g
Y2xhc3MgU3RhdGUgeyBSdW5uaW5nLCBBYm9ydGluZywgQ29tbWl0dGluZywgQWJvcnRlZCwgQ29t
bWl0dGVkIH07CisKICAgICBzdGF0aWMgUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+
IGNyZWF0ZShVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKIAogICAgIH5VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKCk7CkBAIC05MCw2
ICs5MiwxMSBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBvYmplY3RT
dG9yZUlkZW50aWZpZXJzKCk7CiAKKyAgICB2b2lkIHNldFN0YXRlKFN0YXRlIHN0YXRlKSB7IG1f
c3RhdGUgPSBzdGF0ZTsgfQorICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZTsgfQorICAgIHZvaWQgc2V0UmVzdWx0KGNvbnN0IElEQkVycm9yJiBlcnJvcikgeyBtX3Jlc3Vs
dCA9IGVycm9yOyB9CisgICAgY29uc3QgSURCRXJyb3ImIHJlc3VsdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzdWx0OyB9CisKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
KTsKIApAQCAtMTAwLDYgKzEwNyw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPElE
QkRhdGFiYXNlSW5mbz4gbV9vcmlnaW5hbERhdGFiYXNlSW5mbzsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gbV9vYmplY3RTdG9yZUlkZW50aWZpZXJzOworCisgICAgU3RhdGUgbV9zdGF0ZSB7IFN0
YXRlOjpSdW5uaW5nIH07CisgICAgSURCRXJyb3IgbV9yZXN1bHQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggODJjMzQzZDU4ODNjMGRiMGYzMzFiNjIyOWZi
MjllODYwZjg5MTVmNS4uNGFmMjkwNzU5YjdlODI1ZDQyMzAwMjRmNmRiOWUwYTE2YzY0MTYxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKQEAgLTY4LDEzICs2OCwxMSBAQCB2b2lkIGRlY3JlbWVudFRyYW5zYWN0aW9u
SW5Qcm9ncmVzc0NvdW50KCkKICAgICAgICAgc19zdGF0aWNTUUxpdGVEYXRhYmFzZVRyYWNrZXJD
bGllbnQtPmRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbigpOwogfQogCi0jaWYgIUFTU0VSVF9ESVNB
QkxFRAogYm9vbCBoYXNUcmFuc2FjdGlvbkluUHJvZ3Jlc3MoKQogewogICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKHRyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICByZXR1cm4g
IXNfc3RhdGljU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50IHx8IHNfdHJhbnNhY3Rpb25JblBy
b2dyZXNzQ291bnRlciA+IDA7CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgU1FMaXRlRGF0
YWJhc2VUcmFja2VyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggZmFiYzllYWE0NTRjYWE3ZDFiNmRiMzU2MzY3NGRiOWYyZWNjODI0
Ny4uYWY0YjNjMTFlZGVlMjFlOWExOWNkMWQ5NWVkNmNlYmEzYTM2MWU4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTE5OTUsNiAr
MTk5NSwxMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNo
b3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2Vy
dmVycy52YWx1ZXMoKSkKKyAgICAgICAgc2VydmVyLT50cnlTdG9wKElEQlNlcnZlcjo6U2hvdWxk
Rm9yY2VTdG9wOjpZZXMpOworI2VuZGlmCiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOwogfQpAQCAtMjAwMiw2ICsyMDA2LDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSIsIHRoaXMpOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX2lkYlNlcnZlcnMu
dmFsdWVzKCkpCisgICAgICAgIHNlcnZlci0+dHJ5U3RvcChJREJTZXJ2ZXI6OlNob3VsZEZvcmNl
U3RvcDo6Tm8pOworI2VuZGlmCiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tu
b3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6WWVzKTsKIH0KIApAQCAtMjA0MSw2ICsyMDUwLDEw
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3N3U2VydmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7
CiAjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2VydmVycy52YWx1ZXMoKSkKKyAg
ICAgICAgc2VydmVyLT5yZXN1bWUoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQ2OGM3ODRiNGU3NTg4YTZmNWI1YTAz
ZGZkYWZmMzhkZjVjMTBjYjUuLmVmZWFkMTgzNDcyNzIxZjdlMGIyNmY5MGFjM2Q1NTE0MWY2YTQw
ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxOS0wNC0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KKworICAgICAgICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0
YWJhc2UgZmlsZXMgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5l
bnRseS5tbTogQWRkZWQuCisgICAgICAgICgtW0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVz
c2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdl
Ol0pOgorICAgICAgICAocnVuVGVzdEFuZENoZWNrUmVzdWx0KToKKyAgICAgICAgKGtlZXBOZXR3
b3JrUHJvY2Vzc0FjdGl2ZSk6CisgICAgICAgIChURVNUKToKKwogMjAxOS0wNC0yMyAgU3RlcGhh
biBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9u
XSBTdXBwb3J0IHJ1bm5pbmcgb2YgSlNDIHRlc3RzIG9uIHJlbW90ZSBwbGF5c3RhdGlvbiBkZXZp
Y2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYzMjk2NjU3NjhlNmMwOWFiNzdkYTk3NDVm
ZTM4ZDQ3YjM4ZmZhN2IuLmU5NjYwZjE2ZmQxMTM2NzNmYmRmMWMyZjRjNjA5ZTQwNmJmNDRhZDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODEsNiArNzgxLDggQEAKIAkJQzlDOUNENDMy
MUU2QTY4NjAwMTlEQjk2IC8qIGF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzlDOUNENDIyMUU2QTY2NzAwMTlEQjk2IC8qIGF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVs
ZW1lbnRzLmh0bWwgKi87IH07CiAJCUM5RTZERDM1MUVBOTdEMDgwMERENzhBQSAvKiBGaXJzdFJl
c3BvbmRlclN1cHByZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzlFNkREMzExRUE5NzJEODAwREQ3OEFBIC8qIEZpcnN0UmVzcG9uZGVyU3Vw
cHJlc3Npb24ubW0gKi87IH07CiAJCUM5RThFRTc1MjFERUQ5NDMwMDc5Nzc2NSAvKiBsb25nLXRl
c3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM5RThFRTc0MjFERUQ5MUUwMDc5Nzc2NSAvKiBsb25nLXRlc3QubXA0ICovOyB9OworCQlD
QTI4NzlEQjIyNkU2OUE1MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTI4NzlEQTIy
NkU2OTg2MDAxMDI2RjUgLyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gKi87IH07CisJ
CUNBMjg3OURDMjI2RTY5QjYwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENBMjg3OUQ5MjI2RTY5NzgwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5o
dG1sICovOyB9OwogCQlDQTM4NDU5NjIwQUUxN0E5MDA5OTBEM0IgLyogTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0EzODQ1OTUyMEFFMDEyRTAwOTkwRDNCIC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5tbSAqLzsgfTsKIAkJQ0E1Qjk0RDIyMTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWREQlRl
bXBGaWxlU2l6ZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0E1Qjk0RDAyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBG
aWxlU2l6ZS0xLmh0bWwgKi87IH07CiAJCUNBNUI5NEQzMjE5MEMwRjQwMDU5RkUzOCAvKiBJbmRl
eGVkREJUZW1wRmlsZVNpemUtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBNUI5NEQxMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVk
REJUZW1wRmlsZVNpemUtMi5odG1sICovOyB9OwpAQCAtMTE3NSw2ICsxMTc3LDcgQEAKIAkJCQk1
NzFGN0ZEMDFGMjk2MUZCMDA5NDY2NDggLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5LnNxbGl0ZTMtd2FsIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU3
NTk5RTJBMUYwNzFBQTAwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2Fy
ZENvbXBhdGliaWxpdHlSZWFkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc1OTlF
MkIxRjA3MUFBMDAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29t
cGF0aWJpbGl0eVdyaXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJQ0EyODc5REMy
MjZFNjlCNjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDIyMTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWRE
QlRlbXBGaWxlU2l6ZS0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDMy
MTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJQ0E5N0IzOTUyMTkzNjY3QTAwNDVERjZGIC8qIEluZGV4ZWREQlVz
ZXJEZWxldGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTIxMjgsNiArMjEzMSw4IEBA
CiAJCUM5QzlDRDQyMjFFNkE2NjcwMDE5REI5NiAvKiBhdXRvcGxheWluZy1tdWx0aXBsZS1tZWRp
YS1lbGVtZW50cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVs
ZW1lbnRzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOUU2REQzMTFFQTk3
MkQ4MDBERDc4QUEgLyogRmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM5RThFRTc0MjFERUQ5MUUwMDc5Nzc2NSAvKiBsb25nLXRlc3QubXA0ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0
aCA9ICJsb25nLXRlc3QubXA0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0EyODc5
RDkyMjZFNjk3ODAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlEQTIyNkU2OTg2MDAxMDI2RjUg
LyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0EzODQ1OTUyMEFFMDEyRTAwOTkwRDNCIC8qIExvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0E1Qjk0RDAyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxl
U2l6ZS0xLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiSW5kZXhlZERCVGVtcEZp
bGVTaXplLTEuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNBNUI5NEQxMjE5
MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIkluZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU5Miw2ICsyNTk3LDcgQEAKIAkJCQk1MUJDRUU0OTFD
ODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tICovLAogCQkJCTUxQjFF
RThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJzaXN0ZW5jZS5tbSAqLywKIAkJCQk1
NzU5OUUyMDFGMDcxOTE3MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dh
cmRDb21wYXRpYmlsaXR5Lm1tICovLAorCQkJCUNBMjg3OURBMjI2RTY5ODYwMDEwMjZGNSAvKiBJ
bmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSAqLywKIAkJCQlDQTVCOTRENjIxOTEwMDVCMDA1
OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLm1tICovLAogCQkJCUNBOTdCMzkyMjE5MzY2
M0IwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tICovLAogCQkJCTBFNDA0QThBMjE2
NkRERjgwMDgyNzFCQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQu
bW0gKi8sCkBAIC0yOTkyLDYgKzI5OTgsNyBAQAogCQkJCTU3MUY3RkNGMUYyOTYxRTEwMDk0NjY0
OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3FsaXRl
My13YWwgKi8sCiAJCQkJNTc1OTlFMjUxRjA3MTkyQzAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQuaHRtbCAqLywKIAkJCQk1NzU5OUUy
MzFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21w
YXRpYmlsaXR5V3JpdGUuaHRtbCAqLywKKwkJCQlDQTI4NzlEOTIyNkU2OTc4MDAxMDI2RjUgLyog
SW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLywKIAkJCQlDQTVCOTREMDIxOTBDMEUw
MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAqLywKIAkJCQlDQTVCOTRE
MTIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCAqLywKIAkJ
CQlDQTk3QjM5MzIxOTM2NjQ3MDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5odG1sICov
LApAQCAtNDE3Miw2ICs0MTc5LDcgQEAKIAkJCQk3QzgzRTBCRTFEMEE2NTEzMDBGRUJDRjMgLyog
SW5kZXhlZERCTXVsdGlQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkYxRDBB
NjUyMjAwRkVCQ0YzIC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTc1OTlFMjExRjA3MTkxOTAwQTNGQjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJh
Y2t3YXJkQ29tcGF0aWJpbGl0eS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNBMjg3OURCMjI2RTY5
QTUwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNBNUI5NEQ3MjE5MTAwNUIwMDU5RkUzOCAvKiBJbmRleGVkREJUZW1wRmlsZVNpemUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDQTk3QjM5NDIxOTM2NjYwMDA0NURGNkYgLyogSW5kZXhl
ZERCVXNlckRlbGV0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBOTVCREUxMUU5QkVDNUYwMDg2
NTQ5OCAvKiBJbmplY3RlZEJ1bmRsZUFwcGxlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NmNmNkMmQ2
ZmVjMTA1NmJhYzg2MzUzZWExZWEzOWZlYjJjNGY5NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHkuaHRtbApAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQ+CisKK3Zh
ciBkYjsKK3ZhciBzaG91bGRTZW5kU3VjY2Vzc01lc3NhZ2UgPSBmYWxzZTsKK3ZhciBoYXNBYm9y
dCA9IGZhbHNlOwordmFyIHJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIkluZGV4ZWRE
QlN1c3BlbmRJbW1pbmVudGx5Iik7CityZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoIkNvbnRpbnVlIik7CisgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICB0cmFuc2FjdGlvbiA9IGRiLnRy
YW5zYWN0aW9uKCJUZXN0T2JqZWN0U3RvcmUiLCAicmVhZHdyaXRlIik7CisgICAgICAgIG9iamVj
dFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
ICAgICBmb3IgKGxldCB0aW1lcyA9IDA7IHRpbWVzIDwgMTAwOyB0aW1lcysrKQorICAgICAgICAg
ICAgb2JqZWN0U3RvcmUucHV0KGksIGkpOworICAgICAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0g
KCk9PiB7CisgICAgICAgICAgICBpZiAoIWhhc0Fib3J0KSB7CisgICAgICAgICAgICAgICAgaGFz
QWJvcnQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNob3VsZFNlbmRTdWNjZXNzTWVzc2FnZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoIkV4cGVjdGVkIEFib3J0IEZvciBTdXNwZW5zaW9uIik7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCJVbmV4cGVjdGVkIEFib3J0Iik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9
ICgpPT4geworICAgICAgICAgICAgaWYgKHNob3VsZFNlbmRTdWNjZXNzTWVzc2FnZSkgeworICAg
ICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCJFeHBlY3RlZCBTdWNjZXNzIEFmdGVyIFJlc3VtZSIpOworICAgICAgICAgICAg
ICAgIHNob3VsZFNlbmRTdWNjZXNzTWVzc2FnZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorfQorCityZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgdmFyIGNyZWF0ZVJlcXVlc3QgPSBldmVudC50YXJnZXQucmVzdWx0LmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICBjcmVhdGVSZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiT2JqZWN0U3RvcmUgRXJyb3IiKTsKKyAgICB9
Cit9CisKK3JlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIk9wZW4gRXJyb3Ii
KTsKK30KKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YmIxYTYzODQzYjM1NTBlNDUyMWViNjQzZjllOWRhZGI4ZDI2MjA1Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQpAQCAtMCwwICsxLDk3IEBACisvKgorKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorCisjaW1wb3J0
IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VzZXJD
b250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworc3RhdGljIGJvb2wgcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlOworc3RhdGljIGJvb2wgaWRiQWNpdGl2aXRpZXNTdGFydGVkOworc3Rh
dGljIFJldGFpblB0cjxXS1NjcmlwdE1lc3NhZ2U+IGxhc3RTY3JpcHRNZXNzYWdlOworCitAaW50
ZXJmYWNlIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5TWVzc2FnZUhhbmRsZXIKKworLSAodm9pZCl1c2VyQ29udGVu
dENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9s
bGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7
CisgICAgaWRiQWNpdGl2aXRpZXNTdGFydGVkID0gdHJ1ZTsKKyAgICByZWNlaXZlZFNjcmlwdE1l
c3NhZ2UgPSB0cnVlOworICAgIGxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworQGVu
ZAorCitzdGF0aWMgdm9pZCBydW5UZXN0QW5kQ2hlY2tSZXN1bHQoTlNTdHJpbmcqIGV4cGVjdGVk
UmVzdWx0KQoreworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IHN0cmluZyA9IChOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0ZWRSZXN1bHQsIHN0cmluZy5nZXQoKSk7Cit9
CisKK3N0YXRpYyB2b2lkIGtlZXBOZXR3b3JrUHJvY2Vzc0FjdGl2ZSgpCit7CisgICAgW1tXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBjb21wbGV0aW9uSGFuZGxl
cjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqZGF0YVJlY29yZHMpIHsKKyAgICAg
ICAgaWYgKCFpZGJBY2l0aXZpdGllc1N0YXJ0ZWQpCisgICAgICAgICAgICBrZWVwTmV0d29ya1By
b2Nlc3NBY3RpdmUoKTsKKyAgICB9XTsKK30KKworVEVTVChJbmRleGVkREIsIEluZGV4ZWREQlN1
c3BlbmRJbW1pbmVudGx5KQoreworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tJbmRleGVk
REJTdXNwZW5kSW1taW5lbnRseU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIklu
ZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgaWRiQWNpdGl2aXRpZXNTdGFy
dGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBr
ZWVwTmV0d29ya1Byb2Nlc3NBY3RpdmUoKTsKKworICAgIHJ1blRlc3RBbmRDaGVja1Jlc3VsdChA
IkNvbnRpbnVlIik7CisKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9vbCBfc2Vu
ZE5ldHdvcmtQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5XTsKKyAgICBbY29uZmlndXJhdGlv
bi5nZXQoKS5wcm9jZXNzUG9vbCBfc2VuZE5ldHdvcmtQcm9jZXNzRGlkUmVzdW1lXTsKKworICAg
IHJ1blRlc3RBbmRDaGVja1Jlc3VsdChAIkV4cGVjdGVkIEFib3J0IEZvciBTdXNwZW5zaW9uIik7
CisgICAgcnVuVGVzdEFuZENoZWNrUmVzdWx0KEAiRXhwZWN0ZWQgU3VjY2VzcyBBZnRlciBSZXN1
bWUiKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368148</attachid>
            <date>2019-04-24 11:27:44 -0700</date>
            <delta_ts>2019-04-26 09:08:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196372-20190424112743.patch</filename>
            <type>text/plain</type>
            <size>53547</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDExOGUyYjE0NDM3OWExNjNhMWU5ZDg5
ZWI1MjA1NjFmMTI2NTNlYzEuLjAyZjBjZjdjMDc4YTJhNTUyOTE0MTAyZDY0ZTExM2YyMjdkNDVj
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMDQtMjQgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCBJREIgdHJhbnNhY3Rpb25zIHRvIHJlbGVhc2Ug
bG9ja2VkIGRhdGFiYXNlIGZpbGVzIHdoZW4gbmV0d29yayBwcm9jZXNzIGlzIHJlYWR5IHRvIHN1
c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NjM3MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg5MzAxMTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkZSBhIG1ldGhvZCB0byBzdXNw
ZW5kIHRoZSB0aHJlYWQgYW5kIGJsb2NrIG1haW4gdGhyZWFkIHVudGlsIHRoZSB0aHJlYWQgaXMg
c3VzcGVuZGVkLgorCisgICAgICAgICogd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwOgor
ICAgICAgICAoV1RGOjpDcm9zc1RocmVhZFRhc2tIYW5kbGVyOjp0YXNrUnVuTG9vcCk6CisgICAg
ICAgIChXVEY6OkNyb3NzVGhyZWFkVGFza0hhbmRsZXI6OnN1c3BlbmRBbmRXYWl0KToKKyAgICAg
ICAgKFdURjo6Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKToKKyAgICAgICAgKiB3dGYv
Q3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oOgorCiAyMDE5LTA0LTIxICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBHZW5lcmljIG1lbW9yeUZvb3Rw
cmludCgpIGltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgYm1hbGxvYyBvbiBMaW51eApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhlMzJiYTllMDU0MWE1ZDFmMDE5Zjc4OWQ0OWY5YWZiMzE2ZWQxZDguLmExN2Y5ZGM5
NWUyYzc5NTBmMzhiYWRkYzc2ODkzOTE5M2Y1YmM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
NSBAQAorMjAxOS0wNC0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQgZGF0YWJhc2UgZmls
ZXMgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdXNwZW5kIElEQiBkYXRhYmFzZSB0aHJlYWQgYW5kIGZpbmlzaCBvbmdv
aW5nIElEQiB0cmFuc2FjdGlvbnMgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBzdXNwZW5kaW5n
IG5ldHdvcmsgCisgICAgICAgIHByb2Nlc3MuCisKKyAgICAgICAgQVBJIHRlc3Q6IEluZGV4ZWRE
Qi5JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OnRyeVN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6
OnJlc3VtZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcDogUmVtb3ZlIHNvbWUgZXJyb3IgbG9nIG1lc3NhZ2VzLCBiZWNhdXNlIG5vdyB3
ZSBtYXkgdHJ5CisgICAgICAgIHBlcmZvcm1pbmcgZGF0YWJhc2Ugb3BlcmF0aW9ucyB3aXRob3V0
IGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQgb24g
dGhlIG1haW4gdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmNsZWFyT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6cmVuYW1lSW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0
c0luT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmRlbGV0ZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2JqZWN0U3RvcmVS
ZWNvcmRzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRBbGxJbmRleFJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1i
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnJldmVydEdlbmVyYXRlZEtleU51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om9wZW5D
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3Rv
cmU6Oml0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6Omhhc1RyYW5zYWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6
OmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90YUNoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRUcmFuc2FjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphYm9ydFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2U6OmRpZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJh
bnNhY3Rpb25Pbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZTo6ZmluaXNoQWN0aXZlVHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpz
ZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OnN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6c2V0UmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6cmVzdWx0IGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFzVHJhbnNhY3Rpb25JblBy
b2dyZXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg6
CisKIDIwMTktMDQtMjMgIFJlbXkgRGVtYXJlc3QgIDxyZGVtYXJlc3RAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBsYXlvdXQgaXNzdWVzIG9jY3VyaW5nIHdoZW4gZW50ZXJpbmcgZnVsbCBzY3Jl
ZW4gbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggZDM3ZDkyOTgwMTE2OTllMWIxOTQyYzZkMjgxOGU2ZGY4OWQ3
ZDUxMi4uZThhZWMwMzE3OGNmNDkxMGViODVkNGQwMTlkODNiNzFjNTAyYTNmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0wNC0yNCAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxl
LmNvbT4KKworICAgICAgICBTdG9wIElEQiB0cmFuc2FjdGlvbnMgdG8gcmVsZWFzZSBsb2NrZWQg
ZGF0YWJhc2UgZmlsZXMgd2hlbiBuZXR3b3JrIHByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MzcyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODkzMDExNj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVu
ZEltbWluZW50bHkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRv
U3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorCiAy
MDE5LTA0LTIzICBSZW15IERlbWFyZXN0ICA8cmRlbWFyZXN0QGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggbGF5b3V0IGlzc3VlcyBvY2N1cmluZyB3aGVuIGVudGVyaW5nIGZ1bGwgc2NyZWVuIG1v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwCmluZGV4IGIyNGRm
Y2M5NDg4ZjNmN2FhMzY2ZGYwNDJiNDY3ZDQzZDZmZTgxYTkuLjQ1ZWMwNDE3NzljZjgyZjY3M2Ji
MmY4OTc3YTYyZDlhZTMzYjAxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhy
ZWFkVGFza0hhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Nyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwCkBAIC02OCw4ICs2OCwyMCBAQCB2b2lkIENyb3NzVGhyZWFkVGFza0hhbmRsZXI6
OnRhc2tSdW5Mb29wKCkKICAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Rhc2tUaHJlYWRD
cmVhdGlvbkxvY2spOwogICAgIH0KIAotICAgIHdoaWxlICghbV90YXNrUXVldWUuaXNLaWxsZWQo
KSkKKyAgICB3aGlsZSAoIW1fdGFza1F1ZXVlLmlzS2lsbGVkKCkpIHsKICAgICAgICAgbV90YXNr
UXVldWUud2FpdEZvck1lc3NhZ2UoKS5wZXJmb3JtVGFzaygpOworCisgICAgICAgIExvY2tlcjxM
b2NrPiBzaG91bGRTdXNwZW5kTG9ja2VyKG1fc2hvdWxkU3VzcGVuZExvY2spOworICAgICAgICB3
aGlsZSAobV9zaG91bGRTdXNwZW5kKSB7CisgICAgICAgICAgICBtX3N1c3BlbmRlZExvY2subG9j
aygpOworICAgICAgICAgICAgaWYgKCFtX3N1c3BlbmRlZCkgeworICAgICAgICAgICAgICAgIG1f
c3VzcGVuZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX3N1c3BlbmRlZENvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc3VzcGVuZGVkTG9jay51
bmxvY2soKTsKKyAgICAgICAgICAgIG1fc2hvdWxkU3VzcGVuZENvbmRpdGlvbi53YWl0KG1fc2hv
dWxkU3VzcGVuZExvY2spOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIENyb3NzVGhyZWFk
VGFza0hhbmRsZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCkKQEAgLTgzLDUgKzk1
LDM0IEBAIHZvaWQgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1h
aW5UaHJlYWQoKQogICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwogfQogCit2b2lkIENyb3Nz
VGhyZWFkVGFza0hhbmRsZXI6OnN1c3BlbmRBbmRXYWl0KCkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Nob3VsZFN1
c3BlbmRMb2NrKTsKKyAgICAgICAgbV9zaG91bGRTdXNwZW5kID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBQb3N0IGFuIGVtcHR5IHRhc2sgdG8gZW5zdXJlIGRhdGFiYXNlIHRocmVhZCBrbm93cyBt
X3Nob3VsZFN1c3BlbmQgYW5kIHNldHMgbV9zdXNwZW5kZWQuCisgICAgcG9zdFRhc2soQ3Jvc3NU
aHJlYWRUYXNrKFtdKCkgeyB9KSk7CisKKyAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fc3VzcGVu
ZGVkTG9jayk7CisgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCkKKyAgICAgICAgbV9zdXNwZW5kZWRD
b25kaXRpb24ud2FpdChtX3N1c3BlbmRlZExvY2spOworfQorCit2b2lkIENyb3NzVGhyZWFkVGFz
a0hhbmRsZXI6OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fc2hvdWxkU3VzcGVuZExvY2spOworICAgIGlmIChtX3Nob3Vs
ZFN1c3BlbmQpIHsKKyAgICAgICAgbV9zdXNwZW5kZWRMb2NrLmxvY2soKTsKKyAgICAgICAgaWYg
KG1fc3VzcGVuZGVkKQorICAgICAgICAgICAgbV9zdXNwZW5kZWQgPSBmYWxzZTsKKyAgICAgICAg
bV9zdXNwZW5kZWRMb2NrLnVubG9jaygpOworICAgICAgICBtX3Nob3VsZFN1c3BlbmQgPSBmYWxz
ZTsKKyAgICAgICAgbV9zaG91bGRTdXNwZW5kQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgIH0K
K30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Dcm9z
c1RocmVhZFRhc2tIYW5kbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Dcm9zc1RocmVhZFRhc2tIYW5k
bGVyLmgKaW5kZXggMjYzYjNkMDM1ZWNiZmMyZjhiNDE3YTlmMDIwMDgzMzM2NmRlZDY4MS4uZjA1
NDYwMWMyNDY2MWU0MjljZjhiOThkYjg5MGViYjVkOTIzMzc5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Ny
b3NzVGhyZWFkVGFza0hhbmRsZXIuaApAQCAtNDQsNiArNDQsOCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBwb3N0VGFzayhDcm9zc1RocmVhZFRhc2smJik7CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcG9zdFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2sm
Jik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3VzcGVuZEFuZFdhaXQoKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXN1bWUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGhh
bmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CkBAIC01Myw2ICs1NSwxNCBAQCBwcml2YXRl
OgogICAgIExvY2sgbV9tYWluVGhyZWFkUmVwbHlMb2NrOwogICAgIGJvb2wgbV9tYWluVGhyZWFk
UmVwbHlTY2hlZHVsZWQgeyBmYWxzZSB9OwogCisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgeyBm
YWxzZSB9OworICAgIENvbmRpdGlvbiBtX3Nob3VsZFN1c3BlbmRDb25kaXRpb247CisgICAgTG9j
ayBtX3Nob3VsZFN1c3BlbmRMb2NrOworICAgIAorICAgIGJvb2wgbV9zdXNwZW5kZWQgeyBmYWxz
ZSB9OworICAgIENvbmRpdGlvbiBtX3N1c3BlbmRlZENvbmRpdGlvbjsKKyAgICBMb2NrIG1fc3Vz
cGVuZGVkTG9jazsKKwogICAgIENyb3NzVGhyZWFkUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX3Rh
c2tRdWV1ZTsKICAgICBDcm9zc1RocmVhZFF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV90YXNrUmVw
bHlRdWV1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggYzZkN2Q0M2Y5ZWJhZGQyOTI0ODBj
ZjRlYWM0MDc4NzUxMDA5YTQwMS4uMjkxZjc2ZWQ1YWM1YmJiNzdjODRkZWZmOWMwYzY2NzljNzhi
YTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdWludDY0X3QgZGF0YWJhc2VzU2l6ZUZvck9yaWdpbigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0UXVvdGEodWludDY0X3QpID0gMDsKKworICAgIHZpcnR1YWwg
Ym9vbCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBjb25zdCA9
IDA7CiBwcm90ZWN0ZWQ6CiAgICAgSURCQmFja2luZ1N0b3JlKCkgeyBSRUxFQVNFX0FTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA1YmY0N2YyMTkxYzQ4M2E3YWQ4
MDdjOTYwMmViMTk2MGIwNTZiNWViLi4wNTRiN2UyZmFkOGZiMTcxZDgzNzIwMDdkYjlkYTE2ZDdj
ODc1NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJNZW1vcnlJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJTUUxpdGVE
YXRhYmFzZS5oIgorI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUg
IlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVJREJCYWNraW5nU3RvcmUuaCIK
ICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKQEAgLTgyOCw2ICs4MjksMzAgQEAgdm9pZCBJ
REJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCit2b2lkIElEQlNl
cnZlcjo6dHJ5U3RvcChTaG91bGRGb3JjZVN0b3Agc2hvdWxkRm9yY2VTdG9wKQoreworICAgIC8v
IE9ubHkgc3RvcCBub24tZXBoZW1lcmFsIElEQlNlcnZlcnMgdGhhdCBjYW4gaG9sZCBsb2NrZWQg
ZGF0YWJhc2UgZmlsZXMuCisgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN1c3BlbmRBbmRXYWl0KCk7CisgICAgaWYgKHNob3VsZEZvcmNl
U3RvcCA9PSBTaG91bGRGb3JjZVN0b3A6Ok5vICYmIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6aGFz
VHJhbnNhY3Rpb25JblByb2dyZXNzKCkpIHsKKyAgICAgICAgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
cjo6cmVzdW1lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8mIGRh
dGFiYXNlIDogbV91bmlxdWVJREJEYXRhYmFzZU1hcC52YWx1ZXMoKSkKKyAgICAgICAgZGF0YWJh
c2UtPmZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucygpOworfQorCit2b2lkIElEQlNlcnZlcjo6cmVz
dW1lKCkKK3sKKyAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ3Jvc3NUaHJlYWRUYXNrSGFuZGxlcjo6cmVzdW1lKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXgg
MGI4NDY4N2YyN2NiMzU4N2Q5ZGMzYTdmMjM2OTNhNjBmMjljNWRiYS4uNGQzMjhjNDgyMTU1NjRh
MzIzMDQ5ZWQ2YjUzN2JiZGJlMzdkYzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtNTgsNiArNTgsOCBAQCBjb25z
dCB1aW50NjRfdCBkZWZhdWx0UGVyT3JpZ2luUXVvdGEgPSA1MDAgKiBNQjsKIAogY2xhc3MgSURC
QmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXI7CiAKK2VudW0gY2xhc3MgU2hvdWxkRm9y
Y2VTdG9wIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgSURCU2VydmVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8SURCU2VydmVyPiwgcHVibGljIENyb3NzVGhyZWFkVGFza0hhbmRsZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxJREJTZXJ2ZXI+IHsKIHB1YmxpYzoKICAgICB1c2luZyBRdW90YU1h
bmFnZXJHZXR0ZXIgPSBXVEY6OkZ1bmN0aW9uPFN0b3JhZ2VRdW90YU1hbmFnZXIqKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBDbGllbnRPcmlnaW4mKT47CkBAIC0xMjQsNiArMTI2LDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBpbml0aWFsaXplUXVvdGFVc2VyKGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKSB7IGVuc3VyZVF1b3RhVXNlcihvcmlnaW4pOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHRyeVN0b3AoU2hvdWxkRm9yY2VTdG9wKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
c3VtZSgpOworCiBwcml2YXRlOgogICAgIElEQlNlcnZlcihQQUw6OlNlc3Npb25JRCwgSURCQmFj
a2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFnZXJHZXR0ZXImJik7CiAg
ICAgSURCU2VydmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImLCBRdW90YU1hbmFn
ZXJHZXR0ZXImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5kZXggNjRlNmNjN2Rl
MGNhNjc2N2VjMThkNTE0YmNhYWY0YmQ4YTU2MmM3Zi4uMTVmZTNjNDczOTk2YzZlNGYzN2U0ZjQz
ZmY1YTY1ZmNmNmZhM2FmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAtODUs
NiArODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25D
aGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogICAgIHZvaWQgcmVzdG9yZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KFJlZjxNZW1vcnlPYmplY3RTdG9yZT4mJik7CiAKKyAg
ICBib29sIGhhc1RyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgaWRlbnRp
ZmllcikgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFuc2FjdGlvbnMuY29udGFpbnMoaWRlbnRp
Zmllcik7IH0KKwogcHJpdmF0ZToKICAgICBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHRha2VP
YmplY3RTdG9yZUJ5SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCA0ODlkZWQ0ZTNiZDcwNjFkYjgyMWNkNjlmYjQw
MWM4NzEzNGRhYWE0Li5kMWIwNDdjZWY2NWFjM2Q5ZjkyZGJmM2ZkYmMxYzY0NTA4MjIyMGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTAwNSwxMCArMTAwNSw5IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3Blbigp
KTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0
aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGFuIG9i
amVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYg
KCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JqZWN0
IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisK
ICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNp
b25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYmpl
Y3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNhY3Rpb24iKTsKICAgICAgICAg
cmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2Jq
ZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIl9zIH07CkBAIC0x
MDYxLDEwICsxMDYwLDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHQKICAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8
ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBkZWxldGUgYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwotICAgIH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpICE9IElEQlRyYW5z
YWN0aW9uTW9kZTo6VmVyc2lvbmNoYW5nZSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQg
dG8gZGVsZXRlIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2Fj
dGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGRlbGV0ZSBhbiBvYmplY3Qgc3RvcmUgaW4gYSBub24tdmVyc2lvbi1jaGFuZ2UgdHJhbnNh
Y3Rpb24iX3MgfTsKQEAgLTExNTMsMTAgKzExNTEsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnJlbmFtZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2Fj
dGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9yZSB3aXRob3V0IGFuIGluLXBy
b2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5t
b2RlKCkgIT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gb2JqZWN0IHN0b3JlIGluIGEgbm9uLXZlcnNp
b24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIG9iamVjdCBzdG9yZSBpbiBhIG5vbi12ZXJz
aW9uLWNoYW5nZSB0cmFuc2FjdGlvbiJfcyB9OwpAQCAtMTE4OCwxMCArMTE4NSw5IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyCiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAog
ICAgIGF1dG8qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jl
c3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0
b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5z
YWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGNsZWFyIGFuIG9iamVjdCBzdG9yZSB3
aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAgfQorCiAgICAgaWYg
KHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpSZWFkb25seSkgewog
ICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIGluIGEg
cmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25v
d25FcnJvciwgIkF0dGVtcHQgdG8gY2xlYXIgYW4gb2JqZWN0IHN0b3JlIGluIGEgcmVhZC1vbmx5
IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0xMjI5LDEwICsxMjI1LDkgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byog
dHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
LSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5kZXggd2l0aG91dCBhbiBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5z
YWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSAh
PSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFu
c2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGNyZWF0ZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9uLWNoYW5nZSB0cmFuc2FjdGlv
biJfcyB9OwpAQCAtMTQyMiwxMCArMTQxNyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjCiAg
ICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIGluZGV4IHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGRlbGV0ZSBpbmRleCB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07
Ci0gICAgfQogCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgIT0gSURCVHJhbnNhY3Rpb25N
b2RlOjpWZXJzaW9uY2hhbmdlKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxl
dGUgaW5kZXggZHVyaW5nIGEgbm9uLXZlcnNpb24tY2hhbmdlIHRyYW5zYWN0aW9uIik7CkBAIC0x
NDc3LDEwICsxNDcwLDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpyZW5hbWVJ
bmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQ291bGQgbm90IHJlbmFtZSBpbmRleCJfcyB9Owog
CiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byByZW5hbWUgYW4gaW5kZXgg
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmVuYW1lIGFuIGluZGV4IHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSAhPSBJREJUcmFuc2FjdGlvbk1vZGU6OlZlcnNpb25jaGFuZ2UpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJlbmFtZSBhbiBpbmRleCBpbiBhIG5vbi12ZXJzaW9u
LWNoYW5nZSB0cmFuc2FjdGlvbiIpOwpAQCAtMTUxNiwxMCArMTUwNyw4IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpCiAgICAga2V5RXhpc3RzID0gZmFsc2U7CiAKICAgICBhdXRvKiB0cmFuc2Fj
dGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlm
ICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0b3JlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIHNlZSBpZiBrZXkgZXhpc3RzIGluIG9iamVjdHN0
b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKGtl
eURhdGEpOwogICAgIGlmICgha2V5QnVmZmVyKSB7CkBAIC0xNjkxLDEwICsxNjgwLDkgQEAgSURC
RXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwog
CiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxldGUgcmFuZ2UgZnJv
bSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYg
KCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgcmFuZ2UgZnJv
bSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIl9zIH07Ci0gICAg
fQorCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb25Nb2RlOjpS
ZWFkb25seSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gZGVsZXRlIHJlY29yZHMg
ZnJvbSBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iKTsKICAgICAg
ICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBkZWxldGUgcmVj
b3JkcyBmcm9tIGFuIG9iamVjdCBzdG9yZSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiJfcyB9
OwpAQCAtMTgxNCwxMCArMTgwMiw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgQVNT
RVJUKHZhbHVlLmJsb2JVUkxzKCkuc2l6ZSgpID09IHZhbHVlLmJsb2JGaWxlUGF0aHMoKS5zaXpl
KCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBzdG9yZSBhIHJl
Y29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biIpOworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkp
CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gc3Rv
cmUgYSByZWNvcmQgaW4gYW4gb2JqZWN0IHN0b3JlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJ
REJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1w
dCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkgdHJh
bnNhY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0
ZW1wdCB0byBzdG9yZSBhIHJlY29yZCBpbiBhbiBvYmplY3Qgc3RvcmUgaW4gYSByZWFkLW9ubHkg
dHJhbnNhY3Rpb24iX3MgfTsKQEAgLTE5ODMsMTAgKzE5NzAsOCBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0
cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwot
ICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBhIHJlY29yZCBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIGdldCBhIHJlY29yZCBmcm9tIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRv
IGtleSA9IGtleVJhbmdlLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCkBAIC0yMTYw
LDEwICsyMTQ1LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGkKICAgICBBU1NFUlQobV9zcWxp
dGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBnZXQgcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNh
Y3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVz
cygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRv
IGdldCByZWNvcmRzIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0gZ2V0QWxsUmVjb3Jkc0RhdGEua2V5
UmFuZ2VEYXRhLmxvd2VyS2V5OwogICAgIGlmIChrZXkuaXNOdWxsKCkpCkBAIC0yMjU2LDEwICsy
MjM5LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxJbmRleFJlY29y
ZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJgogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5p
c09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0
aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdldCBh
bGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJh
bnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9n
cmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRlbXB0
IHRvIGdldCBhbGwgaW5kZXggcmVjb3JkcyBmcm9tIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJv
Z3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CiAKICAgICBhdXRvIGN1cnNvciA9IHRyYW5z
YWN0aW9uLT5tYXliZU9wZW5CYWNraW5nU3RvcmVDdXJzb3IoZ2V0QWxsUmVjb3Jkc0RhdGEub2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCBnZXRBbGxSZWNvcmRzRGF0YS5pbmRleElkZW50aWZpZXIsIGdl
dEFsbFJlY29yZHNEYXRhLmtleVJhbmdlRGF0YSk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTIz
MDYsMTAgKzIyODcsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEluZGV4
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbgogICAgIEFTU0VSVChtX3Nx
bGl0ZURCLT5pc09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rp
b25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwg
IXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0
IHRvIGdldCBhbiBpbmRleCByZWNvcmQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dy
ZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24t
PmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAi
QXR0ZW1wdCB0byBnZXQgYW4gaW5kZXggcmVjb3JkIGZyb20gZGF0YWJhc2Ugd2l0aG91dCBhbiBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGlmIChyYW5nZS5pc0V4
YWN0bHlPbmVLZXkoKSkKICAgICAgICAgcmV0dXJuIHVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9y
T25lS2V5KGluZGV4SUQsIG9iamVjdFN0b3JlSUQsIHR5cGUsIHJhbmdlLmxvd2VyS2V5LCBnZXRS
ZXN1bHQpOwpAQCAtMjQxMiwxMCArMjM5MSw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAg
ICAgb3V0Q291bnQgPSAwOwogCiAgICAgYXV0byogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0gICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBnZXQgY291bnQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0
aW9uIik7CisgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3Mo
KSkKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBn
ZXQgY291bnQgZnJvbSBkYXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u
Il9zIH07Ci0gICAgfQogCiAgICAgYXV0byBjdXJzb3IgPSB0cmFuc2FjdGlvbi0+bWF5YmVPcGVu
QmFja2luZ1N0b3JlQ3Vyc29yKG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhJZGVudGlmaWVy
LCByYW5nZSk7CiAgICAgaWYgKCFjdXJzb3IpIHsKQEAgLTI0NzUsMTAgKzI0NTIsOSBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5pc09wZW4oKSk7CiAK
ICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dy
ZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBk
YXRhYmFzZSB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkKICAgICAgICAgcmV0dXJu
IElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiQXR0ZW1wdCB0byBnZW5lcmF0ZSBrZXkgaW4gZGF0
YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KKwog
ICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6UmVhZG9u
bHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBhIHJl
YWQtb25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3du
RXJyb3IsICJBdHRlbXB0IHRvIGdlbmVyYXRlIGtleSBpbiBhIHJlYWQtb25seSB0cmFuc2FjdGlv
biJfcyB9OwpAQCAtMjUwNCwxMCArMjQ4MCw5IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6cmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRpCiAg
ICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAogICAgIGF1dG8qIHRyYW5zYWN0aW9u
ID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF0
cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUgaW4gZGF0YWJhc2Ug
d2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpCiAgICAgICAgIHJldHVybiBJREJFcnJv
ciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0b3IgdmFsdWUg
aW4gZGF0YWJhc2Ugd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAg
IH0KKwogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uTW9kZTo6
UmVhZG9ubHkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHJldmVydCBrZXkgZ2Vu
ZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkF0dGVtcHQgdG8gcmV2ZXJ0IGtleSBnZW5lcmF0
b3IgdmFsdWUgaW4gYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24iX3MgfTsKQEAgLTI1MjUsMTAgKzI1
MDAsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5R2Vu
ZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNlSQogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5p
c09wZW4oKSk7CiAKICAgICBhdXRvKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0
aW9uLT5pblByb2dyZXNzKCkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHVwZGF0
ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4gaW4tcHJvZ3Jlc3Mg
dHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGRhdGFiYXNlIHdpdGhvdXQgYW4g
aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iX3MgfTsKLSAgICB9CisKICAgICBpZiAodHJhbnNhY3Rp
b24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbk1vZGU6OlJlYWRvbmx5KSB7CiAgICAgICAgIExP
R19FUlJPUigiQXR0ZW1wdCB0byB1cGRhdGUga2V5IGdlbmVyYXRvciB2YWx1ZSBpbiBhIHJlYWQt
b25seSB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJy
b3IsICJBdHRlbXB0IHRvIHVwZGF0ZSBrZXkgZ2VuZXJhdG9yIHZhbHVlIGluIGEgcmVhZC1vbmx5
IHRyYW5zYWN0aW9uIl9zIH07CkBAIC0yNTUxLDEwICsyNTI1LDggQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3QKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCiAgICAgYXV0byog
dHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsK
LSAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBvcGVuIGEgY3Vyc29yIGluIGRhdGFiYXNlIHdp
dGhvdXQgYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9u
IHx8ICF0cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3Ig
eyBVbmtub3duRXJyb3IsICJBdHRlbXB0IHRvIG9wZW4gYSBjdXJzb3IgaW4gZGF0YWJhc2Ugd2l0
aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbiJfcyB9OwotICAgIH0KIAogICAgIGF1dG8q
IGN1cnNvciA9IHRyYW5zYWN0aW9uLT5tYXliZU9wZW5DdXJzb3IoaW5mbyk7CiAgICAgaWYgKCFj
dXJzb3IpIHsKQEAgLTI1ODUsMTAgKzI1NTcsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5n
U3RvcmU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwog
CiAgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIGN1cnNvci0+dHJhbnNh
Y3Rpb24oKS0+dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkgPT0gdHJhbnNhY3Rpb25JZGVudGlmaWVy
KTsKIAotICAgIGlmICghY3Vyc29yLT50cmFuc2FjdGlvbigpIHx8ICFjdXJzb3ItPnRyYW5zYWN0
aW9uKCktPmluUHJvZ3Jlc3MoKSkgewotICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gaXRl
cmF0ZSBhIGN1cnNvciB3aXRob3V0IGFuIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAg
aWYgKCFjdXJzb3ItPnRyYW5zYWN0aW9uKCkgfHwgIWN1cnNvci0+dHJhbnNhY3Rpb24oKS0+aW5Q
cm9ncmVzcygpKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJBdHRl
bXB0IHRvIGl0ZXJhdGUgYSBjdXJzb3Igd2l0aG91dCBhbiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv
biJfcyB9OwotICAgIH0KIAogICAgIGF1dG8ga2V5ID0gZGF0YS5rZXlEYXRhOwogICAgIGF1dG8g
cHJpbWFyeUtleSA9IGRhdGEucHJpbWFyeUtleURhdGE7CkBAIC0yNzE4LDYgKzI2ODgsMTIgQEAg
dm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNsb3NlU1FMaXRlREIoKQogICAgIG1fc3FsaXRl
REIgPSBudWxscHRyOwogfQogCitib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aGFzVHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV90cmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJC
YWNraW5nU3RvcmUuaAppbmRleCA1NmI1MTdjMmE2MTA3NDRiZGVmMjBlMTg4OWMwNjMxYzMwYWFm
YjU4Li5jN2Q1Njg0M2M3YmM3M2U2ZTc0NTA3YjUzMzQ5ODk1N2FjYmY2MWRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBTdHJpbmcgZnVsbERhdGFiYXNlUGF0aEZvckRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGRhdGFiYXNlTmFtZUZyb21GaWxlKGNvbnN0IFN0cmluZyYpOwog
CisgICAgYm9vbCBoYXNUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBj
b25zdCBmaW5hbDsKIHByaXZhdGU6CiAgICAgU3RyaW5nIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1l
KCkgY29uc3Q7CiAgICAgU3RyaW5nIGZ1bGxEYXRhYmFzZVBhdGgoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCmluZGV4IDg4YWMyZDlkOWY2MzA1OThkYmQ1NzE5NWY0NTliNDRjZTQ3
NTlkOTguLjRiNTRkOWMyZGYyMzljZmJkZWQ2MWJkMDBkOTA5M2NjYWNhZjUyYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMTU2NywxMyArMTU2NywxNCBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpkaWRQZXJmb3JtSXRlcmF0ZUN1cnNvcih1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbgogICAgIHBlcmZvcm1HZXRSZXN1bHRDYWxsYmFjayhjYWxsYmFja0lkZW50aWZp
ZXIsIGVycm9yLCByZXN1bHQpOwogfQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlOjpwcmVwYXJl
VG9GaW5pc2hUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbikKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2U6OnByZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9u
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpTdGF0ZSBzdGF0ZSkKIHsKICAgICBhdXRvIHRha2VuVHJhbnNhY3Rp
b24gPSBtX2luUHJvZ3Jlc3NUcmFuc2FjdGlvbnMudGFrZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpKTsKICAgICBpZiAoIXRha2VuVHJhbnNhY3Rpb24pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEFTU0VSVCghbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuY29udGFpbnModHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpOworICAgIHRha2VuVHJhbnNhY3Rpb24tPnNl
dFN0YXRlKHN0YXRlKTsKICAgICBtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rp
b24uaW5mbygpLmlkZW50aWZpZXIoKSwgV1RGTW92ZSh0YWtlblRyYW5zYWN0aW9uKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTE2MDEsNyArMTYwMiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNvbW1pdFRyYW5zYWN0aW9uQWZ0ZXJRdW90YUNoZWNrKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhCiAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXBy
ZXBhcmVUb0ZpbmlzaFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgIGlmICghcHJlcGFy
ZVRvRmluaXNoVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OlN0YXRlOjpDb21taXR0aW5nKSkgewogICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNl
Q29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkg
ewogICAgICAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGNsb3Npbmcgb3Ig
aGFzIGFscmVhZHkgY2xvc2VkLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBtZXNzYWdpbmcgYmFj
ayB0byBpdCBhYm91dCB0aGUgY29tbWl0IGZhaWxpbmcuCiAgICAgICAgICAgICBmb3JnZXRFcnJv
ckNhbGxiYWNrKGNhbGxiYWNrSUQpOwpAQCAtMTYyOSw3ICsxNjMwLDIzIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRpZFBlcmZvcm1Db21taXRUcmFuc2FjdGlvbih1aW50NjRfdCBjYWxsYmFj
a0lkZW50aWZpZXIsCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coSW5kZXhl
ZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rp
b24gLSAlcyIsIHRyYW5zYWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIGVy
cm9yKTsKKyAgICBJREJFcnJvciByZXN1bHQgPSBlcnJvcjsKKyAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV9maW5pc2hpbmdUcmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7Cisg
ICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+c3RhdGUoKSkgeworICAgIGNhc2UgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0ZWQ6CisgICAgICAgIHJlc3VsdCA9IElEQkVy
cm9yIHsgVW5rbm93bkVycm9yLCAiVHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBhYm9ydGVkIl9zIH07
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
U3RhdGU6OkNvbW1pdHRlZDoKKyAgICAgICAgcmVzdWx0ID0gdHJhbnNhY3Rpb24tPnJlc3VsdCgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OlN0YXRlOjpDb21taXR0aW5nOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OlN0YXRlOjpSdW5uaW5nOgorICAgIGNhc2UgVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0aW5nOgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CisKKyAgICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50
aWZpZXIsIHJlc3VsdCk7CiAKICAgICB0cmFuc2FjdGlvbkNvbXBsZXRlZChtX2ZpbmlzaGluZ1Ry
YW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwogfQpAQCAtMTY1Niw3ICsx
NjczLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGkKICAgICBpZiAoIWNhbGxiYWNrSUQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghcHJlcGFyZVRvRmluaXNoVHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24pKSB7CisgICAgaWYgKCFwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbih0cmFuc2Fj
dGlvbiwgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6U3RhdGU6OkFib3J0aW5nKSkgewog
ICAgICAgICBpZiAoIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuY29udGFpbnMoJnRyYW5zYWN0
aW9uLmRhdGFiYXNlQ29ubmVjdGlvbigpKSkgewogICAgICAgICAgICAgLy8gVGhpcyBkYXRhYmFz
ZSBjb25uZWN0aW9uIGlzIGNsb3Npbmcgb3IgaGFzIGFscmVhZHkgY2xvc2VkLCBzbyB0aGVyZSBp
cyBubyBwb2ludCBpbiBtZXNzYWdpbmcgYmFjayB0byBpdCBhYm91dCB0aGUgYWJvcnQgZmFpbGlu
Zy4KICAgICAgICAgICAgIGZvcmdldEVycm9yQ2FsbGJhY2soY2FsbGJhY2tJRCk7CkBAIC0xNzEz
LDcgKzE3MzAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtQWJvcnRUcmFu
c2FjdGlvbih1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsCiAgICAgICAgIG1fZGF0YWJhc2VJ
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCptX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi0+b3JpZ2luYWxEYXRhYmFzZUluZm8oKSk7CiAgICAgfQogCi0gICAgcGVyZm9y
bUVycm9yQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvcik7CisgICAgSURCRXJyb3Ig
cmVzdWx0ID0gdHJhbnNhY3Rpb24tPnN0YXRlKCkgPT0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbjo6U3RhdGU6OkFib3J0ZWQgPyB0cmFuc2FjdGlvbi0+cmVzdWx0KCkgOiBlcnJvcjsKKyAg
ICBwZXJmb3JtRXJyb3JDYWxsYmFjayhjYWxsYmFja0lkZW50aWZpZXIsIHJlc3VsdCk7CiAKICAg
ICB0cmFuc2FjdGlvbkNvbXBsZXRlZChXVEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiB9CkBAIC0yMjc3
LDYgKzIyOTUsNDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6c2V0UXVvdGEodWludDY0X3Qg
cXVvdGEpCiAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5zZXRRdW90YShxdW90YSk7CiB9CiAKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmFib3J0VHJhbnNhY3Rpb25Pbk1haW5UaHJlYWQoVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgdHJhbnNhY3Rpb24u
c2V0UmVzdWx0KG1fYmFja2luZ1N0b3JlLT5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCkpKTsKKyAgICB0cmFuc2FjdGlvbi5zZXRTdGF0ZShVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZCk7Cit9CisKK3ZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIHRyYW5zYWN0aW9uLnNldFJlc3VsdCht
X2JhY2tpbmdTdG9yZS0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uaW5mbygpLmlkZW50
aWZpZXIoKSkpOworICAgIHRyYW5zYWN0aW9uLnNldFN0YXRlKFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OlN0YXRlOjpDb21taXR0ZWQpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpmaW5pc2hBY3RpdmVUcmFuc2FjdGlvbnMoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9pblByb2dy
ZXNzVHJhbnNhY3Rpb25zLmtleXMoKSkpIHsKKyAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1f
aW5Qcm9ncmVzc1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgIGFib3J0VHJh
bnNhY3Rpb25Pbk1haW5UaHJlYWQoKnRyYW5zYWN0aW9uKTsKKyAgICB9CisKKyAgICBmb3IgKGF1
dG8mIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9maW5pc2hpbmdUcmFuc2FjdGlvbnMua2V5
cygpKSkgeworICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5oYXNUcmFuc2FjdGlvbihpZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX2ZpbmlzaGluZ1RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgIHN3
aXRjaCAodHJhbnNhY3Rpb24tPnN0YXRlKCkpIHsKKyAgICAgICAgY2FzZSBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRpbmc6CisgICAgICAgICAgICBhYm9ydFRyYW5z
YWN0aW9uT25NYWluVGhyZWFkKCp0cmFuc2FjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGlu
ZzoKKyAgICAgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uT25NYWluVGhyZWFkKCp0cmFuc2FjdGlv
bik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpTdGF0ZTo6UnVubmluZzoKKyAgICAgICAgY2FzZSBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpTdGF0ZTo6QWJvcnRlZDoKKyAgICAgICAgY2FzZSBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpTdGF0ZTo6Q29tbWl0dGVkOgorICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4
IGUzYTdiMWIxY2U1MjRjOTIyZTJlZDkwMjU0MTk3MDgzZTJjOWJkMjYuLmIzMDJmMDNkODIxZGRk
OWRjNDg5ZTRiZGE2YjVmOTVlZWY0Y2EzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC0x
MjcsNiArMTI3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRRdW90YSh1aW50NjRfdCk7CiAK
KyAgICB2b2lkIGZpbmlzaEFjdGl2ZVRyYW5zYWN0aW9ucygpOworCiBwcml2YXRlOgogICAgIHZv
aWQgaGFuZGxlRGF0YWJhc2VPcGVyYXRpb25zKCk7CiAgICAgdm9pZCBoYW5kbGVDdXJyZW50T3Bl
cmF0aW9uKCk7CkBAIC0yMzcsNyArMjM5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZXJhdGlv
bkFuZFRyYW5zYWN0aW9uVGltZXJGaXJlZCgpOwogICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uPiB0YWtlTmV4dFJ1bm5hYmxlVHJhbnNhY3Rpb24oYm9vbCYgaGFkRGVmZXJy
ZWRUcmFuc2FjdGlvbnMpOwogCi0gICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgYm9vbCBwcmVwYXJlVG9GaW5pc2hU
cmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6U3RhdGUpOworICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbk9uTWFpblRo
cmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CisgICAgdm9pZCBjb21taXRUcmFu
c2FjdGlvbk9uTWFpblRocmVhZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CiAgICAg
CiAgICAgdm9pZCBjbGVhclN0YWxlUGVuZGluZ09wZW5EQlJlcXVlc3RzKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCmluZGV4IDRmM2MyMDE1Mjg2ZjIyMTg3
M2JjZjIyM2VjNDE0YWUzNDAxMTM4ODguLjAzNDIyNmIxNGUyNWQ2NTc0ZWE1OTNlYTJhMjE4YWQ4
OTViZDY2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApA
QCAtNTYsNiArNTYsOCBAQCBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CiAKIGNs
YXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBTdGF0
ZSB7IFJ1bm5pbmcsIEFib3J0aW5nLCBDb21taXR0aW5nLCBBYm9ydGVkLCBDb21taXR0ZWQgfTsK
KwogICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3JlYXRlKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwog
CiAgICAgflVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oKTsKQEAgLTkwLDYgKzkyLDExIEBA
IHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG9iamVjdFN0b3JlSWRlbnRp
ZmllcnMoKTsKIAorICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUgc3RhdGUpIHsgbV9zdGF0ZSA9IHN0
YXRlOyB9CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAg
dm9pZCBzZXRSZXN1bHQoY29uc3QgSURCRXJyb3ImIGVycm9yKSB7IG1fcmVzdWx0ID0gZXJyb3I7
IH0KKyAgICBjb25zdCBJREJFcnJvciYgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7
IH0KKwogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogCkBAIC0x
MDAsNiArMTA3LDkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJ
bmZvPiBtX29yaWdpbmFsRGF0YWJhc2VJbmZvOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX29i
amVjdFN0b3JlSWRlbnRpZmllcnM7CisKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5p
bmcgfTsKKyAgICBJREJFcnJvciBtX3Jlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmNwcAppbmRleCA4MmMzNDNkNTg4M2MwZGIwZjMzMWI2MjI5ZmIyOWU4NjBmODkx
NWY1Li40YWYyOTA3NTliN2U4MjVkNDIzMDAyNGY2ZGI5ZTBhMTZjNjQxNjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNw
cApAQCAtNjgsMTMgKzY4LDExIEBAIHZvaWQgZGVjcmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNz
Q291bnQoKQogICAgICAgICBzX3N0YXRpY1NRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC0+ZGlk
RmluaXNoTGFzdFRyYW5zYWN0aW9uKCk7CiB9CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiBib29s
IGhhc1RyYW5zYWN0aW9uSW5Qcm9ncmVzcygpCiB7CiAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+
IGxvY2sodHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIHJldHVybiAhc19zdGF0aWNT
UUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQgfHwgc190cmFuc2FjdGlvbkluUHJvZ3Jlc3NDb3Vu
dGVyID4gMDsKIH0KLSNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5oCmluZGV4IDQ1YjAxYzY3MzdlOWQ1OTAzNzRkMTBlZmRjN2IyNzRiMDViNjg1YmMu
LjBlOWZmYmJmYTAxNjlmZjVkZGYxYmJlOTc3MGU4NzZhMDc1NTA0NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKQEAgLTM3
LDkgKzM3LDcgQEAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNyZW1lbnRUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NDb3VudCgpOwogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENsaWVudChTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQqKTsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzVHJhbnNhY3Rpb25JblByb2dyZXNzKCk7Ci0jZW5kaWYKIAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBm
YWJjOWVhYTQ1NGNhYTdkMWI2ZGIzNTYzNjc0ZGI5ZjJlY2M4MjQ3Li5hZjRiM2MxMWVkZWUyMWU5
YTE5Y2QxZDk1ZWQ2Y2ViYTNhMzYxZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTk5NSw2ICsxOTk1LDEwIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVu
UmVhZHlUb1N1c3BlbmQKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5k
SW1taW5lbnRseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorICAgIGZvciAoYXV0byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygpKQorICAg
ICAgICBzZXJ2ZXItPnRyeVN0b3AoSURCU2VydmVyOjpTaG91bGRGb3JjZVN0b3A6Olllcyk7Cisj
ZW5kaWYKICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJl
YWR5VG9TdXNwZW5kOjpObyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CkBAIC0y
MDAyLDYgKzIwMDYsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1dpbGxTdXNwZW5k
SW1taW5lbnRseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIiwgdGhpcyk7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KyAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1faWRiU2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAg
c2VydmVyLT50cnlTdG9wKElEQlNlcnZlcjo6U2hvdWxkRm9yY2VTdG9wOjpObyk7CisjZW5kaWYK
ICAgICBhY3R1YWxQcmVwYXJlVG9TdXNwZW5kKFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9T
dXNwZW5kOjpZZXMpOwogfQogCkBAIC0yMDQxLDYgKzIwNTAsMTAgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVzdW1lKCkKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVl
cygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsKICNlbmRpZgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGZvciAoYXV0
byYgc2VydmVyIDogbV9pZGJTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICBzZXJ2ZXItPnJlc3Vt
ZSgpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZDY4Yzc4NGI0ZTc1ODhhNmY1YjVhMDNkZmRhZmYzOGRmNWMxMGNiNS4u
ZWZlYWQxODM0NzI3MjFmN2UwYjI2ZjkwYWMzZDU1MTQxZjZhNDBkMyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE5
LTA0LTI0ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3Ag
SURCIHRyYW5zYWN0aW9ucyB0byByZWxlYXNlIGxvY2tlZCBkYXRhYmFzZSBmaWxlcyB3aGVuIG5l
dHdvcmsgcHJvY2VzcyBpcyByZWFkeSB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQ4OTMwMTE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRleGVkREJT
dXNwZW5kSW1taW5lbnRseS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciB1c2VyQ29u
dGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgIChydW5U
ZXN0QW5kQ2hlY2tSZXN1bHQpOgorICAgICAgICAoa2VlcE5ldHdvcmtQcm9jZXNzQWN0aXZlKToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE5LTA0LTIzICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5z
emFib0Bzb255LmNvbT4KIAogICAgICAgICBbUGxheVN0YXRpb25dIFN1cHBvcnQgcnVubmluZyBv
ZiBKU0MgdGVzdHMgb24gcmVtb3RlIHBsYXlzdGF0aW9uIGRldmljZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjMyOTY2NTc2OGU2YzA5YWI3N2RhOTc0NWZlMzhkNDdiMzhmZmE3Yi4uZTk2
NjBmMTZmZDExMzY3M2ZiZGYxYzJmNGM2MDllNDA2YmY0NGFkOSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTc4MSw2ICs3ODEsOCBAQAogCQlDOUM5Q0Q0MzIxRTZBNjg2MDAxOURCOTYgLyog
YXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUM5Q0Q0MjIxRTZBNjY3MDAx
OURCOTYgLyogYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCAqLzsgfTsK
IAkJQzlFNkREMzUxRUE5N0QwODAwREQ3OEFBIC8qIEZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOUU2REQz
MTFFQTk3MkQ4MDBERDc4QUEgLyogRmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbi5tbSAqLzsgfTsK
IAkJQzlFOEVFNzUyMURFRDk0MzAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzlFOEVFNzQyMURFRDkx
RTAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgKi87IH07CisJCUNBMjg3OURCMjI2RTY5QTUwMDEw
MjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENBMjg3OURBMjI2RTY5ODYwMDEwMjZGNSAvKiBJ
bmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSAqLzsgfTsKKwkJQ0EyODc5REMyMjZFNjlCNjAw
MTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0EyODc5RDkyMjZFNjk3ODAw
MTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWwgKi87IH07CiAJCUNBMzg0
NTk2MjBBRTE3QTkwMDk5MEQzQiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTM4NDU5NTIwQUUw
MTJFMDA5OTBEM0IgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLm1tICovOyB9OwogCQlD
QTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDQTVC
OTREMDIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAqLzsg
fTsKIAkJQ0E1Qjk0RDMyMTkwQzBGNDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0y
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0
bWwgKi87IH07CkBAIC0xMTc1LDYgKzExNzcsNyBAQAogCQkJCTU3MUY3RkQwMUYyOTYxRkIwMDk0
NjY0OCAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkuc3Fs
aXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTc1OTlFMkExRjA3MUFBMDAwQTNG
QjhDIC8qIEluZGV4ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eVJlYWQu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NzU5OUUyQjFGMDcxQUEwMDBBM0ZCOEMg
LyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5V3JpdGUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQlDQTI4NzlEQzIyNkU2OUI2MDAxMDI2RjUgLyog
SW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDQTVCOTREMjIxOTBDMEY0MDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDQTVCOTREMzIxOTBDMEY0MDA1OUZFMzggLyog
SW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlD
QTk3QjM5NTIxOTM2NjdBMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLApAQCAtMjEyOCw2ICsyMTMxLDggQEAKIAkJQzlDOUNENDIyMUU2QTY2
NzAwMTlEQjk2IC8qIGF1dG9wbGF5aW5nLW11bHRpcGxlLW1lZGlhLWVsZW1lbnRzLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiYXV0b3BsYXlpbmctbXVsdGlwbGUtbWVkaWEtZWxlbWVudHMuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5RTZERDMxMUVBOTcyRDgwMERENzhBQSAvKiBGaXJz
dFJlc3BvbmRlclN1cHByZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlyc3RSZXNw
b25kZXJTdXBwcmVzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzlFOEVF
NzQyMURFRDkxRTAwNzk3NzY1IC8qIGxvbmctdGVzdC5tcDQgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gImxvbmctdGVzdC5tcDQi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQTI4NzlEOTIyNkU2OTc4MDAxMDI2RjUg
LyogSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IEluZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNBMjg3OURBMjI2RTY5ODYwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5k
SW1taW5lbnRseS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElu
ZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDQTM4NDU5NTIwQUUwMTJFMDA5OTBEM0IgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDQTVCOTRE
MDIxOTBDMEUwMDA1OUZFMzggLyogSW5kZXhlZERCVGVtcEZpbGVTaXplLTEuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJJbmRleGVkREJUZW1wRmlsZVNpemUtMS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0E1Qjk0RDEyMTkwQzBFMDAwNTlGRTM4IC8qIElu
ZGV4ZWREQlRlbXBGaWxlU2l6ZS0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
SW5kZXhlZERCVGVtcEZpbGVTaXplLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNTkyLDYgKzI1OTcsNyBAQAogCQkJCTUxQkNFRTQ5MUM4NEY0QUYwMDQyQzgyRSAvKiBJ
bmRleGVkREJNdWx0aVByb2Nlc3MubW0gKi8sCiAJCQkJNTFCMUVFOEQxQzgwRjU4ODAwNjRGQjk4
IC8qIEluZGV4ZWREQlBlcnNpc3RlbmNlLm1tICovLAogCQkJCTU3NTk5RTIwMUYwNzE5MTcwMEEz
RkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0g
Ki8sCisJCQkJQ0EyODc5REEyMjZFNjk4NjAwMTAyNkY1IC8qIEluZGV4ZWREQlN1c3BlbmRJbW1p
bmVudGx5Lm1tICovLAogCQkJCUNBNUI5NEQ2MjE5MTAwNUIwMDU5RkUzOCAvKiBJbmRleGVkREJU
ZW1wRmlsZVNpemUubW0gKi8sCiAJCQkJQ0E5N0IzOTIyMTkzNjYzQjAwNDVERjZGIC8qIEluZGV4
ZWREQlVzZXJEZWxldGUubW0gKi8sCiAJCQkJMEU0MDRBOEEyMTY2RERGODAwODI3MUJBIC8qIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSAqLywKQEAgLTI5OTIsNiAr
Mjk5OCw3IEBACiAJCQkJNTcxRjdGQ0YxRjI5NjFFMTAwOTQ2NjQ4IC8qIEluZGV4ZWREQlN0cnVj
dHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5zcWxpdGUzLXdhbCAqLywKIAkJCQk1NzU5
OUUyNTFGMDcxOTJDMDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRD
b21wYXRpYmlsaXR5UmVhZC5odG1sICovLAogCQkJCTU3NTk5RTIzMUYwNzE5MkMwMEEzRkI4QyAv
KiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xvbmVCYWNrd2FyZENvbXBhdGliaWxpdHlXcml0ZS5odG1s
ICovLAorCQkJCUNBMjg3OUQ5MjI2RTY5NzgwMDEwMjZGNSAvKiBJbmRleGVkREJTdXNwZW5kSW1t
aW5lbnRseS5odG1sICovLAogCQkJCUNBNUI5NEQwMjE5MEMwRTAwMDU5RkUzOCAvKiBJbmRleGVk
REJUZW1wRmlsZVNpemUtMS5odG1sICovLAogCQkJCUNBNUI5NEQxMjE5MEMwRTAwMDU5RkUzOCAv
KiBJbmRleGVkREJUZW1wRmlsZVNpemUtMi5odG1sICovLAogCQkJCUNBOTdCMzkzMjE5MzY2NDcw
MDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLmh0bWwgKi8sCkBAIC00MTcyLDYgKzQxNzks
NyBAQAogCQkJCTdDODNFMEJFMUQwQTY1MTMwMEZFQkNGMyAvKiBJbmRleGVkREJNdWx0aVByb2Nl
c3MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCRjFEMEE2NTIyMDBGRUJDRjMgLyogSW5k
ZXhlZERCUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1NzU5OUUyMTFGMDcxOTE5
MDBBM0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0EyODc5REIyMjZFNjlBNTAwMTAyNkY1IC8qIEluZGV4
ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0E1Qjk0RDcyMTkx
MDA1QjAwNTlGRTM4IC8qIEluZGV4ZWREQlRlbXBGaWxlU2l6ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNBOTdCMzk0MjE5MzY2NjAwMDQ1REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0E5NUJERTExRTlCRUM1RjAwODY1NDk4IC8qIEluamVjdGVkQnVu
ZGxlQXBwbGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkuaHRt
bCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhlZERCU3VzcGVu
ZEltbWluZW50bHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2Y2Y2QyZDZmZWMxMDU2YmFjODYzNTNlYTFl
YTM5ZmViMmM0Zjk2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5odG1sCkBAIC0wLDAgKzEs
NDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KKwordmFyIGRiOwordmFyIHNob3VsZFNl
bmRTdWNjZXNzTWVzc2FnZSA9IGZhbHNlOwordmFyIGhhc0Fib3J0ID0gZmFsc2U7Cit2YXIgcmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHki
KTsKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiQ29udGludWUiKTsK
KyAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDsgaSsrKSB7CisgICAgICAgIHRyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oIlRlc3RPYmpl
Y3RTdG9yZSIsICJyZWFkd3JpdGUiKTsKKyAgICAgICAgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgICAgIGZvciAobGV0IHRpbWVz
ID0gMDsgdGltZXMgPCAxMDA7IHRpbWVzKyspCisgICAgICAgICAgICBvYmplY3RTdG9yZS5wdXQo
aSwgaSk7CisgICAgICAgIHRyYW5zYWN0aW9uLm9uYWJvcnQgPSAoKT0+IHsKKyAgICAgICAgICAg
IGlmICghaGFzQWJvcnQpIHsKKyAgICAgICAgICAgICAgICBoYXNBYm9ydCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgc2hvdWxkU2VuZFN1Y2Nlc3NNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2Fn
ZSgiRXhwZWN0ZWQgQWJvcnQgRm9yIFN1c3BlbnNpb24iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoIlVuZXhwZWN0ZWQgQWJvcnQiKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICB0cmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gKCk9PiB7CisgICAgICAgICAg
ICBpZiAoc2hvdWxkU2VuZFN1Y2Nlc3NNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoIkV4cGVjdGVk
IFN1Y2Nlc3MgQWZ0ZXIgUmVzdW1lIik7CisgICAgICAgICAgICAgICAgc2hvdWxkU2VuZFN1Y2Nl
c3NNZXNzYWdlID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3JlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgY3Jl
YXRlUmVxdWVzdCA9IGV2ZW50LnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RP
YmplY3RTdG9yZSIpOworICAgIGNyZWF0ZVJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCJPYmplY3RTdG9yZSBFcnJvciIpOworICAgIH0KK30KKworcmVxdWVzdC5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgiT3BlbiBFcnJvciIpOworfQorCis8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5kZXhl
ZERCU3VzcGVuZEltbWluZW50bHkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYjFhNjM4
NDNiMzU1MGU0NTIxZWI2NDNmOWU5ZGFkYjhkMjYyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVu
dGx5Lm1tCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+
CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorCitzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7Citz
dGF0aWMgYm9vbCBpZGJBY2l0aXZpdGllc1N0YXJ0ZWQ7CitzdGF0aWMgUmV0YWluUHRyPFdLU2Ny
aXB0TWVzc2FnZT4gbGFzdFNjcmlwdE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgSW5kZXhlZERCU3Vz
cGVuZEltbWluZW50bHlNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VI
YW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gSW5kZXhlZERCU3VzcGVuZEltbWluZW50
bHlNZXNzYWdlSGFuZGxlcgorCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBpZGJBY2l0aXZpdGll
c1N0YXJ0ZWQgPSB0cnVlOworICAgIHJlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CisgICAg
bGFzdFNjcmlwdE1lc3NhZ2UgPSBtZXNzYWdlOworfQorCitAZW5kCisKK3N0YXRpYyB2b2lkIHJ1
blRlc3RBbmRDaGVja1Jlc3VsdChOU1N0cmluZyogZXhwZWN0ZWRSZXN1bHQpCit7CisgICAgcmVj
ZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc3RyaW5n
ID0gKE5TU3RyaW5nICopW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldOworICAgIEVYUEVDVF9XS19T
VFJFUShleHBlY3RlZFJlc3VsdCwgc3RyaW5nLmdldCgpKTsKK30KKworc3RhdGljIHZvaWQga2Vl
cE5ldHdvcmtQcm9jZXNzQWN0aXZlKCkKK3sKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbFdlYnNpdGVEYXRhVHlwZXNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICpkYXRhUmVjb3JkcykgeworICAgICAgICBpZiAoIWlkYkFjaXRpdml0
aWVzU3RhcnRlZCkKKyAgICAgICAgICAgIGtlZXBOZXR3b3JrUHJvY2Vzc0FjdGl2ZSgpOworICAg
IH1dOworfQorCitURVNUKEluZGV4ZWREQiwgSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkpCit7
CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29u
ZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSW5kZXhlZERCU3VzcGVuZEltbWlu
ZW50bHkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKKyAgICBpZGJBY2l0aXZpdGllc1N0YXJ0ZWQgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIGtlZXBOZXR3b3JrUHJvY2Vzc0Fj
dGl2ZSgpOworCisgICAgcnVuVGVzdEFuZENoZWNrUmVzdWx0KEAiQ29udGludWUiKTsKKworICAg
IFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29sIF9zZW5kTmV0d29ya1Byb2Nlc3NXaWxs
U3VzcGVuZEltbWluZW50bHldOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQb29s
IF9zZW5kTmV0d29ya1Byb2Nlc3NEaWRSZXN1bWVdOworCisgICAgcnVuVGVzdEFuZENoZWNrUmVz
dWx0KEAiRXhwZWN0ZWQgQWJvcnQgRm9yIFN1c3BlbnNpb24iKTsKKyAgICBydW5UZXN0QW5kQ2hl
Y2tSZXN1bHQoQCJFeHBlY3RlZCBTdWNjZXNzIEFmdGVyIFJlc3VtZSIpOworfQorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>