<?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>27967</bug_id>
          
          <creation_ts>2009-08-03 19:59:39 -0700</creation_ts>
          <short_desc>Decouple the code that deals with the main DB and quota management from the rest of the DB code</short_desc>
          <delta_ts>2009-08-25 11:07:39 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dumitru Daniliuc">dumi</reporter>
          <assigned_to name="Dumitru Daniliuc">dumi</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jorlow</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136892</commentid>
    <comment_count>0</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-03 19:59:39 -0700</bug_when>
    <thetext>In Chromium, we want to read/write to the main DB only in the browser process. This will make sure that a malicious renderer cannot corrupt the main DB and will not be able to &quot;discover&quot; all existing databases in the system. We also need to move the quota management code to the browser process because it needs to keep track of what&apos;s going on in all renderer processes.

We intend to do this in a few steps:
1. Add a &quot;listener&quot; interface for SQLTransaction. This would allow us to remove SQLTransaction&apos;s dependencies on DatabaseTracker and OriginQuotaManager, as well as allow us to &quot;listen&quot; to different SQLTransaction stages more easily in the future, if needed.
2. Abstract out DatabaseTracker into an interface, and make all DB classes rely on the interface only. The code that&apos;s currently in DatabaseTracker.cpp would be WebCore&apos;s implementation of this interface.
3. Add the Chromium-specific implementations.

Patches for each step to come...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137211</commentid>
    <comment_count>1</comment_count>
      <attachid>34104</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-04 17:56:09 -0700</bug_when>
    <thetext>Created attachment 34104
SQLTransactionClient

Introducing SQLTransactionClient, a &quot;listener&quot; interface that allows us to remove dependencies on DatabaseTracker and OriginQuotaManager from SQLTransaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137434</commentid>
    <comment_count>2</comment_count>
      <attachid>34104</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-05 14:13:28 -0700</bug_when>
    <thetext>Comment on attachment 34104
SQLTransactionClient

I think you should just name SQLTransactionClient implementation SQLTransactionClient.cpp. There&apos;s no need to do an extra suffix. If you intend to provide a separate implementation in Chromium,
you can provide it in platform/chromium and name it SQLTransactionClientChromium.cpp.

Overall, the idea sounds great!

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 46789)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,47 @@
&gt; +2009-08-04  Dumitru Daniliuc  &lt;dumi@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Added a &quot;listener&quot; interface to SQLTransaction that allows us to

You can just say a client to SQLTransaction. It&apos;s a common term here.

&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt;  			&lt;File
&gt; +				RelativePath=&quot;..\storage\SQLTransactionClient.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\storage\SQLTransactionClientImpl.cpp&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt;  				RelativePath=&quot;..\storage\SQLTransactionErrorCallback.h&quot;
&gt;  				&gt;
&gt;  			&lt;/File&gt;


You will need to make changes to all build systems that currently use SQLTransaction.

&gt; Index: WebCore/storage/Database.cpp
&gt; ===================================================================
&gt; --- WebCore/storage/Database.cpp	(revision 46789)
&gt; +++ WebCore/storage/Database.cpp	(working copy)
&gt; @@ -50,6 +50,7 @@
&gt;  #include &quot;SQLiteFileSystem.h&quot;
&gt;  #include &quot;SQLiteStatement.h&quot;
&gt;  #include &quot;SQLResultSet.h&quot;
&gt; +#include &quot;SQLTransactionClient.h&quot;
&gt;  #include &lt;wtf/MainThread.h&gt;
&gt;  #endif
&gt;  
&gt; @@ -136,6 +137,7 @@ Database::Database(Document* document, c
&gt;      , m_deleted(false)
&gt;      , m_stopped(false)
&gt;      , m_opened(false)
&gt; +    , m_transactionClient(new SQLTransactionClient())

What&apos;s the point of a client if you don&apos;t pass it in as an argument?

&gt; Index: WebCore/storage/SQLTransactionClientImpl.cpp
&gt; ===================================================================
&gt; +namespace WebCore {
&gt; +
&gt; +void SQLTransactionClient::databaseChanged(Database* database) {
&gt; +  DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(database-&gt;securityOriginCopy().get(), database-&gt;stringIdentifier());

4 spaces, brace on new line.

&gt; +void SQLTransactionClient::databaseSizeChanged(Database* database) {

brace on new line.

&gt; +bool SQLTransactionClient::databaseExceedsQuota(Database* database) {

brace on new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137984</commentid>
    <comment_count>3</comment_count>
      <attachid>34296</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-07 11:08:50 -0700</bug_when>
    <thetext>Created attachment 34296
patch

(In reply to comment #2)

reverted all clean up changes. opened bug 28075 for that.

&gt; &gt; Index: WebCore/ChangeLog
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/ChangeLog	(revision 46789)
&gt; &gt; +++ WebCore/ChangeLog	(working copy)
&gt; &gt; @@ -1,3 +1,47 @@
&gt; &gt; +2009-08-04  Dumitru Daniliuc  &lt;dumi@chromium.org&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Added a &quot;listener&quot; interface to SQLTransaction that allows us to
&gt; 
&gt; You can just say a client to SQLTransaction. It&apos;s a common term here.

done.

&gt; &gt;  				&gt;
&gt; &gt;  			&lt;/File&gt;
&gt; &gt;  			&lt;File
&gt; &gt; +				RelativePath=&quot;..\storage\SQLTransactionClient.h&quot;
&gt; &gt; +				&gt;
&gt; &gt; +			&lt;/File&gt;
&gt; &gt; +			&lt;File
&gt; &gt; +				RelativePath=&quot;..\storage\SQLTransactionClientImpl.cpp&quot;
&gt; &gt; +				&gt;
&gt; &gt; +			&lt;/File&gt;
&gt; &gt; +			&lt;File
&gt; &gt;  				RelativePath=&quot;..\storage\SQLTransactionErrorCallback.h&quot;
&gt; &gt;  				&gt;
&gt; &gt;  			&lt;/File&gt;
&gt; 
&gt; 
&gt; You will need to make changes to all build systems that currently use
&gt; SQLTransaction.

d&apos;oh! added.

&gt; &gt; Index: WebCore/storage/Database.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/storage/Database.cpp	(revision 46789)
&gt; &gt; +++ WebCore/storage/Database.cpp	(working copy)
&gt; &gt; @@ -50,6 +50,7 @@
&gt; &gt;  #include &quot;SQLiteFileSystem.h&quot;
&gt; &gt;  #include &quot;SQLiteStatement.h&quot;
&gt; &gt;  #include &quot;SQLResultSet.h&quot;
&gt; &gt; +#include &quot;SQLTransactionClient.h&quot;
&gt; &gt;  #include &lt;wtf/MainThread.h&gt;
&gt; &gt;  #endif
&gt; &gt;  
&gt; &gt; @@ -136,6 +137,7 @@ Database::Database(Document* document, c
&gt; &gt;      , m_deleted(false)
&gt; &gt;      , m_stopped(false)
&gt; &gt;      , m_opened(false)
&gt; &gt; +    , m_transactionClient(new SQLTransactionClient())
&gt; 
&gt; What&apos;s the point of a client if you don&apos;t pass it in as an argument?

where would you pass it as an argument? i was thinking that we would have one default client. if somebody wants to monitor a transaction in more details (s)he would add more hooks/code to the default client. and if other ports (like Chromium) want a completely different functionality, they could just provide their own implementation and not include the default SQLTransaction.cpp file in their build. what are your thoughts on this?

&gt; &gt; Index: WebCore/storage/SQLTransactionClientImpl.cpp
&gt; &gt; ===================================================================
&gt; &gt; +namespace WebCore {
&gt; &gt; +
&gt; &gt; +void SQLTransactionClient::databaseChanged(Database* database) {
&gt; &gt; +  DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(database-&gt;securityOriginCopy().get(), database-&gt;stringIdentifier());
&gt; 
&gt; 4 spaces, brace on new line.

fixed.

&gt; &gt; +void SQLTransactionClient::databaseSizeChanged(Database* database) {
&gt; 
&gt; brace on new line.

fixed.

&gt; &gt; +bool SQLTransactionClient::databaseExceedsQuota(Database* database) {
&gt; 
&gt; brace on new line.

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138144</commentid>
    <comment_count>4</comment_count>
      <attachid>34296</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 14:21:06 -0700</bug_when>
    <thetext>Comment on attachment 34296
patch

I need more background in the ChangeLog here.  Why are we doing this?  So that Chromium can have the TransactionClient in a separate process?

0 seems like the wrong default here:
 71                                              PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;SQLTransactionWrapper&gt;, SQLTransactionClient* transactionClient = 0);

I would think that we would want transactions to &quot;work out of the box&quot; for webkit clients.  it seems possible here to construct a transaction which would not work correctly out of the box!

Style:
 48 void SQLTransactionClient::databaseSizeChanged(Database* database) {

Why is a copy needed here?
 59     RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;securityOriginCopy();

In general the chagnge looks fine.  I&apos;m concerned about the =0 default.  I also need more background in teh ChangeLog about why we&apos;re doing this (I&apos;m not opposed to it, but the ChangeLog needs to document our reasoning.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138195</commentid>
    <comment_count>5</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-07 15:42:22 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 34296 [details])
&gt; I need more background in the ChangeLog here.

Added some of the following explanation to ChangeLog.

&gt; Why are we doing this?  So that Chromium can have the TransactionClient in
&gt; a separate process?

Not exactly. SQLTransactionClient is supposed to have 2 functions:

1. (Not important for us at this point) Be a centralized place for getting notifications about certain events in a transaction.
2. (The main reason we&apos;re doing this) Provide an abstraction layer that allows each WebKit port to define how transactions interact with the main DB. For example, in Chromium we want to access the main DB only in the browser process.* So while WebCore&apos;s default implementation makes direct calls to DatabaseTracker, Chromium&apos;s implementation will send IPCs to the browser process.

* First, there&apos;s a security concern: we don&apos;t want a malicious renderer to be able to corrupt the main DB. And second, the main DB stores a bit of state (like per-origin quota) that needs to be synchronized across all renderers.

&gt; 0 seems like the wrong default here:
&gt;  71                                              PassRefPtr&lt;VoidCallback&gt;,
&gt; PassRefPtr&lt;SQLTransactionWrapper&gt;, SQLTransactionClient* transactionClient =
&gt; 0);
&gt; 
&gt; I would think that we would want transactions to &quot;work out of the box&quot; for
&gt; webkit clients.  it seems possible here to construct a transaction which
&gt; would not work correctly out of the box!

removed the default.

&gt; Style:
&gt;  48 void SQLTransactionClient::databaseSizeChanged(Database* database) {

fixed.

&gt; Why is a copy needed here?
&gt;  59     RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;securityOriginCopy();

it seems to be the only way to get the origin for a database from a Database object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138196</commentid>
    <comment_count>6</comment_count>
      <attachid>34338</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-07 15:42:51 -0700</bug_when>
    <thetext>Created attachment 34338
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138464</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-08-08 20:17:56 -0700</bug_when>
    <thetext>File: WebCore/storage/SQLTransaction.cpp

329             if (m_transactionClient)
392     if (m_transactionClient)
426     if (m_modifiedDatabase &amp;&amp; m_transactionClient)

There are a few tests for m_transactionClient being null in this file. Are those really needed, are there any situations where the client is expected to be null? (It looks like there aren&apos;t). And if there are no valid situations for a null client... maybe ASSERT(transClient) in the ctor.

File: WebCore/ChangeLog
34         * storage/SQLTransactionClient.cpp: Added.
35         (WebCore::SQLTransactionClient::databaseChanged):
36         (WebCore::SQLTransactionClient::databaseSizeChanged):
37         (WebCore::SQLTransactionClient::databaseExceedsQuota):

I think when adding new files, the preference is to not list all of the newly added methods. For changes to existing files, its useful to see specifically which methods changed, but not so for newly added files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138744</commentid>
    <comment_count>8</comment_count>
      <attachid>34488</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-10 11:23:22 -0700</bug_when>
    <thetext>Created attachment 34488
patch

(In reply to comment #7)
&gt; File: WebCore/storage/SQLTransaction.cpp
&gt; 
&gt; 329             if (m_transactionClient)
&gt; 392     if (m_transactionClient)
&gt; 426     if (m_modifiedDatabase &amp;&amp; m_transactionClient)
&gt; 
&gt; There are a few tests for m_transactionClient being null in this file. Are
&gt; those really needed, are there any situations where the client is expected to
&gt; be null? (It looks like there aren&apos;t). And if there are no valid situations for
&gt; a null client... maybe ASSERT(transClient) in the ctor.

done.

&gt; File: WebCore/ChangeLog
&gt; 34         * storage/SQLTransactionClient.cpp: Added.
&gt; 35         (WebCore::SQLTransactionClient::databaseChanged):
&gt; 36         (WebCore::SQLTransactionClient::databaseSizeChanged):
&gt; 37         (WebCore::SQLTransactionClient::databaseExceedsQuota):
&gt; 
&gt; I think when adding new files, the preference is to not list all of the newly
&gt; added methods. For changes to existing files, its useful to see specifically
&gt; which methods changed, but not so for newly added files.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138760</commentid>
    <comment_count>9</comment_count>
      <attachid>34496</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-10 11:53:47 -0700</bug_when>
    <thetext>Created attachment 34496
patch

Same patch, fixed a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139172</commentid>
    <comment_count>10</comment_count>
      <attachid>34617</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-11 17:07:30 -0700</bug_when>
    <thetext>Created attachment 34617
patch

Same patch, SQLTransactionClient&apos;s methods are no longer virtual as suggested by Michael.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139743</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-08-13 00:23:35 -0700</bug_when>
    <thetext>187             &apos;storage/SQLTransactionClientImpl.cpp&apos;,
Some of the make files make reference to SQLTransactionClientImpl.cpp, did you mean SQLTransactionClient.cpp here?

330     m_transactionClient-&gt;databaseSizeChanged(m_database.get());
So this method is invoked on the background db thread. 

392     m_shouldRetryCurrentStatement = m_transactionClient-&gt;databaseExceedsQuota(...);
And this one on the &apos;apartment&apos; thread of the Database object (the main thread)

426     m_transactionClient-&gt;databaseChanged(m_database.get());
And this one on the background thread

I would appreciate some indication of the threading usage in the SQLTransactionListener source files. To figure out how it was used, i had to track down the callsites. Not sure how to best indicate the threading rules... either doc comments in the .h file, or runtime asserts in the .cpp file?

38     // A &quot;listener&quot; interface to the SQLTransaction class. Allows
 39     // SQLTransaction to notify interested parties when certain things are
 40     // happening in a transaction.
 41     class SQLTransactionClient {
 42     public:
 43         // Notifies everybody that the database has changed. Called at the end
 44         // end of every successful transaction.
 45         void databaseChanged(Database*);
 46 
 47         // Notifies everybody that the size of the database file might have changed.
 48         // Called after executing each statement in a transaction
 49         void databaseSizeChanged(Database*);
 50 
 51         // Notifies everybody that the size of the database file exceeds its quota.
 52         // If this method returns true, the current statement in the transaction is
 53         // retried. Otherwise, the transaction is rolled back.
 54         //
 55         // This method should return true if and only if the quota for this database
 56         // file was increased (by the user, for example) since calling this method.
 57         bool databaseExceedsQuota(Database*);
 58     };
 59 }

After reading your doc comments, maybe these methods could be renamed for clarity.

void didCommitTransaction(...);  // for databaseChanged
void didExecuteStatement(...);  // for databaseSizeChanged
bool didExceedQuota(...);  // for databaseExceedsQuota

And would it make sense to have the SQLTransaction* be the parameter since it is a transaction listener, the caller can get the Database* from the accessor on the transaction object (i think).

Also, the new class (TransactionCoordinator) you just added is also a transaction listener of sorts. Should these two classes be merged? The TransactionCoordinator must be owned by the DBThread to properly serve its purpose. In this patch, you have the new &apos;listener&apos; object being owned by the Database object, but i think it could just as easily be owned by the DBThread and serve its purpose.

Wdyt?

60     RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;securityOriginCopy();

Making a copy of a refcounted object looks odd? Is it mutable? Is there no database-&gt;securityOrigin() accessor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140347</commentid>
    <comment_count>12</comment_count>
      <attachid>34873</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-14 15:02:27 -0700</bug_when>
    <thetext>Created attachment 34873
patch

(In reply to comment #11)
&gt; 187             &apos;storage/SQLTransactionClientImpl.cpp&apos;,
&gt; Some of the make files make reference to SQLTransactionClientImpl.cpp, did you
&gt; mean SQLTransactionClient.cpp here?

yes, fixed.

&gt; 330     m_transactionClient-&gt;databaseSizeChanged(m_database.get());
&gt; So this method is invoked on the background db thread. 
&gt; 
&gt; 392     m_shouldRetryCurrentStatement =
&gt; m_transactionClient-&gt;databaseExceedsQuota(...);
&gt; And this one on the &apos;apartment&apos; thread of the Database object (the main thread)
&gt; 
&gt; 426     m_transactionClient-&gt;databaseChanged(m_database.get());
&gt; And this one on the background thread
&gt; 
&gt; I would appreciate some indication of the threading usage in the
&gt; SQLTransactionListener source files. To figure out how it was used, i had to
&gt; track down the callsites. Not sure how to best indicate the threading rules...
&gt; either doc comments in the .h file, or runtime asserts in the .cpp file?

added ASSERTs in the .cpp file. i don&apos;t think we should make assumptions for all ports.

&gt; 38     // A &quot;listener&quot; interface to the SQLTransaction class. Allows
&gt;  39     // SQLTransaction to notify interested parties when certain things are
&gt;  40     // happening in a transaction.
&gt;  41     class SQLTransactionClient {
&gt;  42     public:
&gt;  43         // Notifies everybody that the database has changed. Called at the
&gt; end
&gt;  44         // end of every successful transaction.
&gt;  45         void databaseChanged(Database*);
&gt;  46 
&gt;  47         // Notifies everybody that the size of the database file might have
&gt; changed.
&gt;  48         // Called after executing each statement in a transaction
&gt;  49         void databaseSizeChanged(Database*);
&gt;  50 
&gt;  51         // Notifies everybody that the size of the database file exceeds
&gt; its quota.
&gt;  52         // If this method returns true, the current statement in the
&gt; transaction is
&gt;  53         // retried. Otherwise, the transaction is rolled back.
&gt;  54         //
&gt;  55         // This method should return true if and only if the quota for this
&gt; database
&gt;  56         // file was increased (by the user, for example) since calling this
&gt; method.
&gt;  57         bool databaseExceedsQuota(Database*);
&gt;  58     };
&gt;  59 }
&gt; 
&gt; After reading your doc comments, maybe these methods could be renamed for
&gt; clarity.
&gt; 
&gt; void didCommitTransaction(...);  // for databaseChanged
&gt; void didExecuteStatement(...);  // for databaseSizeChanged
&gt; bool didExceedQuota(...);  // for databaseExceedsQuota

changed.

&gt; And would it make sense to have the SQLTransaction* be the parameter since it
&gt; is a transaction listener, the caller can get the Database* from the accessor
&gt; on the transaction object (i think).

done. you&apos;re right: SQLTransactionCoordinator should work with SQLTransactions.

&gt; Also, the new class (TransactionCoordinator) you just added is also a
&gt; transaction listener of sorts. Should these two classes be merged?

i think we will eventually merge them. for now though, i think it&apos;s better to introduce SQLTransactionClient as a separate piece of code (to make it easier to review and understand).

&gt; The TransactionCoordinator must be owned by the DBThread to properly serve its
&gt; purpose. In this patch, you have the new &apos;listener&apos; object being owned by the
&gt; Database object, but i think it could just as easily be owned by the DBThread
&gt; and serve its purpose.
&gt; 
&gt; Wdyt?

done.

&gt; 60     RefPtr&lt;SecurityOrigin&gt; origin = database-&gt;securityOriginCopy();
&gt; 
&gt; Making a copy of a refcounted object looks odd? Is it mutable? Is there no
&gt; database-&gt;securityOrigin() accessor?

this seems to be the only accessor for getting the origin from a Database object. we could probably introduce a new accessor (or replace the existing one), but i wouldn&apos;t want to do this before talking to the authors of this code and understanding why they had a copying accessor here in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140830</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-08-17 14:03:17 -0700</bug_when>
    <thetext>(In reply to comment #12)

This lgtm, but you need a webkit reviewer.

&gt; added ASSERTs in the .cpp file

Thank you.

&gt; &gt; void didCommitTransaction(...);  // for databaseChanged
&gt; &gt; void didExecuteStatement(...);  // for databaseSizeChanged
&gt; &gt; bool didExceedQuota(...);  // for databaseExceedsQuota
&gt; 
&gt; changed.

Ah... much more webkitty ;)

&gt; this seems to be the only accessor for getting the origin from a Database
&gt; object. we could probably introduce a new accessor (or replace the existing
&gt; one), but i wouldn&apos;t want to do this before talking to the authors of this code
&gt; and understanding why they had a copying accessor here in the first place.

I see, it looks like this may have to do with thread safety. The class is refcounted but not a thread safe refcount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141107</commentid>
    <comment_count>14</comment_count>
      <attachid>34873</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-18 09:54:12 -0700</bug_when>
    <thetext>Comment on attachment 34873
patch

Looks good. A few non-blocking comments below.

&gt; +        * GNUmakefile.am:
&gt; +        * WebCore.gypi:
&gt; +        * WebCore.vcproj/WebCore.vcproj:
&gt; +        * WebCore.xcodeproj/project.pbxproj:

What about WebCore.pro and other build systems? I am assuming you grepped through all of them to make sure we won&apos;t introduce some port breakage here.

&gt; +        // Notifies everybody that the transaction was successfully commited.
&gt; +        void didCommitTransaction(SQLTransaction*);

I think &quot;Notifies everybody that&quot; is superfluous here and below.

&gt; +
&gt; +        // Notifies everybody that a statement in the given transaction has been executed.
&gt; +        void didExecuteStatement(SQLTransaction*);
&gt; +
&gt; +        // Notifies everybody that the size of the database file exceeds its quota.
&gt; +        // If this method returns true, the current statement in the transaction is
&gt; +        // retried. Otherwise, the transaction is rolled back.
&gt; +        bool didExceedQuota(SQLTransaction*);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141135</commentid>
    <comment_count>15</comment_count>
      <attachid>35052</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-18 11:02:28 -0700</bug_when>
    <thetext>Created attachment 35052
patch

Same patch, addressed Dimitri&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141139</commentid>
    <comment_count>16</comment_count>
      <attachid>35054</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-18 11:20:19 -0700</bug_when>
    <thetext>Created attachment 35054
patch

Forgot to add some build files to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141140</commentid>
    <comment_count>17</comment_count>
      <attachid>35054</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-18 11:21:22 -0700</bug_when>
    <thetext>Comment on attachment 35054
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141164</commentid>
    <comment_count>18</comment_count>
      <attachid>35054</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 12:20:44 -0700</bug_when>
    <thetext>Comment on attachment 35054
patch

Rejecting patch 35054 from commit-queue.  This patch will require manual commit.

Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;rebase&apos;]&quot;  exit_code: 1  cwd: None</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141237</commentid>
    <comment_count>19</comment_count>
      <attachid>35054</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:26:20 -0700</bug_when>
    <thetext>Comment on attachment 35054
patch

Sorry, we hit https://bugs.webkit.org/show_bug.cgi?id=28436</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141248</commentid>
    <comment_count>20</comment_count>
      <attachid>35054</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:40:06 -0700</bug_when>
    <thetext>Comment on attachment 35054
patch

Rejecting patch 35054 from commit-queue.  This patch will require manual commit.

Patch https://bugs.webkit.org/attachment.cgi?id=35054 from bug 27967 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141250</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 14:41:16 -0700</bug_when>
    <thetext>patching file WebCore/WebCore.xcodeproj/project.pbxproj
Hunk #2 succeeded at 8770 (offset 1 line).
Hunk #3 succeeded at 9879 (offset 2 lines).
Hunk #4 FAILED at 17320.
Hunk #5 succeeded at 19389 (offset 4 lines).
1 out of 5 hunks FAILED -- saving rejects to file WebCore/WebCore.xcodeproj/project.pbxproj.rej
patch -p0 &quot;WebCore/WebCore.xcodeproj/project.pbxproj&quot; returned 1.  Pass --force to ignore patch failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141278</commentid>
    <comment_count>22</comment_count>
      <attachid>35082</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-18 15:14:20 -0700</bug_when>
    <thetext>Created attachment 35082
resolved patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141293</commentid>
    <comment_count>23</comment_count>
      <attachid>35082</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-08-18 15:32:26 -0700</bug_when>
    <thetext>Comment on attachment 35082
resolved patch

carrying over the r+ flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141312</commentid>
    <comment_count>24</comment_count>
      <attachid>35082</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 16:30:57 -0700</bug_when>
    <thetext>Comment on attachment 35082
resolved patch

Rejecting patch 35082 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141314</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 16:32:26 -0700</bug_when>
    <thetext>Running tests from /Users/eseidel/Projects/WebKit2/LayoutTests
Testing 11101 test cases.
fast/profiler/compare-multiple-profiles.html -&gt; crashed

Maybe that test is just flakey, not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141330</commentid>
    <comment_count>26</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-18 17:15:15 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Running tests from /Users/eseidel/Projects/WebKit2/LayoutTests
&gt; Testing 11101 test cases.
&gt; fast/profiler/compare-multiple-profiles.html -&gt; crashed
&gt; 
&gt; Maybe that test is just flakey, not sure.

Must be a flaky test, and I don&apos;t think it&apos;s related to storage/DB in any way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141358</commentid>
    <comment_count>27</comment_count>
      <attachid>35082</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 19:03:47 -0700</bug_when>
    <thetext>Comment on attachment 35082
resolved patch

On the theory that the test is flakey, adding this back to the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141370</commentid>
    <comment_count>28</comment_count>
      <attachid>35082</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 19:56:20 -0700</bug_when>
    <thetext>Comment on attachment 35082
resolved patch

Clearing flags on attachment: 35082

Committed r47477: &lt;http://trac.webkit.org/changeset/47477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141371</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 19:56:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141382</commentid>
    <comment_count>30</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-08-18 20:43:07 -0700</bug_when>
    <thetext>Rolled out in r47481 as this caused 10 regression tests to hit assertion failures on the debug bots and 1 test to crash on the release bots.  See &lt;http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r47477%20(4150)/results.html&gt; and &lt;http://build.webkit.org/results/Leopard%20Intel%20Release%20(Tests)/r47479%20(4175)/results.html&gt;for info.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141383</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-18 20:49:27 -0700</bug_when>
    <thetext>Hum.  It must have at least passed the tests in release mode to get out of teh commit-queue.  I could easily make the commit-queue build in debug too, but running both the debug and release tests before landing would be super slow. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141614</commentid>
    <comment_count>32</comment_count>
      <attachid>35150</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2009-08-19 15:32:23 -0700</bug_when>
    <thetext>Created attachment 35150
patch

The problem was that we used a RefPtr copy of a SecurityOrigin (that was destroyed as soon as we were out of its scope) instead of using the original pointer in SQLTransactionClient::didCommitTransaction().

We should probably add a Database::securityOrigin() method and explain in more details when to use securityOrigin() and when to use securityOriginCopy(). Right now, it is not obvious at all what the difference is, and it&apos;s very tempting to call m_database-&gt;securityOriginCopy() instead of m_database-&gt;document()-&gt;securityOrigin().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141621</commentid>
    <comment_count>33</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2009-08-19 15:47:42 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; The problem was that we used a RefPtr copy of a SecurityOrigin (that was
&gt; destroyed as soon as we were out of its scope) instead of using the original
&gt; pointer in SQLTransactionClient::didCommitTransaction().

Right... so we traded a threading bug for a refcounting bug... ooops.

I wish bugzilla let me view just the diffs between the previous patch and this new one? Just did so with a text diff tool on the old an new patch files.

Your change lgtm.

&gt; We should probably add a Database::securityOrigin() method and explain in more
&gt; details when to use securityOrigin() and when to use securityOriginCopy().
&gt; Right now, it is not obvious at all what the difference is, and it&apos;s very
&gt; tempting to call m_database-&gt;securityOriginCopy() instead of
&gt; m_database-&gt;document()-&gt;securityOrigin().

Agreed that something could be done to improve on this. SecurityOrigin has a thread safe refcount, but the underlying object is not thread safe. This is a fragile situation? I think think addressing that situation is probably out-of-scope for this fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141828</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-20 23:09:12 -0700</bug_when>
    <thetext>--- Comment #44 from Jeremy Orlow &lt;jorlow@chromium.org&gt;  2009-08-20 18:44:02 PDT ---
Committed r47612: &lt;http://trac.webkit.org/changeset/47612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141829</commentid>
    <comment_count>35</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2009-08-20 23:11:20 -0700</bug_when>
    <thetext>Note this was landed in 47612 but the final posting of the patch was lost due to db corruption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141930</commentid>
    <comment_count>36</comment_count>
      <attachid>35150</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-21 12:04:51 -0700</bug_when>
    <thetext>Comment on attachment 35150
patch

Landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34104</attachid>
            <date>2009-08-04 17:56:09 -0700</date>
            <delta_ts>2009-08-07 11:08:50 -0700</delta_ts>
            <desc>SQLTransactionClient</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30169</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMDgtMDQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhICJsaXN0ZW5lciIgaW50ZXJmYWNlIHRvIFNRTFRyYW5zYWN0aW9uIHRoYXQgYWxs
b3dzIHVzIHRvCisgICAgICAgIHJlbW92ZSBTUUxUcmFuc2FjdGlvbidzIGRlcGVuZGVuY3kgb24g
RGF0YWJhc2VUcmFja2VyIGFuZAorICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXIuIFJlbW92ZWQg
dHJhaWxpbmcgc3BhY2VzLgorCisgICAgICAgIEFsbCB0ZXN0cyBpbiBXZWJDb3JlL3N0b3JhZ2Ug
cGFzcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mjc5NjcKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6Y2hhbmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNh
Y3Rpb24pOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FMKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtTmV4dFN0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnBlcmZvcm1QZW5kaW5nQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFBy
ZWZsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Z2V0TmV4dFN0YXRlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNy
ZWFzZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0Zmxp
Z2h0QW5kQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVy
U3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5k
bGVUcmFuc2FjdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpk
ZWxpdmVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRy
YW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAg
ICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
bGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNs
aWVudDo6ZGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
Q2xpZW50OjpkYXRhYmFzZVNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5z
YWN0aW9uQ2xpZW50OjpkYXRhYmFzZUV4Y2VlZHNRdW90YSk6CisKIDIwMDktMDgtMDQgIENocmlz
IEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWcgMjc5OTQgLSBX
QUktQVJJQTogYXJpYS12YWx1ZXRleHQgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiA0Njc4OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xODQsNiArMTg0LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldC5pZGwn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5pZGwnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaWRsJywKKyAgICAgICAgICAgICdzdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25DbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlLmlkbCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9TdG9yYWdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdz
dmcvRWxlbWVudFRpbWVDb250cm9sLmlkbCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDQ2Nzg5KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA0NjAsNiArMzA0NjAsMTQgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFn
ZVxTUUxUcmFuc2FjdGlvbkNsaWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkNsaWVudEltcGwu
Y3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDQ2Nzg5KQorKysgV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQu
aCIKICNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjZW5kaWYKIApAQCAtMTM2LDYg
KzEzNyw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShEb2N1bWVudCogZG9jdW1lbnQsIGMKICAgICAs
IG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAsIG1fb3BlbmVk
KGZhbHNlKQorICAgICwgbV90cmFuc2FjdGlvbkNsaWVudChuZXcgU1FMVHJhbnNhY3Rpb25DbGll
bnQoKSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIG1fc2VjdXJpdHlPcmlnaW4gPSBk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKQEAgLTUwNywxMSArNTA5LDExIEBAIGJvb2wgRGF0
YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KEV4Y2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihjb25zdCBTdHJpbmcmIG9sZFZlcnNpb24sIGNv
bnN0IFN0cmluZyYgbmV3VmVyc2lvbiwgCit2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNv
bnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+
IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5k
KFNRTFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1
Y2Nlc3NDYWxsYmFjaywgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0ZShvbGRWZXJzaW9uLCBu
ZXdWZXJzaW9uKSkpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBlbmQoU1FMVHJhbnNhY3Rp
b246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNr
LCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pLCBt
X3RyYW5zYWN0aW9uQ2xpZW50LmdldCgpKSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJh
bnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV90cmFuc2FjdGlvbkluUHJvZ3Jl
c3MpCiAgICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKQEAgLTUyMCw3ICs1MjIsNyBAQCB2
b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiB2b2lkIERhdGFiYXNlOjp0
cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQ
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2spCiB7Ci0gICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVuZChTUUxUcmFuc2FjdGlv
bjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ss
IDApKTsKKyAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9uOjpjcmVh
dGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgMCwgbV90
cmFuc2FjdGlvbkNsaWVudC5nZXQoKSkpOwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNz
KQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2
aXNpb24gNDY3ODkpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsOSArNTcsMTAgQEAgY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7Citj
bGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjazsKIGNsYXNzIFNRTFZhbHVlOwotICAgIAorCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogCiBjbGFzcyBEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlPiB7
CkBAIC03MiwxMiArNzMsMTIgQEAgcHVibGljOgogLy8gRGlyZWN0IHN1cHBvcnQgZm9yIHRoZSBE
T00gQVBJCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2U+IG9wZW5EYXRhYmFzZShEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7Ci0g
ICAgdm9pZCBjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwgY29uc3QgU3Ry
aW5nJiBuZXdWZXJzaW9uLCAKKyAgICB2b2lkIGNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW5nJiBv
bGRWZXJzaW9uLCBjb25zdCBTdHJpbmcmIG5ld1ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQ
dHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKTsK
ICAgICB2b2lkIHRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4g
Y2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjayk7Ci0gICAgCisKIC8vIEludGVybmFsIGVuZ2luZSBzdXBwb3J0CiAgICAg
c3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7CiAKQEAgLTkwLDcg
KzkxLDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbkNvcHkoKSBjb25zdDsKICAgICBTdHJpbmcgc3RyaW5nSWRlbnRpZmllcigpIGNv
bnN0OwotICAgIAorCiAgICAgYm9vbCBnZXRWZXJzaW9uRnJvbURhdGFiYXNlKFN0cmluZyYpOwog
ICAgIGJvb2wgc2V0VmVyc2lvbkluRGF0YWJhc2UoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRFeHBlY3RlZFZlcnNpb24oY29uc3QgU3RyaW5nJik7CkBAIC0xMDEsNyArMTAyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjbG9zZSgpOwogICAgIGJvb2wgb3BlbmVkKCkgY29uc3QgeyByZXR1
cm4gbV9vcGVuZWQ7IH0KLSAgICAKKwogICAgIHZvaWQgc3RvcCgpOwogICAgIGJvb2wgc3RvcHBl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQogCkBAIC0xMjQsNyArMTI1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKICAgICB2b2lkIHNjaGVkdWxl
VHJhbnNhY3Rpb25DYWxsYmFjayhTUUxUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgc2NoZWR1bGVU
cmFuc2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKTsKLSAgICAKKwogICAg
IE1lc3NhZ2VRdWV1ZTxSZWZQdHI8U1FMVHJhbnNhY3Rpb24+ID4gbV90cmFuc2FjdGlvblF1ZXVl
OwogICAgIE11dGV4IG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXg7CiAgICAgYm9vbCBtX3Ry
YW5zYWN0aW9uSW5Qcm9ncmVzczsKQEAgLTEzOSw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX2ZpbGVuYW1lOwogCiAgICAgYm9vbCBtX2RlbGV0ZWQ7Ci0gICAgCisKICAgICBib29s
IG1fc3RvcHBlZDsKIAogICAgIGJvb2wgbV9vcGVuZWQ7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHJp
dmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURhdGFiYXNlOwogICAgIFJlZlB0cjxE
YXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwogCisgICAgT3duUHRyPFNR
TFRyYW5zYWN0aW9uQ2xpZW50PiBtX3RyYW5zYWN0aW9uQ2xpZW50OworCiAjaWZuZGVmIE5ERUJV
RwogICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJp
dHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiOjoiICsgbV9uYW1lOyB9CiAjZW5kaWYKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDY3ODkpCisrKyBXZWJDb3JlL3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsOSBA
QAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgi
CiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCkBAIC01MCwyMyArNDgsMjQgQEAKICNpbmNsdWRlICJTUUxTdGF0ZW1l
bnQuaCIKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5o
IgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAKLS8vIFRoZXJlJ3Mgbm8gd2F5IG9mIGtub3dpbmcg
ZXhhY3RseSBob3cgbXVjaCBtb3JlIHNwYWNlIHdpbGwgYmUgcmVxdWlyZWQgd2hlbiBhIHN0YXRl
bWVudCBoaXRzIHRoZSBxdW90YSBsaW1pdC4gIAorLy8gVGhlcmUncyBubyB3YXkgb2Yga25vd2lu
ZyBleGFjdGx5IGhvdyBtdWNoIG1vcmUgc3BhY2Ugd2lsbCBiZSByZXF1aXJlZCB3aGVuIGEgc3Rh
dGVtZW50IGhpdHMgdGhlIHF1b3RhIGxpbWl0LgogLy8gRm9yIG5vdywgd2UnbGwgYXJiaXRyYXJp
bHkgY2hvb3NlIGN1cnJlbnRRdW90YSArIDFtYi4KIC8vIEluIHRoZSBmdXR1cmUgd2UgZGVjaWRl
IHRvIHRyYWNrIGlmIGEgc2l6ZSBpbmNyZWFzZSB3YXNuJ3QgZW5vdWdoLCBhbmQgYXNrIGZvciBs
YXJnZXItYW5kLWxhcmdlciBpbmNyZWFzZXMgdW50aWwgaXRzIGVub3VnaC4KIHN0YXRpYyBjb25z
dCBpbnQgRGVmYXVsdFF1b3RhU2l6ZUluY3JlYXNlID0gMTA0ODU3NjsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBTUUxUcmFuc2FjdGlvbjo6Y3Jl
YXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxs
YmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25XcmFwcGVyPiB3cmFwcGVyKQorUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNh
Y3Rpb246OmNyZWF0ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxs
YmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBl
cnJvckNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgU1FMVHJhbnNhY3Rpb25DbGllbnQq
IHRyYW5zYWN0aW9uQ2xpZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1FMVHJhbnNh
Y3Rpb24oZGIsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIHdyYXBw
ZXIpKTsKIH0KIAotU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyKQorU1FMVHJhbnNh
Y3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlv
bkNsaWVudCkKICAgICA6IG1fbmV4dFN0ZXAoJlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rp
b25BbmRQcmVmbGlnaHQpCiAgICAgLCBtX2V4ZWN1dGVTcWxBbGxvd2VkKGZhbHNlKQogICAgICwg
bV9kYXRhYmFzZShkYikKQEAgLTc2LDYgKzc1LDcgQEAgU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5z
YWN0aW9uKERhdGFiYXNlKgogICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCiAg
ICAgLCBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fbW9kaWZp
ZWREYXRhYmFzZShmYWxzZSkKKyAgICAsIG1fdHJhbnNhY3Rpb25DbGllbnQodHJhbnNhY3Rpb25D
bGllbnQpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UpOwogfQpAQCAtOTUsNyArOTUsNyBAQCB2
b2lkIFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FMKGNvbnN0IFN0CiAgICAgUGFnZSogcGFnZSA9
IG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UgfHwgcGFnZS0+
c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZWFkT25seU1v
ZGUgPSB0cnVlOwotICAgIAorCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50ID0g
U1FMU3RhdGVtZW50OjpjcmVhdGUoc3FsU3RhdGVtZW50LCBhcmd1bWVudHMsIGNhbGxiYWNrLCBj
YWxsYmFja0Vycm9yLCByZWFkT25seU1vZGUpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRlbGV0
ZWQoKSkKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmNoZWNrQW5k
SGFuZGxlQ2xvc2UKIHsKICAgICBpZiAoIW1fZGF0YWJhc2UtPnN0b3BwZWQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKKwogICAgIC8vIElmIHRoZSBkYXRhYmFzZSB3YXMgc3RvcHBlZCwg
ZG9uJ3QgZG8gYW55dGhpbmcgYW5kIGNhbmNlbCBxdWV1ZWQgd29yawogICAgIExPRyhTdG9yYWdl
QVBJLCAiRGF0YWJhc2Ugd2FzIHN0b3BwZWQgLSBjYW5jZWxsaW5nIHdvcmsgZm9yIHRoaXMgdHJh
bnNhY3Rpb24iKTsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zdGF0ZW1lbnRNdXRleCk7CiAg
ICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAgPSAwOwotICAgIAor
CiAgICAgLy8gVGhlIGN1cnJlbnQgU1FMaXRlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBzdG9wcGVk
LCBhcyB3ZWxsCiAgICAgaWYgKG1fc3FsaXRlVHJhbnNhY3Rpb24pIHsKICAgICAgICAgbV9zcWxp
dGVUcmFuc2FjdGlvbi0+c3RvcCgpOwpAQCAtMTY5LDkgKzE2OSw5IEBAIGJvb2wgU1FMVHJhbnNh
Y3Rpb246OnBlcmZvcm1OZXh0U3RlcCgpCiAgICAgICAgICAgIG1fbmV4dFN0ZXAgPT0gJlNRTFRy
YW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0IHx8CiAgICAgICAgICAgIG1fbmV4dFN0ZXAg
PT0gJlNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJTdWNjZXNzQ2FsbGJhY2sgfHwKICAgICAg
ICAgICAgbV9uZXh0U3RlcCA9PSAmU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjayk7Ci0gICAgCisKICAgICBjaGVja0FuZEhhbmRsZUNsb3NlZERhdGFi
YXNlKCk7Ci0gICAgCisKICAgICBpZiAobV9uZXh0U3RlcCkKICAgICAgICAgKHRoaXMtPiptX25l
eHRTdGVwKSgpOwogCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cGVy
Zm9ybVBlbmRpbmdDYWxsYgogICAgICAgICAgICBtX25leHRTdGVwID09ICZTUUxUcmFuc2FjdGlv
bjo6ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjayk7CiAKICAgICBjaGVja0FuZEhhbmRsZUNsb3NlZERh
dGFiYXNlKCk7Ci0gICAgCisKICAgICBpZiAobV9uZXh0U3RlcCkKICAgICAgICAgKHRoaXMtPipt
X25leHRTdGVwKSgpOwogfQpAQCAtMjEwLDE0ICsyMTAsMTQgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bjo6b3BlblRyYW5zYWN0aW9uQW5kUAogCiAgICAgLy8gU2V0IHRoZSBtYXhpbXVtIHVzYWdlIGZv
ciB0aGlzIHRyYW5zYWN0aW9uCiAgICAgbV9kYXRhYmFzZS0+bV9zcWxpdGVEYXRhYmFzZS5zZXRN
YXhpbXVtU2l6ZShtX2RhdGFiYXNlLT5tYXhpbXVtU2l6ZSgpKTsKLSAgICAKKwogICAgIEFTU0VS
VCghbV9zcWxpdGVUcmFuc2FjdGlvbik7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5zZXQobmV3
IFNRTGl0ZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UtPm1fc3FsaXRlRGF0YWJhc2UpKTsKLSAgICAK
KwogICAgIG1fZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAgICAg
bV9zcWxpdGVUcmFuc2FjdGlvbi0+YmVnaW4oKTsKLSAgICBtX2RhdGFiYXNlLT5tX2RhdGFiYXNl
QXV0aG9yaXplci0+ZW5hYmxlKCk7ICAgIAotICAgIAorICAgIG1fZGF0YWJhc2UtPm1fZGF0YWJh
c2VBdXRob3JpemVyLT5lbmFibGUoKTsKKwogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXBzIDErMiAt
IE9wZW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2UsIGp1bXBpbmcgdG8gdGhlIGVycm9y
IGNhbGxiYWNrIGlmIHRoYXQgZmFpbHMKICAgICBpZiAoIW1fc3FsaXRlVHJhbnNhY3Rpb24tPmlu
UHJvZ3Jlc3MoKSkgewogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPm1fc3FsaXRlRGF0YWJh
c2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgU1FM
VHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFAKICAgICAgICAgaGFuZGxlVHJhbnNhY3Rp
b25FcnJvcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICAvLyBU
cmFuc2FjdGlvbiBTdGVwcyAzIC0gUGVmb3JtIHByZWZsaWdodCBzdGVwcywganVtcGluZyB0byB0
aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBmYWlsCiAgICAgaWYgKG1fd3JhcHBlciAmJiAhbV93
cmFwcGVyLT5wZXJmb3JtUHJlZmxpZ2h0KHRoaXMpKSB7CiAgICAgICAgIEFTU0VSVCghbV9kYXRh
YmFzZS0+bV9zcWxpdGVEYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CkBAIC0yMzgs
NyArMjM4LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUAogICAg
ICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKwogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgNCAtIEludm9rZSB0aGUgdHJhbnNh
Y3Rpb24gY2FsbGJhY2sgd2l0aCB0aGUgbmV3IFNRTFRyYW5zYWN0aW9uIG9iamVjdAogICAgIG1f
bmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxiYWNrOwog
ICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyVHJhbnNhY3Rpb25DYWxsYmFj
ayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQg
U1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogICAgICAgICAgICAgbV9zaG91bGRSZXRy
eUN1cnJlbnRTdGF0ZW1lbnQgPSBmYWxzZTsKICAgICAgICAgICAgIC8vIEZJWE1FIC0gQW5vdGhl
ciBwbGFjZSB0aGF0IG5lZWRzIGZpeGluZyB1cCBhZnRlciA8cmRhcjovL3Byb2JsZW0vNTYyODQ2
OD4gaXMgYWRkcmVzc2VkLgogICAgICAgICAgICAgLy8gU2VlIDo6b3BlblRyYW5zYWN0aW9uQW5k
UHJlZmxpZ2h0KCkgZm9yIGRpc2N1c3Npb24KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICAv
LyBSZXNldCB0aGUgbWF4aW11bSBzaXplIGhlcmUsIGFzIGl0IHdhcyBpbmNyZWFzZWQgdG8gYWxs
b3cgdXMgdG8gcmV0cnkgdGhpcyBzdGF0ZW1lbnQKICAgICAgICAgICAgIG1fZGF0YWJhc2UtPm1f
c3FsaXRlRGF0YWJhc2Uuc2V0TWF4aW11bVNpemUobV9kYXRhYmFzZS0+bWF4aW11bVNpemUoKSk7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yOTAsMTQgKzI5MCwxNCBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uOjpydW5TdGF0ZW1lbnRzKCkKICAgICAgICAgICAgICAgICBoYW5kbGVDdXJyZW50U3RhdGVt
ZW50RXJyb3IoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGFkdmFuY2UgdG8gdGhlIG5leHQg
c3RhdGVtZW50CiAgICAgICAgICAgICBnZXROZXh0U3RhdGVtZW50KCk7CiAgICAgICAgIH0KICAg
ICB9IHdoaWxlIChydW5DdXJyZW50U3RhdGVtZW50KCkpOwotICAgIAorCiAgICAgLy8gSWYgcnVu
Q3VycmVudFN0YXRlbWVudCgpIHJldHVybmVkIGZhbHNlLCB0aGF0IG1lYW5zIGVpdGhlciB0aGVy
ZSB3YXMgbm8gY3VycmVudCBzdGF0ZW1lbnQgdG8gcnVuLAotICAgIC8vIG9yIHRoZSBjdXJyZW50
IHN0YXRlbWVudCByZXF1aXJlcyBhIGNhbGxiYWNrIHRvIGNvbXBsZXRlLiAgSW4gdGhlIGxhdGVy
IGNhc2UsIGl0IGFsc28gc2NoZWR1bGVkIAorICAgIC8vIG9yIHRoZSBjdXJyZW50IHN0YXRlbWVu
dCByZXF1aXJlcyBhIGNhbGxiYWNrIHRvIGNvbXBsZXRlLiAgSW4gdGhlIGxhdGVyIGNhc2UsIGl0
IGFsc28gc2NoZWR1bGVkCiAgICAgLy8gdGhlIGNhbGxiYWNrIG9yIHBlcmZvcm1lZCBhbnkgb3Ro
ZXIgYWRkaXRpb25hbCB3b3JrIHNvIHdlIGNhbiByZXR1cm4KICAgICBpZiAoIW1fY3VycmVudFN0
YXRlbWVudCkKICAgICAgICAgcG9zdGZsaWdodEFuZENvbW1pdCgpOwpAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHMoKQogdm9pZCBTUUxUcmFuc2Fj
dGlvbjo6Z2V0TmV4dFN0YXRlbWVudCgpCiB7CiAgICAgbV9jdXJyZW50U3RhdGVtZW50ID0gMDsK
LSAgICAKKwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKICAgICBp
ZiAoIW1fc3RhdGVtZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudCA9IG1fc3RhdGVtZW50UXVldWUuZmlyc3QoKTsKQEAgLTMxOCwyMCArMzE4LDE4IEBAIGJv
b2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQKIHsKICAgICBpZiAoIW1fY3Vy
cmVudFN0YXRlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAgIG1f
ZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3JpemVyLT5yZXNldCgpOwotICAgIAorCiAgICAgaWYg
KG1fY3VycmVudFN0YXRlbWVudC0+ZXhlY3V0ZShtX2RhdGFiYXNlLmdldCgpKSkgewogICAgICAg
ICBpZiAobV9kYXRhYmFzZS0+bV9kYXRhYmFzZUF1dGhvcml6ZXItPmxhc3RBY3Rpb25DaGFuZ2Vk
RGF0YWJhc2UoKSkgewogICAgICAgICAgICAgLy8gRmxhZyB0aGlzIHRyYW5zYWN0aW9uIGFzIGhh
dmluZyBjaGFuZ2VkIHRoZSBkYXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdhdGUgbm90aWZpY2F0aW9u
CiAgICAgICAgICAgICBtX21vZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgLy8g
QWxzbyBkaXJ0eSB0aGUgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGZpbGUgZm9yIGNhbGN1bGF0aW5n
IHF1b3RhIHVzYWdlCi0gICAgICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG1hbmFnZXIoRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwotICAgICAgICAg
ICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBtYW5hZ2VyLm1hcmtEYXRhYmFzZShtX2RhdGFiYXNlLmdldCgpKTsK
KyAgICAgICAgICAgIGlmIChtX3RyYW5zYWN0aW9uQ2xpZW50KQorICAgICAgICAgICAgICAgIG1f
dHJhbnNhY3Rpb25DbGllbnQtPmRhdGFiYXNlU2l6ZUNoYW5nZWQobV9kYXRhYmFzZS5nZXQoKSk7
CiAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1l
bnQtPmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKICAgICAgICAgICAgIG1fbmV4dFN0ZXAgPSAm
U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjazsKICAgICAgICAgICAgIExP
RyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2sgZm9yIHRy
YW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKQEAgLTM0MCwxNiArMzM4LDE2IEBAIGJvb2wgU1FMVHJh
bnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50LT5sYXN0RXhl
Y3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpKSB7CiAgICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJh
bnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2s7CiAgICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNrIGZvciB0cmFu
c2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNh
Y3Rpb25DYWxsYmFjayh0aGlzKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAK
KwogICAgIGhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcigpOwotICAgIAorCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC0zNzIsNyArMzcwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFu
ZGxlQ3VycmVudFN0YXRlbQogdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN0YXRlbWVudENh
bGxiYWNrKCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50U3RhdGVtZW50KTsKLSAgICAKKwogICAg
IC8vIFRyYW5zYWN0aW9uIFN0ZXAgNi42IGFuZCA2LjMoZXJyb3IpIC0gSWYgdGhlIHN0YXRlbWVu
dCBjYWxsYmFjayB3ZW50IHdyb25nLCBqdW1wIHRvIHRoZSB0cmFuc2FjdGlvbiBlcnJvciBjYWxs
YmFjawogICAgIC8vIE90aGVyd2lzZSwgY29udGludWUgdG8gbG9vcCB0aHJvdWdoIHRoZSBzdGF0
ZW1lbnQgcXVldWUKICAgICBtX2V4ZWN1dGVTcWxBbGxvd2VkID0gdHJ1ZTsKQEAgLTM5MCwyNyAr
Mzg4LDE3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIHsKICAg
ICBBU1NFUlQobV9jdXJyZW50U3RhdGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hvdWxkUmV0cnlD
dXJyZW50U3RhdGVtZW50KTsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRhYmFzZS0+ZG9j
dW1lbnQoKS0+cGFnZSgpOwotICAgIEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwot
ICAgIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAgIHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJhc2UtPmRvY3Vt
ZW50KCktPmZyYW1lKCksIG1fZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5z
aWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVv
dGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgbmV3IHF1b3Rh
IGVuZGVkIHVwIGJlaW5nIGxhcmdlciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdpbGwgcmV0cnkg
dGhlIHN0YXRlbWVudC4KLSAgICBpZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpCi0gICAgICAg
IG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgCisKKyAgICBp
ZiAobV90cmFuc2FjdGlvbkNsaWVudCkKKyAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0
ZW1lbnQgPSBtX3RyYW5zYWN0aW9uQ2xpZW50LT5kYXRhYmFzZUV4Y2VlZHNRdW90YShtX2RhdGFi
YXNlLmdldCgpKTsKKwogICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRl
bWVudHM7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIHJ1blN0YXRlbWVudHMgZm9y
IHRyYW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5z
YWN0aW9uU3RlcCh0aGlzKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdodEFu
ZENvbW1pdCgpCi17ICAgIAorewogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgNyAtIFBlZm9ybSBw
b3N0ZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5IGZh
aWwKICAgICBpZiAobV93cmFwcGVyICYmICFtX3dyYXBwZXItPnBlcmZvcm1Qb3N0ZmxpZ2h0KHRo
aXMpKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1fd3JhcHBlci0+c3FsRXJyb3Io
KTsKQEAgLTQxOSwxMCArNDA3LDEwIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRB
bmRDb21taXQKICAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcihmYWxzZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICAvLyBUcmFuc2FjdG9uIFN0ZXAgOCs5IC0gQ29t
bWl0IHRoZSB0cmFuc2FjdGlvbiwganVtcGluZyB0byB0aGUgZXJyb3IgY2FsbGJhY2sgaWYgdGhh
dCBmYWlscwogICAgIEFTU0VSVChtX3NxbGl0ZVRyYW5zYWN0aW9uKTsKLSAgICAKKwogICAgIG1f
ZGF0YWJhc2UtPm1fZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAgICAgbV9zcWxpdGVU
cmFuc2FjdGlvbi0+Y29tbWl0KCk7CiAgICAgbV9kYXRhYmFzZS0+bV9kYXRhYmFzZUF1dGhvcml6
ZXItPmVuYWJsZSgpOwpAQCAtNDMzLDIxICs0MjEsMjEgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6
cG9zdGZsaWdodEFuZENvbW1pdAogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIC8vIFRoZSBjb21taXQgd2Fz
IHN1Y2Nlc3NmdWwsIG5vdGlmeSB0aGUgZGVsZWdhdGVzIGlmIHRoZSB0cmFuc2FjdGlvbiBtb2Rp
ZmllZCB0aGlzIGRhdGFiYXNlCi0gICAgaWYgKG1fbW9kaWZpZWREYXRhYmFzZSkKLSAgICAgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
bV9kYXRhYmFzZS0+bV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgbV9kYXRhYmFzZS0+bV9uYW1lKTsK
LSAgICAKKyAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlICYmIG1fdHJhbnNhY3Rpb25DbGllbnQp
CisgICAgICAgIG1fdHJhbnNhY3Rpb25DbGllbnQtPmRhdGFiYXNlQ2hhbmdlZChtX2RhdGFiYXNl
LmdldCgpKTsKKwogICAgIC8vIE5vdyByZWxlYXNlIG91ciB1bm5lZWRlZCBjYWxsYmFja3MsIHRv
IGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMuCiAgICAgbV9jYWxsYmFjayA9IDA7CiAgICAgbV9lcnJv
ckNhbGxiYWNrID0gMDsKLSAgICAKKwogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTAgLSBEZWxp
dmVyIHN1Y2Nlc3MgY2FsbGJhY2ssIGlmIHRoZXJlIGlzIG9uZQogICAgIGlmIChtX3N1Y2Nlc3ND
YWxsYmFjaykgewogICAgICAgICBtX25leHRTdGVwID0gJlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVy
U3VjY2Vzc0NhbGxiYWNrOwogICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVs
aXZlclN1Y2Nlc3NDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgICAg
ICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2sodGhpcyk7Ci0gICAgfSBl
bHNlIAorICAgIH0gZWxzZQogICAgICAgICBjbGVhbnVwQWZ0ZXJTdWNjZXNzQ2FsbGJhY2soKTsK
IH0KIApAQCAtNDU2LDcgKzQ0NCw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdWNj
ZXNzQ2FsbGIKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDEwIC0gRGVsaXZlciBzdWNjZXNzIGNh
bGxiYWNrCiAgICAgQVNTRVJUKG1fc3VjY2Vzc0NhbGxiYWNrKTsKICAgICBtX3N1Y2Nlc3NDYWxs
YmFjay0+aGFuZGxlRXZlbnQoKTsKLSAgICAKKwogICAgIC8vIFJlbGVhc2UgdGhlIGxhc3QgY2Fs
bGJhY2sgdG8gYnJlYWsgcmVmZXJlbmNlIGN5Y2xlCiAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAw
OwogCkBAIC00ODgsNyArNDc2LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlVHJhbnNh
Y3Rpb25FcgogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICAv
LyBObyBlcnJvciBjYWxsYmFjaywgc28gZmFzdC1mb3J3YXJkIHRvOgogICAgIC8vIFRyYW5zYWN0
aW9uIFN0ZXAgMTIgLSBSb2xsYmFjayB0aGUgdHJhbnNhY3Rpb24uCiAgICAgaWYgKGluQ2FsbGJh
Y2spIHsKQEAgLTUwMyw3ICs0OTEsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5kbGVUcmFu
c2FjdGlvbkVyCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyVHJhbnNhY3Rpb25FcnJvckNh
bGxiYWNrKCkKIHsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbkVycm9yKTsKLSAgICAKKwogICAg
IC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTIgLSBJZiBleGlzdHMsIGludm9rZSBlcnJvciBjYWxsYmFj
ayB3aXRoIHRoZSBsYXN0CiAgICAgLy8gZXJyb3IgdG8gaGF2ZSBvY2N1cnJlZCBpbiB0aGlzIHRy
YW5zYWN0aW9uLgogICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spCkBAIC01MjAsMTggKzUwOCwxOCBA
QCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJUcmFuc2FjCiAgICAgaWYgKG1fc3Fs
aXRlVHJhbnNhY3Rpb24pIHsKICAgICAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCAxMiAtIFJvbGxi
YWNrIHRoZSB0cmFuc2FjdGlvbi4KICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi0+cm9sbGJh
Y2soKTsKLSAgICAgICAgCisKICAgICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5tX3NxbGl0ZURh
dGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKTsKICAgICAgICAgbV9zcWxpdGVUcmFuc2Fj
dGlvbi5jbGVhcigpOwogICAgIH0KICAgICBtX2RhdGFiYXNlLT5tX2RhdGFiYXNlQXV0aG9yaXpl
ci0+ZW5hYmxlKCk7Ci0gICAgCisKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDEyIC0gQW55IHN0
aWxsLXBlbmRpbmcgc3RhdGVtZW50cyBpbiB0aGUgdHJhbnNhY3Rpb24gYXJlIGRpc2NhcmRlZC4K
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKICAg
ICAgICAgbV9zdGF0ZW1lbnRRdWV1ZS5jbGVhcigpOwogICAgIH0KLSAgICAKKwogICAgIC8vIFRy
YW5zYWN0aW9uIGlzIGNvbXBsZXRlISAgVGhlcmUgaXMgbm8gbmV4dCBzdGVwCiAgICAgTE9HKFN0
b3JhZ2VBUEksICJUcmFuc2FjdGlvbiAlcCBpcyBjb21wbGV0ZSB3aXRoIGFuIGVycm9yXG4iLCB0
aGlzKTsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPm1fc3FsaXRlRGF0YWJhc2UudHJhbnNhY3Rp
b25JblByb2dyZXNzKCkpOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgJKHJldmlzaW9u
IDQ2Nzg5KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDYgKzUxLDcgQEAgY2xhc3MgU1FMRXJyb3I7CiBjbGFzcyBTUUxTdGF0ZW1lbnRD
YWxsYmFjazsKIGNsYXNzIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s7CiBjbGFzcyBTUUxUcmFu
c2FjdGlvbjsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVmFsdWU7CiBj
bGFzcyBTdHJpbmc7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CkBAIC02Niw3ICs2Nyw4IEBAIHB1Ymxp
YzoKIAogY2xhc3MgU1FMVHJhbnNhY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVNoYXJlZDxTUUxU
cmFuc2FjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uPiBjcmVhdGUoRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+KTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBl
cj4sIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCA9IDApOwogCiAgICAg
flNRTFRyYW5zYWN0aW9uKCk7CiAgICAgCkBAIC03OSw3ICs4MSw4IEBAIHB1YmxpYzoKICAgICBE
YXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAKIHByaXZh
dGU6Ci0gICAgU1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sIFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+
KTsKKyAgICBTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwKKyAg
ICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25XcmFwcGVyPiwgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xp
ZW50ID0gMCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKFNRTFRyYW5zYWN0aW9uOjoqVHJhbnNhY3Rp
b25TdGVwTWV0aG9kKSgpOwogICAgIFRyYW5zYWN0aW9uU3RlcE1ldGhvZCBtX25leHRTdGVwOwpA
QCAtMTI1LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVu
dD4gPiBtX3N0YXRlbWVudFF1ZXVlOwogCiAgICAgT3duUHRyPFNRTGl0ZVRyYW5zYWN0aW9uPiBt
X3NxbGl0ZVRyYW5zYWN0aW9uOworCisgICAgU1FMVHJhbnNhY3Rpb25DbGllbnQqIG1fdHJhbnNh
Y3Rpb25DbGllbnQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorI2RlZmluZSBTUUxUcmFuc2FjdGlv
bkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIERhdGFiYXNlOwor
CisgICAgLy8gQSAibGlzdGVuZXIiIGludGVyZmFjZSB0byB0aGUgU1FMVHJhbnNhY3Rpb24gY2xh
c3MuIEFsbG93cworICAgIC8vIFNRTFRyYW5zYWN0aW9uIHRvIG5vdGlmeSBpbnRlcmVzdGVkIHBh
cnRpZXMgd2hlbiBjZXJ0YWluIHRoaW5ncyBhcmUKKyAgICAvLyBoYXBwZW5pbmcgaW4gYSB0cmFu
c2FjdGlvbi4KKyAgICBjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudCB7CisgICAgcHVibGljOgor
ICAgICAgICAvLyBOb3RpZmllcyBldmVyeWJvZHkgdGhhdCB0aGUgZGF0YWJhc2UgaGFzIGNoYW5n
ZWQuIENhbGxlZCBhdCB0aGUgZW5kCisgICAgICAgIC8vIGVuZCBvZiBldmVyeSBzdWNjZXNzZnVs
IHRyYW5zYWN0aW9uLgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VDaGFuZ2VkKERhdGFi
YXNlKik7CisKKyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgdGhlIHNpemUgb2Yg
dGhlIGRhdGFiYXNlIGZpbGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLgorICAgICAgICAvLyBDYWxsZWQg
YWZ0ZXIgZXhlY3V0aW5nIGVhY2ggc3RhdGVtZW50IGluIGEgdHJhbnNhY3Rpb24KKyAgICAgICAg
dmlydHVhbCB2b2lkIGRhdGFiYXNlU2l6ZUNoYW5nZWQoRGF0YWJhc2UqKTsKKworICAgICAgICAv
LyBOb3RpZmllcyBldmVyeWJvZHkgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgZmlsZSBl
eGNlZWRzIGl0cyBxdW90YS4KKyAgICAgICAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVl
LCB0aGUgY3VycmVudCBzdGF0ZW1lbnQgaW4gdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgIC8v
IHJldHJpZWQuIE90aGVyd2lzZSwgdGhlIHRyYW5zYWN0aW9uIGlzIHJvbGxlZCBiYWNrLgorICAg
ICAgICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRydWUgaWYgYW5k
IG9ubHkgaWYgdGhlIHF1b3RhIGZvciB0aGlzIGRhdGFiYXNlCisgICAgICAgIC8vIGZpbGUgd2Fz
IGluY3JlYXNlZCAoYnkgdGhlIHVzZXIsIGZvciBleGFtcGxlKSBzaW5jZSBjYWxsaW5nIHRoaXMg
bWV0aG9kLgorICAgICAgICB2aXJ0dWFsIGJvb2wgZGF0YWJhc2VFeGNlZWRzUXVvdGEoRGF0YWJh
c2UqKTsKKyAgICB9OworfQorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25DbGllbnRfaApJbmRl
eDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50SW1wbC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisj
aW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNRTFRyYW5zYWN0aW9u
Q2xpZW50OjpkYXRhYmFzZUNoYW5nZWQoRGF0YWJhc2UqIGRhdGFiYXNlKSB7CisgIERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNl
LT5zZWN1cml0eU9yaWdpbkNvcHkoKS5nZXQoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIo
KSk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRhdGFiYXNlU2l6ZUNoYW5nZWQo
RGF0YWJhc2UqIGRhdGFiYXNlKSB7CisgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKKyAgICBMb2Nr
ZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7CisgICAgbWFuYWdlci5tYXJr
RGF0YWJhc2UoZGF0YWJhc2UpOworfQorCitib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRh
YmFzZUV4Y2VlZHNRdW90YShEYXRhYmFzZSogZGF0YWJhc2UpIHsKKyAgICBQYWdlKiBwYWdlID0g
ZGF0YWJhc2UtPmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisKKyAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNv
cHkoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIHBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKGRhdGFiYXNlLT5kb2N1
bWVudCgpLT5mcmFtZSgpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90
YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiAobmV3UXVvdGEgPiBjdXJyZW50
UXVvdGEpOworfQorCit9Cg==
</data>
<flag name="review"
          id="18273"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34296</attachid>
            <date>2009-08-07 11:08:50 -0700</date>
            <delta_ts>2009-08-07 15:42:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23292</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njg5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDktMDgtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbiB0aGF0IGFsbG93cyB1cyB0byByZW1v
dmUKKyAgICAgICAgU1FMVHJhbnNhY3Rpb24ncyBkZXBlbmRlbmN5IG9uIERhdGFiYXNlVHJhY2tl
ciBhbmQKKyAgICAgICAgT3JpZ2luUXVvdGFNYW5hZ2VyLgorCisgICAgICAgIEFsbCBzdG9yYWdl
IHRlc3RzIHBhc3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI3OTY3CisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN0b3Jh
Z2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OkRhdGFiYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbik6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFz
ZS5oOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMVHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFu
c2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rp
b246OmRlbGl2ZXJRdW90YUluY3JlYXNlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb246OnBvc3RmbGlnaHRBbmRDb21taXQpOgorICAgICAgICAqIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJh
c2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRh
YmFzZVNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQ2xpZW50
OjpkYXRhYmFzZUV4Y2VlZHNRdW90YSk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5oOiBBZGRlZC4KKwogMjAwOS0wOC0wNyAgTWlrZSBGZW50b24gIDxtaWtlLmZlbnRv
bkB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3Mu
CkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0JKHJldmlzaW9uIDQ2ODk1KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtMjEwOSw2ICsyMTA5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb24uaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2suaCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBcCisJV2Vi
Q29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmggXAogCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaAogCiBlbHNlCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNDY4
OTUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYgKzE4
NSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxSZXN1bHRTZXQuaWRsJywKICAgICAgICAg
ICAgICdzdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaWRsJywKICAgICAgICAgICAgICdzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmlkbCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkNsaWVudC5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50
SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU3RvcmFnZS5pZGwnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvU3RvcmFnZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnc3ZnL0VsZW1lbnRU
aW1lQ29udHJvbC5pZGwnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiA0Njg5NSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oJKHdvcmtpbmcgY29weSkKQEAgLTMwNTU2LDYgKzMwNTU2LDE0IEBACiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNh
Y3Rpb25DbGllbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25DbGllbnRJbXBsLmNwcCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2Vc
U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ2
ODk1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTM4NDMsNiArMzg0Myw4IEBACiAJCUIyRkEzRTE4MEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkZBM0QzMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQu
Y3BwICovOyB9OwogCQlCMkZBM0UxOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzRDMx
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5oICovOyB9OwogCQlCNTBGNUI4MTBF
OTZDRDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTBGNUI4MDBFOTZDRDk5MDBBRDcxQTYgLyog
V2ViQ29yZU9iakNFeHRyYXMubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1X
bm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiOyB9OyB9OworCQlCNTFCRjZGMDEwMkM5RTU5MDAw
MkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCAqLzsgfTsKKwkJQjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCAqLzsgfTsKIAkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVT
eXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggKi87IH07CiAJCUI1
QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QTY4NDIzMEZGQUJFQUEwMEQy
NDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQkMwMEYwMDQwRTBBMTg1NTAw
RkQwNEUzIC8qIERPTUZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMDBFRkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi87IH07CkBA
IC04NzE5LDYgKzg3MjEsOCBAQAogCQlCMkZBM0QzMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkda
b29tRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZH
Wm9vbUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNEMzEwQUI3
NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1NWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCNTBGNUI4MDBFOTZDRDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUxQkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAv
KiBTUUxpdGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNR
TGl0ZUZpbGVTeXN0ZW0uaDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVG
aWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0
ZUZpbGVTeXN0ZW0uY3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmls
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODA2LDYgKzk4MTAsOCBAQAogCQkxQUU4MkVDOTBDQUFF
MTc3MDAyMjM3QUUgLyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQjUxQkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcCAqLywKKwkJCQlCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNh
Y3Rpb25DbGllbnQuaCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwICovLAogCQkJCTUxNDE4NUVDMENENjVGMDQwMDc2M0M5OSAvKiBD
aGFuZ2VWZXJzaW9uV3JhcHBlci5oICovLAogCQkJCTUxOTYxMTVFMENBQzU2NTcwMDEwQTgwQyAv
KiBEYXRhYmFzZS5jcHAgKi8sCkBAIC0xNzE3Nyw2ICsxNzE4Myw3IEBACiAJCQkJMEZGNTAyNjMx
MDJCQTkyQzAwNjZGMzlBIC8qIERPTU1lZGlhSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRjUwMjZBMTAyQkE5NDMwMDY2RjM5QSAvKiBKU01lZGlhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkY1MDI3MjEwMkJBOTZBMDA2NkYzOUEgLyogTWVkaWEuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xOTIyNCw2ICsxOTIzMSw3IEBACiAJCQkJMEZGNTAyNUMxMDJCQTkwMTAw
NjZGMzlBIC8qIERPTU1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNTAyNjkxMDJCQTk0
MzAwNjZGMzlBIC8qIEpTTWVkaWEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNTAyNzExMDJC
QTk2QTAwNjZGMzlBIC8qIE1lZGlhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1MUJGNkYwMTAy
QzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gNDY4OTUpCisrKyBXZWJDb3JlL3N0b3Jh
Z2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk
ZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2lu
Y2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgogCkBAIC0xMzYsNiArMTM3LDcg
QEAgRGF0YWJhc2U6OkRhdGFiYXNlKERvY3VtZW50KiBkb2N1bWVudCwgYwogICAgICwgbV9kZWxl
dGVkKGZhbHNlKQogICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9vcGVuZWQoZmFsc2Up
CisgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KG5ldyBTUUxUcmFuc2FjdGlvbkNsaWVudCgpKQog
ewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgbV9zZWN1cml0eU9yaWdpbiA9IGRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpOwpAQCAtNTExLDcgKzUxMyw3IEBAIHZvaWQgRGF0YWJhc2U6OmNo
YW5nZVZlcnNpb24oY29uc3QgU3RyaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2spCiB7
Ci0gICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVuZChTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRo
aXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIENoYW5nZVZlcnNp
b25XcmFwcGVyOjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbikpKTsKKyAgICBtX3RyYW5z
YWN0aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNy
ZWF0ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSwgbV90cmFuc2FjdGlvbkNsaWVudC5nZXQoKSkp
OwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsK
ICAgICBpZiAoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5z
YWN0aW9uKCk7CkBAIC01MjAsNyArNTIyLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lv
bihjb25zdCBTdHJpbgogdm9pZCBEYXRhYmFzZTo6dHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIG1fdHJhbnNh
Y3Rpb25RdWV1ZS5hcHBlbmQoU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCAwKSk7CisgICAgbV90cmFuc2FjdGlvblF1
ZXVlLmFwcGVuZChTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNh
bGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIDAsIG1fdHJhbnNhY3Rpb25DbGllbnQuZ2V0KCkpKTsK
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CiAg
ICAgaWYgKCFtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcykKICAgICAgICAgc2NoZWR1bGVUcmFuc2Fj
dGlvbigpOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgJKHJldmlzaW9uIDQ2ODk1KQorKysgV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3Mg
RGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNs
YXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsK
IGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFZhbHVlOwogICAg
IApAQCAtMTQ3LDYgKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgU1FMaXRlRGF0YWJhc2UgbV9zcWxp
dGVEYXRhYmFzZTsKICAgICBSZWZQdHI8RGF0YWJhc2VBdXRob3JpemVyPiBtX2RhdGFiYXNlQXV0
aG9yaXplcjsKIAorICAgIE93blB0cjxTUUxUcmFuc2FjdGlvbkNsaWVudD4gbV90cmFuc2FjdGlv
bkNsaWVudDsKKwogI2lmbmRlZiBOREVCVUcKICAgICBTdHJpbmcgZGF0YWJhc2VEZWJ1Z05hbWUo
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luLT50b1N0cmluZygpICsgIjo6IiArIG1f
bmFtZTsgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlz
aW9uIDQ2ODk1KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDkgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgot
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJP
cmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNiArNDgsNyBA
QAogI2luY2x1ZGUgIlNRTFN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudENhbGxi
YWNrLmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUg
IlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKIAogLy8gVGhl
cmUncyBubyB3YXkgb2Yga25vd2luZyBleGFjdGx5IGhvdyBtdWNoIG1vcmUgc3BhY2Ugd2lsbCBi
ZSByZXF1aXJlZCB3aGVuIGEgc3RhdGVtZW50IGhpdHMgdGhlIHF1b3RhIGxpbWl0LiAgCkBAIC01
OSwxNCArNTgsMTQgQEAgc3RhdGljIGNvbnN0IGludCBEZWZhdWx0UXVvdGFTaXplSW5jcmVhcwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IFNRTFRy
YW5zYWN0aW9uOjpjcmVhdGUoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
Q2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIpCitQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uPiBTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBTUUxUcmFu
c2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTUUxUcmFuc2FjdGlvbihkYiwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3ND
YWxsYmFjaywgd3JhcHBlcikpOwogfQogCi1TUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24o
RGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNr
LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBw
ZXIpCitTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqIGRiLCBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlciwgU1FMVHJhbnNhY3Rpb25DbGll
bnQqIHRyYW5zYWN0aW9uQ2xpZW50KQogICAgIDogbV9uZXh0U3RlcCgmU1FMVHJhbnNhY3Rpb246
Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCkKICAgICAsIG1fZXhlY3V0ZVNxbEFsbG93ZWQo
ZmFsc2UpCiAgICAgLCBtX2RhdGFiYXNlKGRiKQpAQCAtNzYsNiArNzUsNyBAQCBTUUxUcmFuc2Fj
dGlvbjo6U1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJy
b3JDYWxsYmFjaykKICAgICAsIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KGZhbHNlKQog
ICAgICwgbV9tb2RpZmllZERhdGFiYXNlKGZhbHNlKQorICAgICwgbV90cmFuc2FjdGlvbkNsaWVu
dCh0cmFuc2FjdGlvbkNsaWVudCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZSk7CiB9CkBAIC0z
MjYsMTAgKzMyNiw4IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQK
ICAgICAgICAgICAgIC8vIEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBhcyBoYXZpbmcgY2hhbmdlZCB0
aGUgZGF0YWJhc2UgZm9yIGxhdGVyIGRlbGVnYXRlIG5vdGlmaWNhdGlvbgogICAgICAgICAgICAg
bV9tb2RpZmllZERhdGFiYXNlID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIEFsc28gZGlydHkgdGhl
IHNpemUgb2YgdGhpcyBkYXRhYmFzZSBmaWxlIGZvciBjYWxjdWxhdGluZyBxdW90YSB1c2FnZQot
ICAgICAgICAgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKLSAgICAgICAgICAgIExvY2tlcjxPcmln
aW5RdW90YU1hbmFnZXI+IGxvY2tlcihtYW5hZ2VyKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgbWFuYWdlci5tYXJrRGF0YWJhc2UobV9kYXRhYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBp
ZiAobV90cmFuc2FjdGlvbkNsaWVudCkKKyAgICAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uQ2xp
ZW50LT5kYXRhYmFzZVNpemVDaGFuZ2VkKG1fZGF0YWJhc2UuZ2V0KCkpOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgaWYgKG1fY3VycmVudFN0YXRlbWVudC0+aGFzU3RhdGVtZW50
Q2FsbGJhY2soKSkgewpAQCAtMzkwLDIwICszODgsMTAgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6
ZGVsaXZlclF1b3RhSW5jcmVhcwogewogICAgIEFTU0VSVChtX2N1cnJlbnRTdGF0ZW1lbnQpOwog
ICAgIEFTU0VSVCghbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQpOwotICAgIAotICAgIFBh
Z2UqIHBhZ2UgPSBtX2RhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgQVNTRVJUKHBh
Z2UpOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbV9kYXRhYmFz
ZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0gICAgCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGN1
cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9y
aWdpbi5nZXQoKSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFi
YXNlUXVvdGEobV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbV9kYXRhYmFzZS0+c3Ry
aW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAg
IAotICAgIC8vIElmIHRoZSBuZXcgcXVvdGEgZW5kZWQgdXAgYmVpbmcgbGFyZ2VyIHRoYW4gdGhl
IG9sZCBxdW90YSwgd2Ugd2lsbCByZXRyeSB0aGUgc3RhdGVtZW50LgotICAgIGlmIChuZXdRdW90
YSA+IGN1cnJlbnRRdW90YSkKLSAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQg
PSB0cnVlOwotICAgICAgICAKKworICAgIGlmIChtX3RyYW5zYWN0aW9uQ2xpZW50KQorICAgICAg
ICBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IG1fdHJhbnNhY3Rpb25DbGllbnQtPmRh
dGFiYXNlRXhjZWVkc1F1b3RhKG1fZGF0YWJhc2UuZ2V0KCkpOworCiAgICAgbV9uZXh0U3RlcCA9
ICZTUUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNj
aGVkdWxpbmcgcnVuU3RhdGVtZW50cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAg
IG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKHRoaXMpOwpAQCAtNDM1LDEzICs0
MjMsMTMgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdodEFuZENvbW1pdAogICAgIH0K
ICAgICAKICAgICAvLyBUaGUgY29tbWl0IHdhcyBzdWNjZXNzZnVsLCBub3RpZnkgdGhlIGRlbGVn
YXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gbW9kaWZpZWQgdGhpcyBkYXRhYmFzZQotICAgIGlmICht
X21vZGlmaWVkRGF0YWJhc2UpCi0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNj
aGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG1fZGF0YWJhc2UtPm1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCksIG1fZGF0YWJhc2UtPm1fbmFtZSk7Ci0gICAgCisgICAgaWYgKG1fbW9kaWZpZWREYXRh
YmFzZSAmJiBtX3RyYW5zYWN0aW9uQ2xpZW50KQorICAgICAgICBtX3RyYW5zYWN0aW9uQ2xpZW50
LT5kYXRhYmFzZUNoYW5nZWQobV9kYXRhYmFzZS5nZXQoKSk7CisKICAgICAvLyBOb3cgcmVsZWFz
ZSBvdXIgdW5uZWVkZWQgY2FsbGJhY2tzLCB0byBicmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAg
IG1fY2FsbGJhY2sgPSAwOwogICAgIG1fZXJyb3JDYWxsYmFjayA9IDA7Ci0gICAgCisKICAgICAv
LyBUcmFuc2FjdGlvbiBTdGVwIDEwIC0gRGVsaXZlciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVy
ZSBpcyBvbmUKICAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsKICAgICAgICAgbV9uZXh0U3Rl
cCA9ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjazsKSW5kZXg6IFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiA0Njg5NSkKKysrIFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNR
TEVycm9yOwogY2xhc3MgU1FMU3RhdGVtZW50Q2FsbGJhY2s7CiBjbGFzcyBTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVHJhbnNhY3Rpb247CitjbGFzcyBTUUxUcmFuc2FjdGlv
bkNsaWVudDsKIGNsYXNzIFNRTFZhbHVlOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgVm9pZENhbGxi
YWNrOwpAQCAtNjYsNyArNjcsOCBAQCBwdWJsaWM6CiAKIGNsYXNzIFNRTFRyYW5zYWN0aW9uIDog
cHVibGljIFRocmVhZFNhZmVTaGFyZWQ8U1FMVHJhbnNhY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1Jl
ZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJh
bnNhY3Rpb25XcmFwcGVyPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+
IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBTUUxUcmFuc2FjdGlvbkNsaWVudCogdHJh
bnNhY3Rpb25DbGllbnQgPSAwKTsKIAogICAgIH5TUUxUcmFuc2FjdGlvbigpOwogICAgIApAQCAt
NzksNyArODEsOCBAQCBwdWJsaWM6CiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlKCkgeyByZXR1cm4g
bV9kYXRhYmFzZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFNRTFRyYW5zYWN0aW9uKERhdGFi
YXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPik7CisgICAgU1FMVHJhbnNhY3Rpb24oRGF0YWJh
c2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCisgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4sIFNRTFRyYW5z
YWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCA9IDApOwogCiAgICAgdHlwZWRlZiB2b2lk
IChTUUxUcmFuc2FjdGlvbjo6KlRyYW5zYWN0aW9uU3RlcE1ldGhvZCkoKTsKICAgICBUcmFuc2Fj
dGlvblN0ZXBNZXRob2QgbV9uZXh0U3RlcDsKQEAgLTEyNSw2ICsxMjgsOCBAQCBwcml2YXRlOgog
ICAgIERlcXVlPFJlZlB0cjxTUUxTdGF0ZW1lbnQ+ID4gbV9zdGF0ZW1lbnRRdWV1ZTsKIAogICAg
IE93blB0cjxTUUxpdGVUcmFuc2FjdGlvbj4gbV9zcWxpdGVUcmFuc2FjdGlvbjsKKworICAgIFNR
TFRyYW5zYWN0aW9uQ2xpZW50KiBtX3RyYW5zYWN0aW9uQ2xpZW50OwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xp
ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKKworI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2Vy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTUUxU
cmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VDaGFuZ2VkKERhdGFiYXNlKiBkYXRhYmFzZSkKK3sK
KyAgICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hh
bmdlZChkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCkuZ2V0KCksIGRhdGFiYXNlLT5zdHJp
bmdJZGVudGlmaWVyKCkpOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRhYmFz
ZVNpemVDaGFuZ2VkKERhdGFiYXNlKiBkYXRhYmFzZSkgeworICAgIE9yaWdpblF1b3RhTWFuYWdl
ciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIo
KSk7CisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOworICAg
IG1hbmFnZXIubWFya0RhdGFiYXNlKGRhdGFiYXNlKTsKK30KKworYm9vbCBTUUxUcmFuc2FjdGlv
bkNsaWVudDo6ZGF0YWJhc2VFeGNlZWRzUXVvdGEoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAg
IFBhZ2UqIHBhZ2UgPSBkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChw
YWdlKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gZGF0YWJhc2UtPnNl
Y3VyaXR5T3JpZ2luQ29weSgpOworCisgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90
YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQo
KSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEo
ZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVy
KCkpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIChuZXdR
dW90YSA+IGN1cnJlbnRRdW90YSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNRTFRy
YW5zYWN0aW9uQ2xpZW50X2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBEYXRhYmFzZTsKKworICAgIC8vIEEgImxpc3Rl
bmVyIiBpbnRlcmZhY2UgdG8gdGhlIFNRTFRyYW5zYWN0aW9uIGNsYXNzLiBBbGxvd3MKKyAgICAv
LyBTUUxUcmFuc2FjdGlvbiB0byBub3RpZnkgaW50ZXJlc3RlZCBwYXJ0aWVzIHdoZW4gY2VydGFp
biB0aGluZ3MgYXJlCisgICAgLy8gaGFwcGVuaW5nIGluIGEgdHJhbnNhY3Rpb24uCisgICAgY2xh
c3MgU1FMVHJhbnNhY3Rpb25DbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gTm90aWZp
ZXMgZXZlcnlib2R5IHRoYXQgdGhlIGRhdGFiYXNlIGhhcyBjaGFuZ2VkLiBDYWxsZWQgYXQgdGhl
IGVuZAorICAgICAgICAvLyBlbmQgb2YgZXZlcnkgc3VjY2Vzc2Z1bCB0cmFuc2FjdGlvbi4KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChEYXRhYmFzZSopOworCisgICAgICAg
IC8vIE5vdGlmaWVzIGV2ZXJ5Ym9keSB0aGF0IHRoZSBzaXplIG9mIHRoZSBkYXRhYmFzZSBmaWxl
IG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgLy8gQ2FsbGVkIGFmdGVyIGV4ZWN1dGluZyBl
YWNoIHN0YXRlbWVudCBpbiBhIHRyYW5zYWN0aW9uCisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRh
YmFzZVNpemVDaGFuZ2VkKERhdGFiYXNlKik7CisKKyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnli
b2R5IHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGFiYXNlIGZpbGUgZXhjZWVkcyBpdHMgcXVvdGEu
CisgICAgICAgIC8vIElmIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSwgdGhlIGN1cnJlbnQgc3Rh
dGVtZW50IGluIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAvLyByZXRyaWVkLiBPdGhlcndp
c2UsIHRoZSB0cmFuc2FjdGlvbiBpcyByb2xsZWQgYmFjay4KKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBxdW90
YSBmb3IgdGhpcyBkYXRhYmFzZQorICAgICAgICAvLyBmaWxlIHdhcyBpbmNyZWFzZWQgKGJ5IHRo
ZSB1c2VyLCBmb3IgZXhhbXBsZSkgc2luY2UgY2FsbGluZyB0aGlzIG1ldGhvZC4KKyAgICAgICAg
dmlydHVhbCBib29sIGRhdGFiYXNlRXhjZWVkc1F1b3RhKERhdGFiYXNlKik7CisgICAgfTsKK30K
KworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gK
</data>
<flag name="review"
          id="18464"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34338</attachid>
            <date>2009-08-07 15:42:51 -0700</date>
            <delta_ts>2009-08-10 11:23:22 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23709</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njg5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMDktMDgtMDcgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2hh
bmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0
KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICogc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25DbGllbnQ6OmRhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
UUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VFeGNlZWRzUXVvdGEpOgorICAgICAg
ICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaDogQWRkZWQuCisKIDIwMDktMDgtMDcg
IE1pa2UgRmVudG9uICA8bWlrZS5mZW50b25AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0Njg5NSkKKysr
IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMDksNiArMjEwOSw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
LmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmggXAogCVdlYkNvcmUvc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgKIAog
ZWxzZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2ODk1KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FM
UmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0
LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5pZGwnLAorICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaCcsCisgICAgICAgICAgICAnc3Rv
cmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdl
L1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2VFdmVudC5pZGwnLAog
ICAgICAgICAgICAgJ3N2Zy9FbGVtZW50VGltZUNvbnRyb2wuaWRsJywKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDY4OTUpCisrKyBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDU1Niw2ICsz
MDU1NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0
aW9uQ2xpZW50SW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiA0Njg5NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODQzLDYgKzM4NDMsOCBAQAog
CQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMzAwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJQjJGQTNFMTkwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZl
bnQuaCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0
cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUw
RjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovOyBzZXR0aW5n
cyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsg
fTsKKwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MUJGNkVF
MTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi87IH07CisJCUI1
MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUYxMDJDOUU1OTAw
MDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07CiAJCUI1QTY4NDIyMEZGQUJF
OTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRl
RmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRl
RmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi87
IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRTBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5oICovOyB9OwpAQCAtODcxOSw2ICs4NzIxLDggQEAKIAkJQjJGQTNEMzAw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1pvb21FdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUIyRkEzRDMxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdab29tRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdl
YkNvcmVPYmpDRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViQ29yZU9iakNFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1
MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAv
KiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTUUxUcmFuc2FjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmg7IHBhdGggPSBzcWwvU1FM
aXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUE2ODQyMzBG
RkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNwcDsgcGF0aCA9IHNxbC9TUUxp
dGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVGRkUw
RTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgwNiw2ICs5
ODEwLDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8qIHN0b3JhZ2UgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUI1MUJGNkVFMTAyQzlFNTkw
MDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8sCisJCQkJQjUxQkY2RUYxMDJD
OUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi8sCiAJCQkJNTE0MTg1RUQw
Q0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKIAkJCQk1MTQx
ODVFQzBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuaCAqLywKIAkJCQk1
MTk2MTE1RTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuY3BwICovLApAQCAtMTcxNzcsNiAr
MTcxODMsNyBAQAogCQkJCTBGRjUwMjYzMTAyQkE5MkMwMDY2RjM5QSAvKiBET01NZWRpYUludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY1MDI2QTEwMkJBOTQzMDA2NkYzOUEgLyogSlNN
ZWRpYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNTAyNzIxMDJCQTk2QTAwNjZGMzlBIC8qIE1l
ZGlhLmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FM
VHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTkyMjQsNiArMTkyMzEsNyBA
QAogCQkJCTBGRjUwMjVDMTAyQkE5MDEwMDY2RjM5QSAvKiBET01NZWRpYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRjUwMjY5MTAyQkE5NDMwMDY2RjM5QSAvKiBKU01lZGlhLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjUwMjcxMTAyQkE5NkEwMDY2RjM5QSAvKiBNZWRpYS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCNTFCRjZGMDEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25D
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9u
IDQ2ODk1KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRl
ICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
ZW5kaWYKIApAQCAtMTM2LDYgKzEzNyw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShEb2N1bWVudCog
ZG9jdW1lbnQsIGMKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKICAgICAsIG1fc3RvcHBlZChmYWxz
ZSkKICAgICAsIG1fb3BlbmVkKGZhbHNlKQorICAgICwgbV90cmFuc2FjdGlvbkNsaWVudChuZXcg
U1FMVHJhbnNhY3Rpb25DbGllbnQoKSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIG1f
c2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKQEAgLTUxMSw3ICs1
MTMsNyBAQCB2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4g
Y2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBlbmQo
U1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3Vj
Y2Vzc0NhbGxiYWNrLCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24sIG5l
d1ZlcnNpb24pKSk7CisgICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVuZChTUUxUcmFuc2FjdGlv
bjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ss
IENoYW5nZVZlcnNpb25XcmFwcGVyOjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiksIG1f
dHJhbnNhY3Rpb25DbGllbnQuZ2V0KCkpKTsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CiAgICAgaWYgKCFtX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cykKICAgICAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwpAQCAtNTIwLDcgKzUyMiw3IEBAIHZv
aWQgRGF0YWJhc2U6OmNoYW5nZVZlcnNpb24oY29uc3QgU3RyaW4KIHZvaWQgRGF0YWJhc2U6OnRy
YW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaykKIHsKLSAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9u
OjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywg
MCkpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBlbmQoU1FMVHJhbnNhY3Rpb246OmNyZWF0
ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCAwLCBtX3Ry
YW5zYWN0aW9uQ2xpZW50LmdldCgpKSk7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3Mp
CiAgICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCShyZXZp
c2lvbiA0Njg5NSkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkOwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOworY2xh
c3MgU1FMVHJhbnNhY3Rpb25DbGllbnQ7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2s7CiBjbGFzcyBTUUxWYWx1ZTsKICAgICAKQEAgLTE0Nyw2ICsxNDgsOCBAQCBwcml2YXRlOgog
ICAgIFNRTGl0ZURhdGFiYXNlIG1fc3FsaXRlRGF0YWJhc2U7CiAgICAgUmVmUHRyPERhdGFiYXNl
QXV0aG9yaXplcj4gbV9kYXRhYmFzZUF1dGhvcml6ZXI7CiAKKyAgICBPd25QdHI8U1FMVHJhbnNh
Y3Rpb25DbGllbnQ+IG1fdHJhbnNhY3Rpb25DbGllbnQ7CisKICNpZm5kZWYgTkRFQlVHCiAgICAg
U3RyaW5nIGRhdGFiYXNlRGVidWdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdp
bi0+dG9TdHJpbmcoKSArICI6OiIgKyBtX25hbWU7IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiA0Njg5NSkKKysrIFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSw5IEBACiAjaW5j
bHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKICNpbmNs
dWRlICJEYXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKQEAgLTUwLDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnQuaCIKICNp
bmNsdWRlICJTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1
ZGUgIlNRTFZhbHVlLmgiCiAKIC8vIFRoZXJlJ3Mgbm8gd2F5IG9mIGtub3dpbmcgZXhhY3RseSBo
b3cgbXVjaCBtb3JlIHNwYWNlIHdpbGwgYmUgcmVxdWlyZWQgd2hlbiBhIHN0YXRlbWVudCBoaXRz
IHRoZSBxdW90YSBsaW1pdC4gIApAQCAtNTksMTQgKzU4LDE0IEBAIHN0YXRpYyBjb25zdCBpbnQg
RGVmYXVsdFF1b3RhU2l6ZUluY3JlYXMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uPiBTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKERhdGFiYXNlKiBkYiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVy
KQorUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNhY3Rpb246OmNyZWF0ZShEYXRh
YmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
V3JhcHBlcj4gd3JhcHBlciwgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1FMVHJhbnNhY3Rpb24oZGIsIGNhbGxiYWNr
LCBlcnJvckNhbGxiYWNrLCBzdWNjZXNzQ2FsbGJhY2ssIHdyYXBwZXIpKTsKIH0KIAotU1FMVHJh
bnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyKQorU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0
aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxs
YmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdy
YXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCkKICAgICA6IG1f
bmV4dFN0ZXAoJlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpCiAg
ICAgLCBtX2V4ZWN1dGVTcWxBbGxvd2VkKGZhbHNlKQogICAgICwgbV9kYXRhYmFzZShkYikKQEAg
LTc2LDYgKzc1LDcgQEAgU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKgog
ICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCiAgICAgLCBtX3Nob3VsZFJldHJ5
Q3VycmVudFN0YXRlbWVudChmYWxzZSkKICAgICAsIG1fbW9kaWZpZWREYXRhYmFzZShmYWxzZSkK
KyAgICAsIG1fdHJhbnNhY3Rpb25DbGllbnQodHJhbnNhY3Rpb25DbGllbnQpCiB7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2UpOwogfQpAQCAtMzI2LDEwICszMjYsOCBAQCBib29sIFNRTFRyYW5zYWN0
aW9uOjpydW5DdXJyZW50U3RhdGVtZW50CiAgICAgICAgICAgICAvLyBGbGFnIHRoaXMgdHJhbnNh
Y3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQgdGhlIGRhdGFiYXNlIGZvciBsYXRlciBkZWxlZ2F0ZSBu
b3RpZmljYXRpb24KICAgICAgICAgICAgIG1fbW9kaWZpZWREYXRhYmFzZSA9IHRydWU7CiAgICAg
ICAgICAgICAvLyBBbHNvIGRpcnR5IHRoZSBzaXplIG9mIHRoaXMgZGF0YWJhc2UgZmlsZSBmb3Ig
Y2FsY3VsYXRpbmcgcXVvdGEgdXNhZ2UKLSAgICAgICAgICAgIE9yaWdpblF1b3RhTWFuYWdlciYg
bWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7
Ci0gICAgICAgICAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKG1fZGF0YWJh
c2UuZ2V0KCkpOworICAgICAgICAgICAgaWYgKG1fdHJhbnNhY3Rpb25DbGllbnQpCisgICAgICAg
ICAgICAgICAgbV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VTaXplQ2hhbmdlZChtX2RhdGFi
YXNlLmdldCgpKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2N1cnJl
bnRTdGF0ZW1lbnQtPmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKQEAgLTM5MCwyMCArMzg4LDEw
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIHsKICAgICBBU1NF
UlQobV9jdXJyZW50U3RhdGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hvdWxkUmV0cnlDdXJyZW50
U3RhdGVtZW50KTsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRhYmFzZS0+ZG9jdW1lbnQo
KS0+cGFnZSgpOwotICAgIEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwotICAgIAot
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAgIHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJhc2UtPmRvY3VtZW50KCkt
PmZyYW1lKCksIG1fZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5zaWduZWQg
bG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JP
cmlnaW4ob3JpZ2luLmdldCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgbmV3IHF1b3RhIGVuZGVk
IHVwIGJlaW5nIGxhcmdlciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdpbGwgcmV0cnkgdGhlIHN0
YXRlbWVudC4KLSAgICBpZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpCi0gICAgICAgIG1fc2hv
dWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgCisKKyAgICBpZiAobV90
cmFuc2FjdGlvbkNsaWVudCkKKyAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQg
PSBtX3RyYW5zYWN0aW9uQ2xpZW50LT5kYXRhYmFzZUV4Y2VlZHNRdW90YShtX2RhdGFiYXNlLmdl
dCgpKTsKKwogICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRlbWVudHM7
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIHJ1blN0YXRlbWVudHMgZm9yIHRyYW5z
YWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9u
U3RlcCh0aGlzKTsKQEAgLTQzNSwxMyArNDIzLDEzIEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBv
c3RmbGlnaHRBbmRDb21taXQKICAgICB9CiAgICAgCiAgICAgLy8gVGhlIGNvbW1pdCB3YXMgc3Vj
Y2Vzc2Z1bCwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIG1vZGlmaWVk
IHRoaXMgZGF0YWJhc2UKLSAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlKQotICAgICAgICBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChtX2Rh
dGFiYXNlLT5tX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBtX2RhdGFiYXNlLT5tX25hbWUpOwotICAg
IAorICAgIGlmIChtX21vZGlmaWVkRGF0YWJhc2UgJiYgbV90cmFuc2FjdGlvbkNsaWVudCkKKyAg
ICAgICAgbV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VDaGFuZ2VkKG1fZGF0YWJhc2UuZ2V0
KCkpOworCiAgICAgLy8gTm93IHJlbGVhc2Ugb3VyIHVubmVlZGVkIGNhbGxiYWNrcywgdG8gYnJl
YWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICBtX2NhbGxiYWNrID0gMDsKICAgICBtX2Vycm9yQ2Fs
bGJhY2sgPSAwOwotICAgIAorCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCAxMCAtIERlbGl2ZXIg
c3VjY2VzcyBjYWxsYmFjaywgaWYgdGhlcmUgaXMgb25lCiAgICAgaWYgKG1fc3VjY2Vzc0NhbGxi
YWNrKSB7CiAgICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdWNj
ZXNzQ2FsbGJhY2s7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gNDY4
OTUpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNiArNTEsNyBAQCBjbGFzcyBTUUxFcnJvcjsKIGNsYXNzIFNRTFN0YXRlbWVudENhbGxi
YWNrOwogY2xhc3MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0
aW9uOworY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQ7CiBjbGFzcyBTUUxWYWx1ZTsKIGNsYXNz
IFN0cmluZzsKIGNsYXNzIFZvaWRDYWxsYmFjazsKQEAgLTY2LDcgKzY3LDggQEAgcHVibGljOgog
CiBjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVkPFNRTFRyYW5z
YWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+
IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxWb2lkQ2Fs
bGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4pOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBjcmVhdGUoRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNz
UmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwg
U1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KTsKIAogICAgIH5TUUxUcmFu
c2FjdGlvbigpOwogICAgIApAQCAtNzksNyArODEsOCBAQCBwdWJsaWM6CiAgICAgRGF0YWJhc2Uq
IGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQogCiBwcml2YXRlOgotICAg
IFNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxi
YWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPik7CisgICAg
U1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCisgICAgICAgICAg
ICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uV3JhcHBlcj4sIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCk7CiAK
ICAgICB0eXBlZGVmIHZvaWQgKFNRTFRyYW5zYWN0aW9uOjoqVHJhbnNhY3Rpb25TdGVwTWV0aG9k
KSgpOwogICAgIFRyYW5zYWN0aW9uU3RlcE1ldGhvZCBtX25leHRTdGVwOwpAQCAtMTI1LDYgKzEy
OCw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVudD4gPiBtX3N0YXRl
bWVudFF1ZXVlOwogCiAgICAgT3duUHRyPFNRTGl0ZVRyYW5zYWN0aW9uPiBtX3NxbGl0ZVRyYW5z
YWN0aW9uOworCisgICAgU1FMVHJhbnNhY3Rpb25DbGllbnQqIG1fdHJhbnNhY3Rpb25DbGllbnQ7
CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgorCisj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRl
ICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk9y
aWdpblF1b3RhTWFuYWdlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRhYmFzZUNoYW5nZWQoRGF0YWJh
c2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxl
Tm90aWZ5RGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHkoKS5nZXQo
KSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rp
b25DbGllbnQ6OmRhdGFiYXNlU2l6ZUNoYW5nZWQoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAg
IE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5v
cmlnaW5RdW90YU1hbmFnZXIoKSk7CisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9j
a2VyKG1hbmFnZXIpOworICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKGRhdGFiYXNlKTsKK30KKwor
Ym9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VFeGNlZWRzUXVvdGEoRGF0YWJhc2Uq
IGRhdGFiYXNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+cGFn
ZSgpOworICAgIEFTU0VSVChwYWdlKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOworCisgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9y
T3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGNl
ZWRlZERhdGFiYXNlUXVvdGEoZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCksIGRhdGFiYXNl
LT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdRdW90YSA9
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7
CisgICAgcmV0dXJuIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSk7Cit9CisKK30KSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gKKyNkZWZpbmUgU1FMVHJhbnNhY3Rp
b25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBEYXRhYmFzZTsK
KworICAgIC8vIEEgImxpc3RlbmVyIiBpbnRlcmZhY2UgdG8gdGhlIFNRTFRyYW5zYWN0aW9uIGNs
YXNzLiBBbGxvd3MKKyAgICAvLyBTUUxUcmFuc2FjdGlvbiB0byBub3RpZnkgaW50ZXJlc3RlZCBw
YXJ0aWVzIHdoZW4gY2VydGFpbiB0aGluZ3MgYXJlCisgICAgLy8gaGFwcGVuaW5nIGluIGEgdHJh
bnNhY3Rpb24uCisgICAgY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgdGhlIGRhdGFiYXNlIGhhcyBjaGFu
Z2VkLiBDYWxsZWQgYXQgdGhlIGVuZAorICAgICAgICAvLyBlbmQgb2YgZXZlcnkgc3VjY2Vzc2Z1
bCB0cmFuc2FjdGlvbi4KKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hhbmdlZChEYXRh
YmFzZSopOworCisgICAgICAgIC8vIE5vdGlmaWVzIGV2ZXJ5Ym9keSB0aGF0IHRoZSBzaXplIG9m
IHRoZSBkYXRhYmFzZSBmaWxlIG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgLy8gQ2FsbGVk
IGFmdGVyIGV4ZWN1dGluZyBlYWNoIHN0YXRlbWVudCBpbiBhIHRyYW5zYWN0aW9uCisgICAgICAg
IHZpcnR1YWwgdm9pZCBkYXRhYmFzZVNpemVDaGFuZ2VkKERhdGFiYXNlKik7CisKKyAgICAgICAg
Ly8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGFiYXNlIGZpbGUg
ZXhjZWVkcyBpdHMgcXVvdGEuCisgICAgICAgIC8vIElmIHRoaXMgbWV0aG9kIHJldHVybnMgdHJ1
ZSwgdGhlIGN1cnJlbnQgc3RhdGVtZW50IGluIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAv
LyByZXRyaWVkLiBPdGhlcndpc2UsIHRoZSB0cmFuc2FjdGlvbiBpcyByb2xsZWQgYmFjay4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0cnVlIGlmIGFu
ZCBvbmx5IGlmIHRoZSBxdW90YSBmb3IgdGhpcyBkYXRhYmFzZQorICAgICAgICAvLyBmaWxlIHdh
cyBpbmNyZWFzZWQgKGJ5IHRoZSB1c2VyLCBmb3IgZXhhbXBsZSkgc2luY2UgY2FsbGluZyB0aGlz
IG1ldGhvZC4KKyAgICAgICAgdmlydHVhbCBib29sIGRhdGFiYXNlRXhjZWVkc1F1b3RhKERhdGFi
YXNlKik7CisgICAgfTsKK30KKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34488</attachid>
            <date>2009-08-10 11:23:22 -0700</date>
            <delta_ts>2009-08-10 11:53:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23490</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDgtMTAgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2hh
bmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0
KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICogc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuaDogQWRkZWQuCisKIDIwMDktMDgtMTAgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBHVEsrIGJ1aWxkLgpJbmRleDogV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMTEsNiArMjExMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
LmggXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmgKIAogZWxzZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2OTg2KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsOCBAQAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaCcs
CisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0
b3JhZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9FbGVtZW50VGltZUNvbnRyb2wuaWRs
JywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDY5
ODYpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDU1Niw2ICszMDU1NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50SW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODQ3LDYgKzM4NDcsOCBAQAogCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJ
QjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdab29tRXZlbnQuaCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2
IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0
cmFzLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIjsgfTsgfTsKKwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAgKi87IH07CisJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07
CiAJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFB
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRl
RmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAw
RUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovOyB9OwpAQCAtODcyMyw2ICs4NzI1
LDggQEAKIAkJQjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1pvb21FdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDMxMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
Vkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUwRjVCODAwRTk2
Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFu
c2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MUJGNkVG
MTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVt
Lmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTgwOCw2ICs5ODEyLDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8q
IHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8s
CisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgg
Ki8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcCAqLywKIAkJCQk1MTQxODVFQzBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldy
YXBwZXIuaCAqLywKIAkJCQk1MTk2MTE1RTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuY3Bw
ICovLApAQCAtMTcxODUsNiArMTcxOTEsNyBAQAogCQkJCTQ5NDg0RkM4MTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNG
MjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTIzNiw2ICsxOTI0Myw3IEBACiAJCQkJNDk0ODRGQzcx
MDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuY3BwCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0
U2V0LmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2VuZGlmCiAKQEAgLTEzNiw2ICsxMzcsNyBAQCBEYXRhYmFzZTo6RGF0
YWJhc2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAg
LCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX29wZW5lZChmYWxzZSkKKyAgICAsIG1fdHJhbnNh
Y3Rpb25DbGllbnQobmV3IFNRTFRyYW5zYWN0aW9uQ2xpZW50KCkpCiB7CiAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKICAgICBtX3NlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCk7CkBAIC01MTEsNyArNTEzLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihjb25z
dCBTdHJpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3RyYW5zYWN0
aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0
ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSkpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBl
bmQoU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
c3VjY2Vzc0NhbGxiYWNrLCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pLCBtX3RyYW5zYWN0aW9uQ2xpZW50LmdldCgpKSk7CiAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3MpCiAgICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKQEAgLTUy
MCw3ICs1MjIsNyBAQCB2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiB2
b2lkIERhdGFiYXNlOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVu
ZChTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBz
dWNjZXNzQ2FsbGJhY2ssIDApKTsKKyAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5kKFNRTFRy
YW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3ND
YWxsYmFjaywgMCwgbV90cmFuc2FjdGlvbkNsaWVudC5nZXQoKSkpOwogICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2UuaAkocmV2aXNpb24gNDY5ODYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEYXRhYmFzZVRocmVhZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25DYWxsYmFjazsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVmFsdWU7CiAgICAgCkBAIC0xNDcsNiArMTQ4
LDggQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURhdGFiYXNlOwogICAg
IFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwogCisgICAg
T3duUHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50PiBtX3RyYW5zYWN0aW9uQ2xpZW50OworCiAjaWZu
ZGVmIE5ERUJVRwogICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiOjoiICsgbV9uYW1lOyB9CiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDY5ODYpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
MSArMzUsOSBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRo
b3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1FM
U3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogCiAvLyBUaGVyZSdzIG5vIHdheSBvZiBr
bm93aW5nIGV4YWN0bHkgaG93IG11Y2ggbW9yZSBzcGFjZSB3aWxsIGJlIHJlcXVpcmVkIHdoZW4g
YSBzdGF0ZW1lbnQgaGl0cyB0aGUgcXVvdGEgbGltaXQuICAKQEAgLTU5LDE0ICs1OCwxNCBAQCBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRRdW90YVNpemVJbmNyZWFzCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNhY3Rpb246OmNyZWF0
ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJh
Y2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
V3JhcHBlcj4gd3JhcHBlcikKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IFNRTFRyYW5zYWN0
aW9uOjpjcmVhdGUoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0
cmFuc2FjdGlvbkNsaWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0
aW9uKGRiLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCB3cmFwcGVy
KSk7CiB9CiAKLVNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSogZGIsIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlcikKK1NRTFRyYW5zYWN0
aW9uOjpTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25DYWxsYmFjaz4gY2FsbGJhY2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrLCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBTUUxUcmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25D
bGllbnQpCiAgICAgOiBtX25leHRTdGVwKCZTUUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9u
QW5kUHJlZmxpZ2h0KQogICAgICwgbV9leGVjdXRlU3FsQWxsb3dlZChmYWxzZSkKICAgICAsIG1f
ZGF0YWJhc2UoZGIpCkBAIC03Niw4ICs3NSwxMCBAQCBTUUxUcmFuc2FjdGlvbjo6U1FMVHJhbnNh
Y3Rpb24oRGF0YWJhc2UqCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKICAg
ICAsIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9tb2RpZmll
ZERhdGFiYXNlKGZhbHNlKQorICAgICwgbV90cmFuc2FjdGlvbkNsaWVudCh0cmFuc2FjdGlvbkNs
aWVudCkKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZSk7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25DbGllbnQpOwogfQogCiBTUUxUcmFuc2FjdGlvbjo6flNRTFRyYW5zYWN0aW9uKCkKQEAgLTMy
NiwxMCArMzI3LDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAog
ICAgICAgICAgICAgLy8gRmxhZyB0aGlzIHRyYW5zYWN0aW9uIGFzIGhhdmluZyBjaGFuZ2VkIHRo
ZSBkYXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdhdGUgbm90aWZpY2F0aW9uCiAgICAgICAgICAgICBt
X21vZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgLy8gQWxzbyBkaXJ0eSB0aGUg
c2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGZpbGUgZm9yIGNhbGN1bGF0aW5nIHF1b3RhIHVzYWdlCi0g
ICAgICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG1hbmFnZXIoRGF0YWJhc2VUcmFja2VyOjp0
cmFja2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwotICAgICAgICAgICAgTG9ja2VyPE9yaWdp
blF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtYW5hZ2VyLm1hcmtEYXRhYmFzZShtX2RhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIG1f
dHJhbnNhY3Rpb25DbGllbnQtPmRhdGFiYXNlU2l6ZUNoYW5nZWQobV9kYXRhYmFzZS5nZXQoKSk7
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50
LT5oYXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7CkBAIC0zOTAsMjAgKzM4OCw5IEBAIHZvaWQgU1FM
VHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIHsKICAgICBBU1NFUlQobV9jdXJyZW50
U3RhdGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KTsK
LSAgICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+cGFnZSgpOwot
ICAgIEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdp
biA9IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwotICAgIAotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90
YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
ZXhjZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCksIG1f
ZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG5l
d1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2lu
LmdldCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgbmV3IHF1b3RhIGVuZGVkIHVwIGJlaW5nIGxh
cmdlciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdpbGwgcmV0cnkgdGhlIHN0YXRlbWVudC4KLSAg
ICBpZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpCi0gICAgICAgIG1fc2hvdWxkUmV0cnlDdXJy
ZW50U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgCisKKyAgICBtX3Nob3VsZFJldHJ5Q3VycmVu
dFN0YXRlbWVudCA9IG1fdHJhbnNhY3Rpb25DbGllbnQtPmRhdGFiYXNlRXhjZWVkc1F1b3RhKG1f
ZGF0YWJhc2UuZ2V0KCkpOworCiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6cnVu
U3RhdGVtZW50czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgcnVuU3RhdGVtZW50
cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxl
VHJhbnNhY3Rpb25TdGVwKHRoaXMpOwpAQCAtNDM2LDEyICs0MjMsMTIgQEAgdm9pZCBTUUxUcmFu
c2FjdGlvbjo6cG9zdGZsaWdodEFuZENvbW1pdAogICAgIAogICAgIC8vIFRoZSBjb21taXQgd2Fz
IHN1Y2Nlc3NmdWwsIG5vdGlmeSB0aGUgZGVsZWdhdGVzIGlmIHRoZSB0cmFuc2FjdGlvbiBtb2Rp
ZmllZCB0aGlzIGRhdGFiYXNlCiAgICAgaWYgKG1fbW9kaWZpZWREYXRhYmFzZSkKLSAgICAgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
bV9kYXRhYmFzZS0+bV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgbV9kYXRhYmFzZS0+bV9uYW1lKTsK
LSAgICAKKyAgICAgICAgbV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VDaGFuZ2VkKG1fZGF0
YWJhc2UuZ2V0KCkpOworCiAgICAgLy8gTm93IHJlbGVhc2Ugb3VyIHVubmVlZGVkIGNhbGxiYWNr
cywgdG8gYnJlYWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICBtX2NhbGxiYWNrID0gMDsKICAgICBt
X2Vycm9yQ2FsbGJhY2sgPSAwOwotICAgIAorCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCAxMCAt
IERlbGl2ZXIgc3VjY2VzcyBjYWxsYmFjaywgaWYgdGhlcmUgaXMgb25lCiAgICAgaWYgKG1fc3Vj
Y2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRl
bGl2ZXJTdWNjZXNzQ2FsbGJhY2s7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkocmV2
aXNpb24gNDY5ODYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBjbGFzcyBTUUxFcnJvcjsKIGNsYXNzIFNRTFN0YXRl
bWVudENhbGxiYWNrOwogY2xhc3MgU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazsKIGNsYXNzIFNR
TFRyYW5zYWN0aW9uOworY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQ7CiBjbGFzcyBTUUxWYWx1
ZTsKIGNsYXNzIFN0cmluZzsKIGNsYXNzIFZvaWRDYWxsYmFjazsKQEAgLTY2LDcgKzY3LDggQEAg
cHVibGljOgogCiBjbGFzcyBTUUxUcmFuc2FjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlU2hhcmVk
PFNRTFRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJh
bnNhY3Rpb24+IGNyZWF0ZShEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxs
YmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4pOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBjcmVhdGUoRGF0YWJhc2UqLCBQYXNz
UmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjaz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25X
cmFwcGVyPiwgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KTsKIAogICAg
IH5TUUxUcmFuc2FjdGlvbigpOwogICAgIApAQCAtNzksNyArODEsOCBAQCBwdWJsaWM6CiAgICAg
RGF0YWJhc2UqIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFzZS5nZXQoKTsgfQogCiBwcml2
YXRlOgotICAgIFNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVy
Pik7CisgICAgU1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4sCisg
ICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNR
TFRyYW5zYWN0aW9uV3JhcHBlcj4sIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNs
aWVudCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKFNRTFRyYW5zYWN0aW9uOjoqVHJhbnNhY3Rpb25T
dGVwTWV0aG9kKSgpOwogICAgIFRyYW5zYWN0aW9uU3RlcE1ldGhvZCBtX25leHRTdGVwOwpAQCAt
MTI1LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVudD4g
PiBtX3N0YXRlbWVudFF1ZXVlOwogCiAgICAgT3duUHRyPFNRTGl0ZVRyYW5zYWN0aW9uPiBtX3Nx
bGl0ZVRyYW5zYWN0aW9uOworCisgICAgU1FMVHJhbnNhY3Rpb25DbGllbnQqIG1fdHJhbnNhY3Rp
b25DbGllbnQ7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRhYmFzZUNoYW5n
ZWQoRGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNv
cHkoKS5nZXQoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1FM
VHJhbnNhY3Rpb25DbGllbnQ6OmRhdGFiYXNlU2l6ZUNoYW5nZWQoRGF0YWJhc2UqIGRhdGFiYXNl
KQoreworICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7CisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFu
YWdlcj4gbG9ja2VyKG1hbmFnZXIpOworICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKGRhdGFiYXNl
KTsKK30KKworYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VFeGNlZWRzUXVvdGEo
RGF0YWJhc2UqIGRhdGFiYXNlKQoreworICAgIFBhZ2UqIHBhZ2UgPSBkYXRhYmFzZS0+ZG9jdW1l
bnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChwYWdlKTsKKworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOworCisgICAgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigp
LnF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCks
IGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdp
bi5nZXQoKSk7CisgICAgcmV0dXJuIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSk7Cit9CisKK30K
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gKKyNkZWZpbmUgU1FM
VHJhbnNhY3Rpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBE
YXRhYmFzZTsKKworICAgIC8vIEEgImxpc3RlbmVyIiBpbnRlcmZhY2UgdG8gdGhlIFNRTFRyYW5z
YWN0aW9uIGNsYXNzLiBBbGxvd3MKKyAgICAvLyBTUUxUcmFuc2FjdGlvbiB0byBub3RpZnkgaW50
ZXJlc3RlZCBwYXJ0aWVzIHdoZW4gY2VydGFpbiB0aGluZ3MgYXJlCisgICAgLy8gaGFwcGVuaW5n
IGluIGEgdHJhbnNhY3Rpb24uCisgICAgY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgdGhlIGRhdGFiYXNl
IGhhcyBjaGFuZ2VkLiBDYWxsZWQgYXQgdGhlIGVuZAorICAgICAgICAvLyBlbmQgb2YgZXZlcnkg
c3VjY2Vzc2Z1bCB0cmFuc2FjdGlvbi4KKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ2hh
bmdlZChEYXRhYmFzZSopOworCisgICAgICAgIC8vIE5vdGlmaWVzIGV2ZXJ5Ym9keSB0aGF0IHRo
ZSBzaXplIG9mIHRoZSBkYXRhYmFzZSBmaWxlIG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAg
Ly8gQ2FsbGVkIGFmdGVyIGV4ZWN1dGluZyBlYWNoIHN0YXRlbWVudCBpbiBhIHRyYW5zYWN0aW9u
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZVNpemVDaGFuZ2VkKERhdGFiYXNlKik7CisK
KyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGFi
YXNlIGZpbGUgZXhjZWVkcyBpdHMgcXVvdGEuCisgICAgICAgIC8vIElmIHRoaXMgbWV0aG9kIHJl
dHVybnMgdHJ1ZSwgdGhlIGN1cnJlbnQgc3RhdGVtZW50IGluIHRoZSB0cmFuc2FjdGlvbiBpcwor
ICAgICAgICAvLyByZXRyaWVkLiBPdGhlcndpc2UsIHRoZSB0cmFuc2FjdGlvbiBpcyByb2xsZWQg
YmFjay4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0
cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBxdW90YSBmb3IgdGhpcyBkYXRhYmFzZQorICAgICAgICAv
LyBmaWxlIHdhcyBpbmNyZWFzZWQgKGJ5IHRoZSB1c2VyLCBmb3IgZXhhbXBsZSkgc2luY2UgY2Fs
bGluZyB0aGlzIG1ldGhvZC4KKyAgICAgICAgdmlydHVhbCBib29sIGRhdGFiYXNlRXhjZWVkc1F1
b3RhKERhdGFiYXNlKik7CisgICAgfTsKK30KKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9uQ2xp
ZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34496</attachid>
            <date>2009-08-10 11:53:47 -0700</date>
            <delta_ts>2009-08-11 17:07:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23606</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDgtMTAgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2hh
bmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0
KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICogc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuaDogQWRkZWQuCisKIDIwMDktMDgtMTAgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBHVEsrIGJ1aWxkLgpJbmRleDogV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMTEsNiArMjExMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
LmggXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmgKIAogZWxzZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2OTg2KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsOCBAQAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaCcs
CisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0
b3JhZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9FbGVtZW50VGltZUNvbnRyb2wuaWRs
JywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDY5
ODYpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDU1Niw2ICszMDU1NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50SW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODQ3LDYgKzM4NDcsOCBAQAogCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJ
QjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdab29tRXZlbnQuaCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2
IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0
cmFzLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIjsgfTsgfTsKKwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAgKi87IH07CisJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07
CiAJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFB
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRl
RmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAw
RUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovOyB9OwpAQCAtODcyMyw2ICs4NzI1
LDggQEAKIAkJQjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1pvb21FdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDMxMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
Vkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUwRjVCODAwRTk2
Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFu
c2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MUJGNkVG
MTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVt
Lmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTgwOCw2ICs5ODEyLDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8q
IHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8s
CisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgg
Ki8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcCAqLywKIAkJCQk1MTQxODVFQzBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldy
YXBwZXIuaCAqLywKIAkJCQk1MTk2MTE1RTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuY3Bw
ICovLApAQCAtMTcxODUsNiArMTcxOTEsNyBAQAogCQkJCTQ5NDg0RkM4MTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNG
MjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTIzNiw2ICsxOTI0Myw3IEBACiAJCQkJNDk0ODRGQzcx
MDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuY3BwCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0
U2V0LmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2VuZGlmCiAKQEAgLTEzNiw2ICsxMzcsNyBAQCBEYXRhYmFzZTo6RGF0
YWJhc2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAg
LCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX29wZW5lZChmYWxzZSkKKyAgICAsIG1fdHJhbnNh
Y3Rpb25DbGllbnQobmV3IFNRTFRyYW5zYWN0aW9uQ2xpZW50KCkpCiB7CiAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKICAgICBtX3NlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCk7CkBAIC01MTEsNyArNTEzLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihjb25z
dCBTdHJpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3RyYW5zYWN0
aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0
ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSkpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBl
bmQoU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
c3VjY2Vzc0NhbGxiYWNrLCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pLCBtX3RyYW5zYWN0aW9uQ2xpZW50LmdldCgpKSk7CiAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3MpCiAgICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKQEAgLTUy
MCw3ICs1MjIsNyBAQCB2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiB2
b2lkIERhdGFiYXNlOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVu
ZChTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBz
dWNjZXNzQ2FsbGJhY2ssIDApKTsKKyAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5kKFNRTFRy
YW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3ND
YWxsYmFjaywgMCwgbV90cmFuc2FjdGlvbkNsaWVudC5nZXQoKSkpOwogICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2UuaAkocmV2aXNpb24gNDY5ODYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEYXRhYmFzZVRocmVhZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25DYWxsYmFjazsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVmFsdWU7CiAgICAgCkBAIC0xNDcsNiArMTQ4
LDggQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURhdGFiYXNlOwogICAg
IFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwogCisgICAg
T3duUHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50PiBtX3RyYW5zYWN0aW9uQ2xpZW50OworCiAjaWZu
ZGVmIE5ERUJVRwogICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiOjoiICsgbV9uYW1lOyB9CiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDY5ODYpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
MSArMzUsOSBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRo
b3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1FM
U3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogCiAvLyBUaGVyZSdzIG5vIHdheSBvZiBr
bm93aW5nIGV4YWN0bHkgaG93IG11Y2ggbW9yZSBzcGFjZSB3aWxsIGJlIHJlcXVpcmVkIHdoZW4g
YSBzdGF0ZW1lbnQgaGl0cyB0aGUgcXVvdGEgbGltaXQuICAKQEAgLTU5LDE0ICs1OCwxNCBAQCBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRRdW90YVNpemVJbmNyZWFzCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNhY3Rpb246OmNyZWF0
ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJh
Y2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
V3JhcHBlcj4gd3JhcHBlcikKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IFNRTFRyYW5zYWN0
aW9uOjpjcmVhdGUoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0
cmFuc2FjdGlvbkNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0
aW9uKGRiLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCB3cmFwcGVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxUcmFuc2FjdGlvbihkYiwgY2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgd3JhcHBlciwgdHJhbnNhY3Rpb25DbGll
bnQpKTsKIH0KIAotU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyKQorU1FMVHJhbnNh
Y3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlv
bkNsaWVudCkKICAgICA6IG1fbmV4dFN0ZXAoJlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rp
b25BbmRQcmVmbGlnaHQpCiAgICAgLCBtX2V4ZWN1dGVTcWxBbGxvd2VkKGZhbHNlKQogICAgICwg
bV9kYXRhYmFzZShkYikKQEAgLTc2LDggKzc1LDEwIEBAIFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbihEYXRhYmFzZSoKICAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQog
ICAgICwgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX21vZGlm
aWVkRGF0YWJhc2UoZmFsc2UpCisgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KHRyYW5zYWN0aW9u
Q2xpZW50KQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbkNsaWVudCk7CiB9CiAKIFNRTFRyYW5zYWN0aW9uOjp+U1FMVHJhbnNhY3Rpb24oKQpAQCAt
MzI2LDEwICszMjcsNyBAQCBib29sIFNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50
CiAgICAgICAgICAgICAvLyBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQg
dGhlIGRhdGFiYXNlIGZvciBsYXRlciBkZWxlZ2F0ZSBub3RpZmljYXRpb24KICAgICAgICAgICAg
IG1fbW9kaWZpZWREYXRhYmFzZSA9IHRydWU7CiAgICAgICAgICAgICAvLyBBbHNvIGRpcnR5IHRo
ZSBzaXplIG9mIHRoaXMgZGF0YWJhc2UgZmlsZSBmb3IgY2FsY3VsYXRpbmcgcXVvdGEgdXNhZ2UK
LSAgICAgICAgICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7Ci0gICAgICAgICAgICBMb2NrZXI8T3Jp
Z2luUXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKG1fZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICAgICAg
bV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VTaXplQ2hhbmdlZChtX2RhdGFiYXNlLmdldCgp
KTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1l
bnQtPmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKQEAgLTM5MCwyMCArMzg4LDkgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhcwogewogICAgIEFTU0VSVChtX2N1cnJl
bnRTdGF0ZW1lbnQpOwogICAgIEFTU0VSVCghbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQp
OwotICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2RhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7
Ci0gICAgQVNTRVJUKHBhZ2UpOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gbV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1
b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5leGNlZWRlZERhdGFiYXNlUXVvdGEobV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
bV9kYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcg
bmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmln
aW4uZ2V0KCkpOwotICAgIAotICAgIC8vIElmIHRoZSBuZXcgcXVvdGEgZW5kZWQgdXAgYmVpbmcg
bGFyZ2VyIHRoYW4gdGhlIG9sZCBxdW90YSwgd2Ugd2lsbCByZXRyeSB0aGUgc3RhdGVtZW50Lgot
ICAgIGlmIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSkKLSAgICAgICAgbV9zaG91bGRSZXRyeUN1
cnJlbnRTdGF0ZW1lbnQgPSB0cnVlOwotICAgICAgICAKKworICAgIG1fc2hvdWxkUmV0cnlDdXJy
ZW50U3RhdGVtZW50ID0gbV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VFeGNlZWRzUXVvdGEo
bV9kYXRhYmFzZS5nZXQoKSk7CisKICAgICBtX25leHRTdGVwID0gJlNRTFRyYW5zYWN0aW9uOjpy
dW5TdGF0ZW1lbnRzOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBydW5TdGF0ZW1l
bnRzIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgbV9kYXRhYmFzZS0+c2NoZWR1
bGVUcmFuc2FjdGlvblN0ZXAodGhpcyk7CkBAIC00MzYsMTIgKzQyMywxMiBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAgICAgCiAgICAgLy8gVGhlIGNvbW1pdCB3
YXMgc3VjY2Vzc2Z1bCwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIG1v
ZGlmaWVkIHRoaXMgZGF0YWJhc2UKICAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlKQotICAgICAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdl
ZChtX2RhdGFiYXNlLT5tX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBtX2RhdGFiYXNlLT5tX25hbWUp
OwotICAgIAorICAgICAgICBtX3RyYW5zYWN0aW9uQ2xpZW50LT5kYXRhYmFzZUNoYW5nZWQobV9k
YXRhYmFzZS5nZXQoKSk7CisKICAgICAvLyBOb3cgcmVsZWFzZSBvdXIgdW5uZWVkZWQgY2FsbGJh
Y2tzLCB0byBicmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIG1fY2FsbGJhY2sgPSAwOwogICAg
IG1fZXJyb3JDYWxsYmFjayA9IDA7Ci0gICAgCisKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDEw
IC0gRGVsaXZlciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVyZSBpcyBvbmUKICAgICBpZiAobV9z
dWNjZXNzQ2FsbGJhY2spIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6
ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjazsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCShy
ZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNRTEVycm9yOwogY2xhc3MgU1FMU3Rh
dGVtZW50Q2FsbGJhY2s7CiBjbGFzcyBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOwogY2xhc3Mg
U1FMVHJhbnNhY3Rpb247CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFZh
bHVlOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgVm9pZENhbGxiYWNrOwpAQCAtNjYsNyArNjcsOCBA
QCBwdWJsaWM6CiAKIGNsYXNzIFNRTFRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVTaGFy
ZWQ8U1FMVHJhbnNhY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGNyZWF0ZShEYXRhYmFzZSosIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bldyYXBwZXI+LCBTUUxUcmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQpOwogCiAg
ICAgflNRTFRyYW5zYWN0aW9uKCk7CiAgICAgCkBAIC03OSw3ICs4MSw4IEBAIHB1YmxpYzoKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgU1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBw
ZXI+KTsKKyAgICBTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwK
KyAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9u
Q2xpZW50KTsKIAogICAgIHR5cGVkZWYgdm9pZCAoU1FMVHJhbnNhY3Rpb246OipUcmFuc2FjdGlv
blN0ZXBNZXRob2QpKCk7CiAgICAgVHJhbnNhY3Rpb25TdGVwTWV0aG9kIG1fbmV4dFN0ZXA7CkBA
IC0xMjUsNiArMTI4LDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8U1FMU3RhdGVtZW50
PiA+IG1fc3RhdGVtZW50UXVldWU7CiAKICAgICBPd25QdHI8U1FMaXRlVHJhbnNhY3Rpb24+IG1f
c3FsaXRlVHJhbnNhY3Rpb247CisKKyAgICBTUUxUcmFuc2FjdGlvbkNsaWVudCogbV90cmFuc2Fj
dGlvbkNsaWVudDsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xp
ZW50LmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRhdGFiYXNlQ2hh
bmdlZChEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2lu
Q29weSgpLmdldCgpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBT
UUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VTaXplQ2hhbmdlZChEYXRhYmFzZSogZGF0YWJh
c2UpCit7CisgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKKyAgICBMb2NrZXI8T3JpZ2luUXVvdGFN
YW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7CisgICAgbWFuYWdlci5tYXJrRGF0YWJhc2UoZGF0YWJh
c2UpOworfQorCitib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRhYmFzZUV4Y2VlZHNRdW90
YShEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgUGFnZSogcGFnZSA9IGRhdGFiYXNlLT5kb2N1
bWVudCgpLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7CisKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VRdW90YShkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25n
IG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3Jp
Z2luLmdldCgpKTsKKyAgICByZXR1cm4gKG5ld1F1b3RhID4gY3VycmVudFF1b3RhKTsKK30KKwor
fQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorI2RlZmluZSBT
UUxUcmFuc2FjdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IERhdGFiYXNlOworCisgICAgLy8gQSAibGlzdGVuZXIiIGludGVyZmFjZSB0byB0aGUgU1FMVHJh
bnNhY3Rpb24gY2xhc3MuIEFsbG93cworICAgIC8vIFNRTFRyYW5zYWN0aW9uIHRvIG5vdGlmeSBp
bnRlcmVzdGVkIHBhcnRpZXMgd2hlbiBjZXJ0YWluIHRoaW5ncyBhcmUKKyAgICAvLyBoYXBwZW5p
bmcgaW4gYSB0cmFuc2FjdGlvbi4KKyAgICBjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICAvLyBOb3RpZmllcyBldmVyeWJvZHkgdGhhdCB0aGUgZGF0YWJh
c2UgaGFzIGNoYW5nZWQuIENhbGxlZCBhdCB0aGUgZW5kCisgICAgICAgIC8vIGVuZCBvZiBldmVy
eSBzdWNjZXNzZnVsIHRyYW5zYWN0aW9uLgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VD
aGFuZ2VkKERhdGFiYXNlKik7CisKKyAgICAgICAgLy8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQg
dGhlIHNpemUgb2YgdGhlIGRhdGFiYXNlIGZpbGUgbWlnaHQgaGF2ZSBjaGFuZ2VkLgorICAgICAg
ICAvLyBDYWxsZWQgYWZ0ZXIgZXhlY3V0aW5nIGVhY2ggc3RhdGVtZW50IGluIGEgdHJhbnNhY3Rp
b24KKyAgICAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlU2l6ZUNoYW5nZWQoRGF0YWJhc2UqKTsK
KworICAgICAgICAvLyBOb3RpZmllcyBldmVyeWJvZHkgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgZGF0
YWJhc2UgZmlsZSBleGNlZWRzIGl0cyBxdW90YS4KKyAgICAgICAgLy8gSWYgdGhpcyBtZXRob2Qg
cmV0dXJucyB0cnVlLCB0aGUgY3VycmVudCBzdGF0ZW1lbnQgaW4gdGhlIHRyYW5zYWN0aW9uIGlz
CisgICAgICAgIC8vIHJldHJpZWQuIE90aGVyd2lzZSwgdGhlIHRyYW5zYWN0aW9uIGlzIHJvbGxl
ZCBiYWNrLgorICAgICAgICAvLworICAgICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJu
IHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIHF1b3RhIGZvciB0aGlzIGRhdGFiYXNlCisgICAgICAg
IC8vIGZpbGUgd2FzIGluY3JlYXNlZCAoYnkgdGhlIHVzZXIsIGZvciBleGFtcGxlKSBzaW5jZSBj
YWxsaW5nIHRoaXMgbWV0aG9kLgorICAgICAgICB2aXJ0dWFsIGJvb2wgZGF0YWJhc2VFeGNlZWRz
UXVvdGEoRGF0YWJhc2UqKTsKKyAgICB9OworfQorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25D
bGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34617</attachid>
            <date>2009-08-11 17:07:30 -0700</date>
            <delta_ts>2009-08-14 15:02:27 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23582</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDgtMTAgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6Y2hh
bmdlVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0
KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmg6CisgICAgICAgICogc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuaDogQWRkZWQuCisKIDIwMDktMDgtMTAgIFhhbiBMb3BleiAgPHhs
b3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBHVEsrIGJ1aWxkLgpJbmRleDogV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMTEsNiArMjExMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9y
YWdlL1NRTFRyYW5zYWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
LmggXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmgKIAogZWxzZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDQ2OTg2KQorKysgV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw2ICsxODMsOCBAQAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvU1FMUmVzdWx0U2V0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5pZGwnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaCcs
CisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudEltcGwuY3BwJywKICAg
ICAgICAgICAgICdzdG9yYWdlL1N0b3JhZ2UuaWRsJywKICAgICAgICAgICAgICdzdG9yYWdlL1N0
b3JhZ2VFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3N2Zy9FbGVtZW50VGltZUNvbnRyb2wuaWRs
JywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDY5
ODYpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDU1Niw2ICszMDU1NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxz
dG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50SW1wbC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODQ3LDYgKzM4NDcsOCBAQAogCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJ
QjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVB
QzQgLyogSlNTVkdab29tRXZlbnQuaCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2
IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0
cmFzLm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQt
ZGVjbGFyYXRpb25zIjsgfTsgfTsKKwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAgKi87IH07CisJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07
CiAJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFB
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRl
RmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01G
aWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAw
RUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovOyB9OwpAQCAtODcyMyw2ICs4NzI1
LDggQEAKIAkJQjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1pvb21FdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDMxMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNT
Vkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUwRjVCODAwRTk2
Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlv
bkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTUUxUcmFu
c2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MUJGNkVG
MTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVt
Lmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxlU3lzdGVtLmNw
cDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTgwOCw2ICs5ODEyLDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8q
IHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8s
CisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgg
Ki8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVy
LmNwcCAqLywKIAkJCQk1MTQxODVFQzBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldy
YXBwZXIuaCAqLywKIAkJCQk1MTk2MTE1RTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuY3Bw
ICovLApAQCAtMTcxODUsNiArMTcxOTEsNyBAQAogCQkJCTQ5NDg0RkM4MTAyQ0YyM0MwMDE4N0RE
MyAvKiBDYW52YXNQaXhlbEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTQ4NEZDQjEwMkNG
MjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDRTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTIzNiw2ICsxOTI0Myw3IEBACiAJCQkJNDk0ODRGQzcx
MDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk0ODRGQ0ExMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuY3BwCShyZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0
U2V0LmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2VuZGlmCiAKQEAgLTEzNiw2ICsxMzcsNyBAQCBEYXRhYmFzZTo6RGF0
YWJhc2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiAgICAg
LCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX29wZW5lZChmYWxzZSkKKyAgICAsIG1fdHJhbnNh
Y3Rpb25DbGllbnQobmV3IFNRTFRyYW5zYWN0aW9uQ2xpZW50KCkpCiB7CiAgICAgQVNTRVJUKGRv
Y3VtZW50KTsKICAgICBtX3NlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCk7CkBAIC01MTEsNyArNTEzLDcgQEAgdm9pZCBEYXRhYmFzZTo6Y2hhbmdlVmVyc2lvbihjb25z
dCBTdHJpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3RyYW5zYWN0
aW9uUXVldWUuYXBwZW5kKFNRTFRyYW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0
ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKSkpOworICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBl
bmQoU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
c3VjY2Vzc0NhbGxiYWNrLCBDaGFuZ2VWZXJzaW9uV3JhcHBlcjo6Y3JlYXRlKG9sZFZlcnNpb24s
IG5ld1ZlcnNpb24pLCBtX3RyYW5zYWN0aW9uQ2xpZW50LmdldCgpKSk7CiAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOwogICAgIGlmICghbV90cmFu
c2FjdGlvbkluUHJvZ3Jlc3MpCiAgICAgICAgIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKQEAgLTUy
MCw3ICs1MjIsNyBAQCB2b2lkIERhdGFiYXNlOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluCiB2
b2lkIERhdGFiYXNlOjp0cmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Vm9pZENh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgbV90cmFuc2FjdGlvblF1ZXVlLmFwcGVu
ZChTUUxUcmFuc2FjdGlvbjo6Y3JlYXRlKHRoaXMsIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBz
dWNjZXNzQ2FsbGJhY2ssIDApKTsKKyAgICBtX3RyYW5zYWN0aW9uUXVldWUuYXBwZW5kKFNRTFRy
YW5zYWN0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3ND
YWxsYmFjaywgMCwgbV90cmFuc2FjdGlvbkNsaWVudC5nZXQoKSkpOwogICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4KTsKICAgICBpZiAoIW1fdHJhbnNh
Y3Rpb25JblByb2dyZXNzKQogICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7CkluZGV4OiBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2UuaAkocmV2aXNpb24gNDY5ODYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBEYXRhYmFzZVRocmVhZDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xhc3MgU1FMVHJhbnNhY3Rp
b25DYWxsYmFjazsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVHJhbnNh
Y3Rpb25FcnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVmFsdWU7CiAgICAgCkBAIC0xNDcsNiArMTQ4
LDggQEAgcHJpdmF0ZToKICAgICBTUUxpdGVEYXRhYmFzZSBtX3NxbGl0ZURhdGFiYXNlOwogICAg
IFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fZGF0YWJhc2VBdXRob3JpemVyOwogCisgICAg
T3duUHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50PiBtX3RyYW5zYWN0aW9uQ2xpZW50OworCiAjaWZu
ZGVmIE5ERUJVRwogICAgIFN0cmluZyBkYXRhYmFzZURlYnVnTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkgKyAiOjoiICsgbV9uYW1lOyB9CiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gNDY5ODYpCisrKyBX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
MSArMzUsOSBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRo
b3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJh
c2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1FM
U3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogCiAvLyBUaGVyZSdzIG5vIHdheSBvZiBr
bm93aW5nIGV4YWN0bHkgaG93IG11Y2ggbW9yZSBzcGFjZSB3aWxsIGJlIHJlcXVpcmVkIHdoZW4g
YSBzdGF0ZW1lbnQgaGl0cyB0aGUgcXVvdGEgbGltaXQuICAKQEAgLTU5LDE0ICs1OCwxNCBAQCBz
dGF0aWMgY29uc3QgaW50IERlZmF1bHRRdW90YVNpemVJbmNyZWFzCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNhY3Rpb246OmNyZWF0
ZShEYXRhYmFzZSogZGIsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4gY2FsbGJh
Y2ssIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRy
PFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
V3JhcHBlcj4gd3JhcHBlcikKK1Bhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IFNRTFRyYW5zYWN0
aW9uOjpjcmVhdGUoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+IGNhbGxiYWNrLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0
cmFuc2FjdGlvbkNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNRTFRyYW5zYWN0
aW9uKGRiLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgc3VjY2Vzc0NhbGxiYWNrLCB3cmFwcGVy
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTUUxUcmFuc2FjdGlvbihkYiwgY2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHN1Y2Nlc3NDYWxsYmFjaywgd3JhcHBlciwgdHJhbnNhY3Rpb25DbGll
bnQpKTsKIH0KIAotU1FMVHJhbnNhY3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxT
UUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9p
ZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyKQorU1FMVHJhbnNh
Y3Rpb246OlNRTFRyYW5zYWN0aW9uKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxTUUxUcmFu
c2FjdGlvbldyYXBwZXI+IHdyYXBwZXIsIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlv
bkNsaWVudCkKICAgICA6IG1fbmV4dFN0ZXAoJlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rp
b25BbmRQcmVmbGlnaHQpCiAgICAgLCBtX2V4ZWN1dGVTcWxBbGxvd2VkKGZhbHNlKQogICAgICwg
bV9kYXRhYmFzZShkYikKQEAgLTc2LDggKzc1LDEwIEBAIFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbihEYXRhYmFzZSoKICAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQog
ICAgICwgbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQoZmFsc2UpCiAgICAgLCBtX21vZGlm
aWVkRGF0YWJhc2UoZmFsc2UpCisgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KHRyYW5zYWN0aW9u
Q2xpZW50KQogewogICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKKyAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbkNsaWVudCk7CiB9CiAKIFNRTFRyYW5zYWN0aW9uOjp+U1FMVHJhbnNhY3Rpb24oKQpAQCAt
MzI2LDEwICszMjcsNyBAQCBib29sIFNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50
CiAgICAgICAgICAgICAvLyBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQg
dGhlIGRhdGFiYXNlIGZvciBsYXRlciBkZWxlZ2F0ZSBub3RpZmljYXRpb24KICAgICAgICAgICAg
IG1fbW9kaWZpZWREYXRhYmFzZSA9IHRydWU7CiAgICAgICAgICAgICAvLyBBbHNvIGRpcnR5IHRo
ZSBzaXplIG9mIHRoaXMgZGF0YWJhc2UgZmlsZSBmb3IgY2FsY3VsYXRpbmcgcXVvdGEgdXNhZ2UK
LSAgICAgICAgICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7Ci0gICAgICAgICAgICBMb2NrZXI8T3Jp
Z2luUXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKG1fZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICAgICAg
bV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VTaXplQ2hhbmdlZChtX2RhdGFiYXNlLmdldCgp
KTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1l
bnQtPmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKQEAgLTM5MCwyMCArMzg4LDkgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhcwogewogICAgIEFTU0VSVChtX2N1cnJl
bnRTdGF0ZW1lbnQpOwogICAgIEFTU0VSVCghbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQp
OwotICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2RhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7
Ci0gICAgQVNTRVJUKHBhZ2UpOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3Jp
Z2luID0gbV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0gICAgCi0gICAgdW5zaWdu
ZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1
b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5leGNlZWRlZERhdGFiYXNlUXVvdGEobV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
bV9kYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcg
bmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmln
aW4uZ2V0KCkpOwotICAgIAotICAgIC8vIElmIHRoZSBuZXcgcXVvdGEgZW5kZWQgdXAgYmVpbmcg
bGFyZ2VyIHRoYW4gdGhlIG9sZCBxdW90YSwgd2Ugd2lsbCByZXRyeSB0aGUgc3RhdGVtZW50Lgot
ICAgIGlmIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSkKLSAgICAgICAgbV9zaG91bGRSZXRyeUN1
cnJlbnRTdGF0ZW1lbnQgPSB0cnVlOwotICAgICAgICAKKworICAgIG1fc2hvdWxkUmV0cnlDdXJy
ZW50U3RhdGVtZW50ID0gbV90cmFuc2FjdGlvbkNsaWVudC0+ZGF0YWJhc2VFeGNlZWRzUXVvdGEo
bV9kYXRhYmFzZS5nZXQoKSk7CisKICAgICBtX25leHRTdGVwID0gJlNRTFRyYW5zYWN0aW9uOjpy
dW5TdGF0ZW1lbnRzOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBydW5TdGF0ZW1l
bnRzIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgbV9kYXRhYmFzZS0+c2NoZWR1
bGVUcmFuc2FjdGlvblN0ZXAodGhpcyk7CkBAIC00MzYsMTIgKzQyMywxMiBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAgICAgCiAgICAgLy8gVGhlIGNvbW1pdCB3
YXMgc3VjY2Vzc2Z1bCwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIG1v
ZGlmaWVkIHRoaXMgZGF0YWJhc2UKICAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlKQotICAgICAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdl
ZChtX2RhdGFiYXNlLT5tX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBtX2RhdGFiYXNlLT5tX25hbWUp
OwotICAgIAorICAgICAgICBtX3RyYW5zYWN0aW9uQ2xpZW50LT5kYXRhYmFzZUNoYW5nZWQobV9k
YXRhYmFzZS5nZXQoKSk7CisKICAgICAvLyBOb3cgcmVsZWFzZSBvdXIgdW5uZWVkZWQgY2FsbGJh
Y2tzLCB0byBicmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIG1fY2FsbGJhY2sgPSAwOwogICAg
IG1fZXJyb3JDYWxsYmFjayA9IDA7Ci0gICAgCisKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDEw
IC0gRGVsaXZlciBzdWNjZXNzIGNhbGxiYWNrLCBpZiB0aGVyZSBpcyBvbmUKICAgICBpZiAobV9z
dWNjZXNzQ2FsbGJhY2spIHsKICAgICAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6
ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjazsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCShy
ZXZpc2lvbiA0Njk4NikKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNRTEVycm9yOwogY2xhc3MgU1FMU3Rh
dGVtZW50Q2FsbGJhY2s7CiBjbGFzcyBTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOwogY2xhc3Mg
U1FMVHJhbnNhY3Rpb247CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFZh
bHVlOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgVm9pZENhbGxiYWNrOwpAQCAtNjYsNyArNjcsOCBA
QCBwdWJsaWM6CiAKIGNsYXNzIFNRTFRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVTaGFy
ZWQ8U1FMVHJhbnNhY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTUUxU
cmFuc2FjdGlvbj4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IGNyZWF0ZShEYXRhYmFzZSosIFBh
c3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25FcnJvckNhbGxiYWNrPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlv
bldyYXBwZXI+LCBTUUxUcmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQpOwogCiAg
ICAgflNRTFRyYW5zYWN0aW9uKCk7CiAgICAgCkBAIC03OSw3ICs4MSw4IEBAIHB1YmxpYzoKICAg
ICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgU1FMVHJhbnNhY3Rpb24oRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4s
IFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBw
ZXI+KTsKKyAgICBTUUxUcmFuc2FjdGlvbihEYXRhYmFzZSosIFBhc3NSZWZQdHI8U1FMVHJhbnNh
Y3Rpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrPiwK
KyAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9u
Q2xpZW50KTsKIAogICAgIHR5cGVkZWYgdm9pZCAoU1FMVHJhbnNhY3Rpb246OipUcmFuc2FjdGlv
blN0ZXBNZXRob2QpKCk7CiAgICAgVHJhbnNhY3Rpb25TdGVwTWV0aG9kIG1fbmV4dFN0ZXA7CkBA
IC0xMjUsNiArMTI4LDggQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxSZWZQdHI8U1FMU3RhdGVtZW50
PiA+IG1fc3RhdGVtZW50UXVldWU7CiAKICAgICBPd25QdHI8U1FMaXRlVHJhbnNhY3Rpb24+IG1f
c3FsaXRlVHJhbnNhY3Rpb247CisKKyAgICBTUUxUcmFuc2FjdGlvbkNsaWVudCogbV90cmFuc2Fj
dGlvbkNsaWVudDsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xp
ZW50LmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5o
IgorI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRhdGFiYXNlQ2hh
bmdlZChEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2lu
Q29weSgpLmdldCgpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKK30KKwordm9pZCBT
UUxUcmFuc2FjdGlvbkNsaWVudDo6ZGF0YWJhc2VTaXplQ2hhbmdlZChEYXRhYmFzZSogZGF0YWJh
c2UpCit7CisgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKKyAgICBMb2NrZXI8T3JpZ2luUXVvdGFN
YW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7CisgICAgbWFuYWdlci5tYXJrRGF0YWJhc2UoZGF0YWJh
c2UpOworfQorCitib29sIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkYXRhYmFzZUV4Y2VlZHNRdW90
YShEYXRhYmFzZSogZGF0YWJhc2UpCit7CisgICAgUGFnZSogcGFnZSA9IGRhdGFiYXNlLT5kb2N1
bWVudCgpLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7CisKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VRdW90YShkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25n
IG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3Jp
Z2luLmdldCgpKTsKKyAgICByZXR1cm4gKG5ld1F1b3RhID4gY3VycmVudFF1b3RhKTsKK30KKwor
fQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorI2RlZmluZSBT
UUxUcmFuc2FjdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNz
IERhdGFiYXNlOworCisgICAgLy8gQSAibGlzdGVuZXIiIGludGVyZmFjZSB0byB0aGUgU1FMVHJh
bnNhY3Rpb24gY2xhc3MuIEFsbG93cworICAgIC8vIFNRTFRyYW5zYWN0aW9uIHRvIG5vdGlmeSBp
bnRlcmVzdGVkIHBhcnRpZXMgd2hlbiBjZXJ0YWluIHRoaW5ncyBhcmUKKyAgICAvLyBoYXBwZW5p
bmcgaW4gYSB0cmFuc2FjdGlvbi4KKyAgICBjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICAvLyBOb3RpZmllcyBldmVyeWJvZHkgdGhhdCB0aGUgZGF0YWJh
c2UgaGFzIGNoYW5nZWQuIENhbGxlZCBhdCB0aGUgZW5kCisgICAgICAgIC8vIGVuZCBvZiBldmVy
eSBzdWNjZXNzZnVsIHRyYW5zYWN0aW9uLgorICAgICAgICB2b2lkIGRhdGFiYXNlQ2hhbmdlZChE
YXRhYmFzZSopOworCisgICAgICAgIC8vIE5vdGlmaWVzIGV2ZXJ5Ym9keSB0aGF0IHRoZSBzaXpl
IG9mIHRoZSBkYXRhYmFzZSBmaWxlIG1pZ2h0IGhhdmUgY2hhbmdlZC4KKyAgICAgICAgLy8gQ2Fs
bGVkIGFmdGVyIGV4ZWN1dGluZyBlYWNoIHN0YXRlbWVudCBpbiBhIHRyYW5zYWN0aW9uCisgICAg
ICAgIHZvaWQgZGF0YWJhc2VTaXplQ2hhbmdlZChEYXRhYmFzZSopOworCisgICAgICAgIC8vIE5v
dGlmaWVzIGV2ZXJ5Ym9keSB0aGF0IHRoZSBzaXplIG9mIHRoZSBkYXRhYmFzZSBmaWxlIGV4Y2Vl
ZHMgaXRzIHF1b3RhLgorICAgICAgICAvLyBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIHRo
ZSBjdXJyZW50IHN0YXRlbWVudCBpbiB0aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAgICAgLy8gcmV0
cmllZC4gT3RoZXJ3aXNlLCB0aGUgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2suCisgICAgICAg
IC8vCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBhbmQgb25s
eSBpZiB0aGUgcXVvdGEgZm9yIHRoaXMgZGF0YWJhc2UKKyAgICAgICAgLy8gZmlsZSB3YXMgaW5j
cmVhc2VkIChieSB0aGUgdXNlciwgZm9yIGV4YW1wbGUpIHNpbmNlIGNhbGxpbmcgdGhpcyBtZXRo
b2QuCisgICAgICAgIGJvb2wgZGF0YWJhc2VFeGNlZWRzUXVvdGEoRGF0YWJhc2UqKTsKKyAgICB9
OworfQorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25DbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34873</attachid>
            <date>2009-08-14 15:02:27 -0700</date>
            <delta_ts>2009-08-18 11:02:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20415</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzI5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDktMDgtMTQgIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6CisgICAgICAgICogc3RvcmFnZS9EYXRh
YmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBzdG9y
YWdlL0RhdGFiYXNlVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6
dHJhbnNhY3Rpb25DbGllbnQpOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRB
bmRDb21taXQpOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50Lmg6IEFkZGVkLgor
CiAyMDA5LTA4LTE0ICBNYXhpbWUgU2ltb24gIDxzaW1vbi5tYXhpbWVAZ21haWwuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NzI5
NSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMTYsNiAr
MjExNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmggXAogCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgXAogCVdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDQ3Mjk1KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI5
NjIsNiArMjk2Miw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25DbGllbnQuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkNsaWVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
ay5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
NDcyOTUpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDczNiw2ICszMDczNiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4N
CisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NzI5NSkKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODYw
LDYgKzM4NjAsOCBAQAogCQlCMkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJG
QTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJQjJG
QTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVBQzQg
LyogSlNTVkdab29tRXZlbnQuaCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2IC8q
IFdlYkNvcmVPYmpDRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjUwRjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFz
Lm1tICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQtZGVj
bGFyYXRpb25zIjsgfTsgfTsKKwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5z
YWN0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5j
cHAgKi87IH07CisJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUx
QkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07CiAJ
CUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBE
MjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBE
MjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmls
ZVN5c3RlbS5jcHAgKi87IH07CiAJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmNwcCAqLzsgfTsKQEAgLTg3NTUsNiArODc1Nyw4IEBACiAJCUIyRkEzRDMwMEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdab29tRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMkZBM0QzMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHWm9vbUV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1MEY1QjgwMEU5NkNEOTkwMEFENzFBNiAvKiBXZWJD
b3JlT2JqQ0V4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYkNvcmVPYmpDRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTFC
RjZFRTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyog
U1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1FMVHJhbnNhY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMaXRlRmlsZVN5c3RlbS5oOyBwYXRoID0gc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjMwRkZB
QkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU1FMaXRlRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBzcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjM5MTAy
QjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTg0NSw2ICs5ODQ5LDggQEAKIAkJMUFF
ODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8qIHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxU
cmFuc2FjdGlvbkNsaWVudC5jcHAgKi8sCisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi8sCiAJCQkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4
IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovLAogCQkJCUI1QzExMjNBMTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8sCiAJCQkJNTE0MTg1
RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKQEAgLTE3
MjYzLDYgKzE3MjY5LDcgQEAKIAkJCQk0MTZFMjlBNjEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2Vy
UmVwb3J0aW5nUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1QzExMjNDMTAyQjZDNDYwMDA5
NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
OEI2MTUyRjEwMzI0OTUxMDBDODU1NEEgLyogQ29va2llLmggaW4gSGVhZGVycyAqLywKKwkJCQlC
NTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTkzMjIsNiArMTkzMjksNyBAQAogCQkJCTkzOTIyNjJEMTAzMjEwN0IwMDZF
N0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI1MUJGNkYwMTAyQzlFNTkwMDAy
QzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlLmNwcAkocmV2aXNpb24gNDcyOTUpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU1FMaXRl
RmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjZW5kaWYKQEAgLTU4OCw2ICs1ODksMTEgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6
OnBlcmZvcm1HZXRUYWJsZQogICAgIHJldHVybiB0YWJsZU5hbWVzOwogfQogCitTUUxUcmFuc2Fj
dGlvbkNsaWVudCogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9kb2N1bWVudC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25DbGllbnQoKTsK
K30KKwogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IoKSBjb25zdAogewogICAgIHJldHVybiBtX2RvY3VtZW50LT5kYXRhYmFzZVRocmVh
ZCgpLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNp
b24gNDcyOTUpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNiBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUu
aD4KQEAgLTU3LDYgKzU2LDcgQEAgY2xhc3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7Citj
bGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7CiBjbGFzcyBTUUxWYWx1ZTsK
QEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwZXJmb3Jt
R2V0VGFibGVOYW1lcygpOwogCisgICAgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9u
Q2xpZW50KCkgY29uc3Q7CiAgICAgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rp
b25Db29yZGluYXRvcigpIGNvbnN0OwogCiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L0RhdGFiYXNlVGhyZWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VUaHJlYWQuY3BwCShyZXZpc2lvbiA0NzI5NSkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFz
ZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUg
IkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNl
VGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCiAgICAgOiBtX3RocmVhZElEKDApCisgICAgLCBtX3Ry
YW5zYWN0aW9uQ2xpZW50KG5ldyBTUUxUcmFuc2FjdGlvbkNsaWVudCgpKQogICAgICwgbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKG5ldyBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkpCiB7CiAg
ICAgbV9zZWxmUmVmID0gdGhpczsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVh
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCShyZXZp
c2lvbiA0NzI5NSkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGFi
YXNlOwogY2xhc3MgRGF0YWJhc2VUYXNrOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTUUxUcmFu
c2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNz
IERhdGFiYXNlVGhyZWFkIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8RGF0YWJhc2VUaHJlYWQ+
IHsKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9z
ZWQoRGF0YWJhc2UqKTsKICAgICBUaHJlYWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1
cm4gbV90aHJlYWRJRDsgfQogCisgICAgU1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9u
Q2xpZW50KCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNsaWVudC5nZXQoKTsgfQogICAgIFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVybiBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTgwLDYgKzgy
LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlPiA+IERh
dGFiYXNlU2V0OwogICAgIERhdGFiYXNlU2V0IG1fb3BlbkRhdGFiYXNlU2V0OwogCisgICAgT3du
UHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50PiBtX3RyYW5zYWN0aW9uQ2xpZW50OwogICAgIE93blB0
cjxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiB9
OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDQ3Mjk1KQor
KysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsMTEgKzM1LDkgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
QXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRh
dGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJPcmlnaW5RdW90YU1h
bmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNiArNDgsNyBAQAogI2luY2x1ZGUg
IlNRTFN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudENhbGxiYWNrLmgiCiAjaW5j
bHVkZSAiU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogI2lu
Y2x1ZGUgIlNRTFZhbHVlLmgiCiAKQEAgLTM1MCwxMCArMzQ5LDcgQEAgYm9vbCBTUUxUcmFuc2Fj
dGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogICAgICAgICAgICAgLy8gRmxhZyB0aGlzIHRyYW5z
YWN0aW9uIGFzIGhhdmluZyBjaGFuZ2VkIHRoZSBkYXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdhdGUg
bm90aWZpY2F0aW9uCiAgICAgICAgICAgICBtX21vZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwogICAg
ICAgICAgICAgLy8gQWxzbyBkaXJ0eSB0aGUgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGZpbGUgZm9y
IGNhbGN1bGF0aW5nIHF1b3RhIHVzYWdlCi0gICAgICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXIm
IG1hbmFnZXIoRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkp
OwotICAgICAgICAgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtYW5hZ2VyLm1hcmtEYXRhYmFzZShtX2RhdGFi
YXNlLmdldCgpKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCkt
PmRpZEV4ZWN1dGVTdGF0ZW1lbnQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAg
ICAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7CkBA
IC00MTQsMjAgKzQxMCw5IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3Jl
YXMKIHsKICAgICBBU1NFUlQobV9jdXJyZW50U3RhdGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hv
dWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KTsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRh
YmFzZS0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAgIEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2lu
Q29weSgpOwotICAgIAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJh
c2UtPmRvY3VtZW50KCktPmZyYW1lKCksIG1fZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7
Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUg
bmV3IHF1b3RhIGVuZGVkIHVwIGJlaW5nIGxhcmdlciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdp
bGwgcmV0cnkgdGhlIHN0YXRlbWVudC4KLSAgICBpZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEp
Ci0gICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAg
CisKKyAgICBtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5z
YWN0aW9uQ2xpZW50KCktPmRpZEV4Y2VlZFF1b3RhKHRoaXMpOworCiAgICAgbV9uZXh0U3RlcCA9
ICZTUUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNj
aGVkdWxpbmcgcnVuU3RhdGVtZW50cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAg
IG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKHRoaXMpOwpAQCAtNDYyLDggKzQ0
Nyw4IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRBbmRDb21taXQKICAgICAKICAg
ICAvLyBUaGUgY29tbWl0IHdhcyBzdWNjZXNzZnVsLCBub3RpZnkgdGhlIGRlbGVnYXRlcyBpZiB0
aGUgdHJhbnNhY3Rpb24gbW9kaWZpZWQgdGhpcyBkYXRhYmFzZQogICAgIGlmIChtX21vZGlmaWVk
RGF0YWJhc2UpCi0gICAgICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90
aWZ5RGF0YWJhc2VDaGFuZ2VkKG1fZGF0YWJhc2UtPm1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIG1f
ZGF0YWJhc2UtPm1fbmFtZSk7Ci0gICAgCisgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9u
Q2xpZW50KCktPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRoaXMpOworCiAgICAgLy8gTm93IHJlbGVh
c2Ugb3VyIHVubmVlZGVkIGNhbGxiYWNrcywgdG8gYnJlYWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAg
ICBtX2NhbGxiYWNrID0gMDsKICAgICBtX2Vycm9yQ2FsbGJhY2sgPSAwOwpJbmRleDogV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVu
dC5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0VHJh
bnNhY3Rpb24oU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFi
YXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRy
YW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNj
aGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHko
KS5nZXQoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1FMVHJh
bnNhY3Rpb25DbGllbnQ6OmRpZEV4ZWN1dGVTdGF0ZW1lbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQoreworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRh
dGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwor
ICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIo
KS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7CisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4g
bG9ja2VyKG1hbmFnZXIpOworICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKHRyYW5zYWN0aW9uLT5k
YXRhYmFzZSgpKTsKK30KKworYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVv
dGEoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7
CisgICAgUGFnZSogcGFnZSA9IGRhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgQVNT
RVJUKHBhZ2UpOworCisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBkYXRhYmFz
ZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVu
dFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2lu
LmdldCgpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VR
dW90YShkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50
aWZpZXIoKSk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4g
KG5ld1F1b3RhID4gY3VycmVudFF1b3RhKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
U1FMVHJhbnNhY3Rpb25DbGllbnRfaAorI2RlZmluZSBTUUxUcmFuc2FjdGlvbkNsaWVudF9oCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNRTFRyYW5zYWN0aW9uOworCisgICAg
Ly8gQSBjbGllbnQgdG8gdGhlIFNRTFRyYW5zYWN0aW9uIGNsYXNzLiBBbGxvd3MgU1FMVHJhbnNh
Y3Rpb24gdG8gbm90aWZ5IGludGVyZXN0ZWQKKyAgICAvLyBwYXJ0aWVzIHRoYXQgY2VydGFpbiB0
aGluZ3MgaGF2ZSBoYXBwZW5lZCBpbiBhIHRyYW5zYWN0aW9uLgorICAgIGNsYXNzIFNRTFRyYW5z
YWN0aW9uQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIE5vdGlmaWVzIGV2ZXJ5Ym9k
eSB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNvbW1pdGVkLgorICAgICAg
ICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKFNRTFRyYW5zYWN0aW9uKik7CisKKyAgICAgICAg
Ly8gTm90aWZpZXMgZXZlcnlib2R5IHRoYXQgYSBzdGF0ZW1lbnQgaW4gdGhlIGdpdmVuIHRyYW5z
YWN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLgorICAgICAgICB2b2lkIGRpZEV4ZWN1dGVTdGF0ZW1l
bnQoU1FMVHJhbnNhY3Rpb24qKTsKKworICAgICAgICAvLyBOb3RpZmllcyBldmVyeWJvZHkgdGhh
dCB0aGUgc2l6ZSBvZiB0aGUgZGF0YWJhc2UgZmlsZSBleGNlZWRzIGl0cyBxdW90YS4KKyAgICAg
ICAgLy8gSWYgdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCB0aGUgY3VycmVudCBzdGF0ZW1lbnQg
aW4gdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgIC8vIHJldHJpZWQuIE90aGVyd2lzZSwgdGhl
IHRyYW5zYWN0aW9uIGlzIHJvbGxlZCBiYWNrLgorICAgICAgICBib29sIGRpZEV4Y2VlZFF1b3Rh
KFNRTFRyYW5zYWN0aW9uKik7CisgICAgfTsKK30KKworI2VuZGlmIC8vIFNRTFRyYW5zYWN0aW9u
Q2xpZW50X2gK
</data>
<flag name="review"
          id="19069"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35052</attachid>
            <date>2009-08-18 11:02:28 -0700</date>
            <delta_ts>2009-08-18 11:20:19 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21462</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDktMDgtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNsaWVudCk6CisgICAgICAgICogc3RvcmFnZS9EYXRh
YmFzZS5oOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKToKKyAgICAgICAgKiBzdG9y
YWdlL0RhdGFiYXNlVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6
dHJhbnNhY3Rpb25DbGllbnQpOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNl
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRB
bmRDb21taXQpOgorICAgICAgICAqIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50Lmg6IEFkZGVkLgor
CiAyMDA5LTA4LTE4ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDc0MzAp
CisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTI0LDYgKzIx
MjQsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oIFwKIAlXZWJDb3Jl
L3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb25DbGllbnQuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
bGllbnQuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBc
CiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwKIAlXZWJD
b3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biA0NzQzMCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yOTY1
LDYgKzI5NjUsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwJywK
ICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NR
TFRyYW5zYWN0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b25DbGllbnQuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2su
aCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDQ3NDMwKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMjUwNCw2ICsyNTA0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RB
VEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBcCiAg
ICAgICAgIHN0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uY3BwIFwKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAg
XAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwKICAgICAg
ICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIFwKQEAg
LTI1MzIsNiArMjUzMyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ET01fU1RPUkFHRT0x
KSAKICAgICAgICAgc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmggXAogICAgICAgICBzdG9y
YWdlL1NRTFN0YXRlbWVudC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oIFwK
KyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKICAgICAgICAgc3RvcmFn
ZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VB
cmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIFwKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJj
ZXMuYmtsCShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDM5LDYgKzEwMzksOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhl
IGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIHN0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5j
cHAKICAgICAgICAgc3RvcmFnZS9TUUxTdGF0ZW1lbnQuY3BwCiAgICAgICAgIHN0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uY3BwCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3Bw
CisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKICAgICAgICAg
c3RvcmFnZS9TdG9yYWdlLmNwcAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
ICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQ3NDMwKQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA4MTYsNiArMzA4MTYs
MTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkNsaWVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCINCiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gNDc0MzApCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzg1OSw2ICszODU5LDggQEAKIAkJQjJGQTNFMTgw
QUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyRkEzRDMwMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1pvb21FdmVudC5jcHAgKi87IH07CiAJCUIyRkEzRTE5MEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjJGQTNEMzEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggKi87IH07
CiAJCUI1MEY1QjgxMEU5NkNEOTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MEY1QjgwMEU5NkNE
OTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7IH07IH07CisJCUI1MUJG
NkYwMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTFCRjZFRTEwMkM5RTU5MDAw
MkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwICovOyB9OworCQlCNTFCRjZGMTEwMkM5
RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBT
UUxUcmFuc2FjdGlvbkNsaWVudC5oICovOyB9OwogCQlCNUE2ODQyMjBGRkFCRTk4MDBEMjQ2ODkg
LyogU1FMaXRlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjVBNjg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0u
aCAqLzsgfTsKIAkJQjVBNjg0MjQwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVBNjg0
MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlCNUMx
MTIzQjEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUMxMTIzOTEwMkI2
QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi87IH07CkBAIC04
NzY3LDYgKzg3NjksOCBAQAogCQlCMkZBM0QzMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29t
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHWm9v
bUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjJGQTNEMzEwQUI3NUE2
RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1NWR1pvb21FdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
NTBGNUI4MDBFOTZDRDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlT2JqQ0V4dHJhcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjUxQkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8qIFNR
TFRyYW5zYWN0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBT
UUxpdGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTGl0
ZUZpbGVTeXN0ZW0uaDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxl
U3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTGl0ZUZp
bGVTeXN0ZW0uY3BwOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk4NzMsNiArOTg3Nyw4IEBACiAJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAvKiBz
dG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlC
NTFCRjZFRTEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwICovLAor
CQkJCUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICov
LAogCQkJCUI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmNwcCAqLywKIAkJCQlCNUMxMTIzQTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oICovLAogCQkJCTUxNDE4NUVEMENENjVGMDQwMDc2M0M5OSAvKiBDaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHAgKi8sCkBAIC0xNzMxMiw2ICsxNzMxOCw3IEBACiAJCQkJNDE2
RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8q
IENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjUxQkY2RjExMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE5Mzc4LDYgKzE5Mzg1
LDcgQEAKIAkJCQk5MzkyMjYyRDEwMzIxMDdCMDA2RTdENUQgLyogSlNIVE1MQ2FudmFzRWxlbWVu
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzkyMjYyRjEwMzIxMDg0MDA2RTdENUQg
LyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNUMxMTIzQjEw
MkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlCNTFCRjZGMDEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDQ3
NDMwKQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJT
UUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlICJTUUxSZXN1bHRTZXQuaCIKKyNpbmNsdWRlICJT
UUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2VuZGlmCkBAIC01ODgsNiArNTg5
LDExIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFiYXNlOjpwZXJmb3JtR2V0VGFibGUKICAgICByZXR1
cm4gdGFibGVOYW1lczsKIH0KIAorU1FMVHJhbnNhY3Rpb25DbGllbnQqIERhdGFiYXNlOjp0cmFu
c2FjdGlvbkNsaWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmRhdGFiYXNl
VGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7Cit9CisKIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IqIERhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9kb2N1bWVudC0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25Db29yZGluYXRv
cigpOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdG9yYWdlL0RhdGFiYXNlLmgJKHJldmlzaW9uIDQ3NDMwKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDYgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC01Nyw2ICs1Niw3IEBAIGNsYXNz
IERhdGFiYXNlVGhyZWFkOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTUUxSZXN1bHRTZXQ7CiBj
bGFzcyBTUUxUcmFuc2FjdGlvbkNhbGxiYWNrOworY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQ7
CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogY2xhc3MgU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrOwogY2xhc3MgU1FMVmFsdWU7CkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGlj
OgogCiAgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybUdldFRhYmxlTmFtZXMoKTsKIAorICAgIFNR
TFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCgpIGNvbnN0OwogICAgIFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdDsKIAog
cHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcAkocmV2aXNpb24gNDc0
MzApCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlVGFzay5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTUUxUcmFuc2Fj
dGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBEYXRhYmFzZVRocmVhZDo6RGF0YWJhc2VUaHJlYWQoKQog
ICAgIDogbV90aHJlYWRJRCgwKQorICAgICwgbV90cmFuc2FjdGlvbkNsaWVudChuZXcgU1FMVHJh
bnNhY3Rpb25DbGllbnQoKSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihuZXcgU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvcigpKQogewogICAgIG1fc2VsZlJlZiA9IHRoaXM7CkluZGV4
OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAkocmV2aXNpb24gNDc0MzApCisrKyBXZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFiYXNlVGFzazsK
IGNsYXNzIERvY3VtZW50OworY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQ7CiBjbGFzcyBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBEYXRhYmFzZVRocmVhZCA6IHB1YmxpYyBU
aHJlYWRTYWZlU2hhcmVkPERhdGFiYXNlVGhyZWFkPiB7CkBAIC02Miw2ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlY29yZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlKik7CiAgICAgVGhyZWFk
SWRlbnRpZmllciBnZXRUaHJlYWRJRCgpIHsgcmV0dXJuIG1fdGhyZWFkSUQ7IH0KIAorICAgIFNR
TFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNsaWVudCgpIHsgcmV0dXJuIG1fdHJhbnNh
Y3Rpb25DbGllbnQuZ2V0KCk7IH0KICAgICBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCkgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdl
dCgpOyB9CiAKIHByaXZhdGU6CkBAIC04MCw2ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZT4gPiBEYXRhYmFzZVNldDsKICAgICBEYXRhYmFzZVNl
dCBtX29wZW5EYXRhYmFzZVNldDsKIAorICAgIE93blB0cjxTUUxUcmFuc2FjdGlvbkNsaWVudD4g
bV90cmFuc2FjdGlvbkNsaWVudDsKICAgICBPd25QdHI8U1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
cj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogfTsKIApJbmRleDogV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uY3BwCShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFu
c2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSw5IEBACiAjaW5jbHVkZSAi
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZUF1dGhvcml6ZXIuaCIKICNpbmNsdWRlICJE
YXRhYmFzZURldGFpbHMuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKQEAgLTUwLDYgKzQ4LDcgQEAKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnQuaCIKICNpbmNsdWRl
ICJTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIlNR
TFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogCkBAIC0z
NTAsMTAgKzM0OSw3IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQK
ICAgICAgICAgICAgIC8vIEZsYWcgdGhpcyB0cmFuc2FjdGlvbiBhcyBoYXZpbmcgY2hhbmdlZCB0
aGUgZGF0YWJhc2UgZm9yIGxhdGVyIGRlbGVnYXRlIG5vdGlmaWNhdGlvbgogICAgICAgICAgICAg
bV9tb2RpZmllZERhdGFiYXNlID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIEFsc28gZGlydHkgdGhl
IHNpemUgb2YgdGhpcyBkYXRhYmFzZSBmaWxlIGZvciBjYWxjdWxhdGluZyBxdW90YSB1c2FnZQot
ICAgICAgICAgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5hZ2VyKERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKLSAgICAgICAgICAgIExvY2tlcjxPcmln
aW5RdW90YU1hbmFnZXI+IGxvY2tlcihtYW5hZ2VyKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgbWFuYWdlci5tYXJrRGF0YWJhc2UobV9kYXRhYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBt
X2RhdGFiYXNlLT50cmFuc2FjdGlvbkNsaWVudCgpLT5kaWRFeGVjdXRlU3RhdGVtZW50KHRoaXMp
OwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKG1fY3VycmVudFN0YXRlbWVu
dC0+aGFzU3RhdGVtZW50Q2FsbGJhY2soKSkgewpAQCAtNDE0LDIwICs0MTAsOSBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzCiB7CiAgICAgQVNTRVJUKG1fY3VycmVu
dFN0YXRlbWVudCk7CiAgICAgQVNTRVJUKCFtX3Nob3VsZFJldHJ5Q3VycmVudFN0YXRlbWVudCk7
Ci0gICAgCi0gICAgUGFnZSogcGFnZSA9IG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPnBhZ2UoKTsK
LSAgICBBU1NFUlQocGFnZSk7Ci0gICAgCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4gPSBtX2RhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHkoKTsKLSAgICAKLSAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVv
dGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PmV4Y2VlZGVkRGF0YWJhc2VRdW90YShtX2RhdGFiYXNlLT5kb2N1bWVudCgpLT5mcmFtZSgpLCBt
X2RhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdp
bi5nZXQoKSk7Ci0gICAgCi0gICAgLy8gSWYgdGhlIG5ldyBxdW90YSBlbmRlZCB1cCBiZWluZyBs
YXJnZXIgdGhhbiB0aGUgb2xkIHF1b3RhLCB3ZSB3aWxsIHJldHJ5IHRoZSBzdGF0ZW1lbnQuCi0g
ICAgaWYgKG5ld1F1b3RhID4gY3VycmVudFF1b3RhKQotICAgICAgICBtX3Nob3VsZFJldHJ5Q3Vy
cmVudFN0YXRlbWVudCA9IHRydWU7Ci0gICAgICAgIAorCisgICAgbV9zaG91bGRSZXRyeUN1cnJl
bnRTdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNsaWVudCgpLT5kaWRFeGNlZWRR
dW90YSh0aGlzKTsKKwogICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OnJ1blN0YXRl
bWVudHM7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIHJ1blN0YXRlbWVudHMgZm9y
IHRyYW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5z
YWN0aW9uU3RlcCh0aGlzKTsKQEAgLTQ2Miw4ICs0NDcsOCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
Ojpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAgICAgCiAgICAgLy8gVGhlIGNvbW1pdCB3YXMgc3VjY2Vz
c2Z1bCwgbm90aWZ5IHRoZSBkZWxlZ2F0ZXMgaWYgdGhlIHRyYW5zYWN0aW9uIG1vZGlmaWVkIHRo
aXMgZGF0YWJhc2UKICAgICBpZiAobV9tb2RpZmllZERhdGFiYXNlKQotICAgICAgICBEYXRhYmFz
ZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChtX2RhdGFi
YXNlLT5tX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBtX2RhdGFiYXNlLT5tX25hbWUpOwotICAgIAor
ICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNsaWVudCgpLT5kaWRDb21taXRUcmFuc2Fj
dGlvbih0aGlzKTsKKwogICAgIC8vIE5vdyByZWxlYXNlIG91ciB1bm5lZWRlZCBjYWxsYmFja3Ms
IHRvIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXMuCiAgICAgbV9jYWxsYmFjayA9IDA7CiAgICAgbV9l
cnJvckNhbGxiYWNrID0gMDsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xp
ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKKworI2luY2x1ZGUgIkNocm9tZUNs
aWVudC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VUaHJlYWQu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJTUUxUcmFuc2FjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgU1FM
VHJhbnNhY3Rpb25DbGllbnQ6OmRpZENvbW1pdFRyYW5zYWN0aW9uKFNRTFRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IHRyYW5zYWN0aW9u
LT5kYXRhYmFzZSgpLT5kb2N1bWVudCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgp
KTsKKyAgICBEYXRhYmFzZSogZGF0YWJhc2UgPSB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKTsKKyAg
ICBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5zY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdl
ZChkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCkuZ2V0KCksIGRhdGFiYXNlLT5zdHJpbmdJ
ZGVudGlmaWVyKCkpOworfQorCit2b2lkIFNRTFRyYW5zYWN0aW9uQ2xpZW50OjpkaWRFeGVjdXRl
U3RhdGVtZW50KFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5kb2N1bWVudCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKyAgICBPcmlnaW5RdW90YU1hbmFnZXImIG1h
bmFnZXIoRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwor
ICAgIExvY2tlcjxPcmlnaW5RdW90YU1hbmFnZXI+IGxvY2tlcihtYW5hZ2VyKTsKKyAgICBtYW5h
Z2VyLm1hcmtEYXRhYmFzZSh0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKSk7Cit9CisKK2Jvb2wgU1FM
VHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4Y2VlZFF1b3RhKFNRTFRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIERhdGFiYXNlKiBkYXRh
YmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBkYXRhYmFz
ZS0+ZG9jdW1lbnQoKS0+cGFnZSgpOworICAgIEFTU0VSVChwYWdlKTsKKworICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwor
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcigpLnF1b3RhRm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7CisgICAgcGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZGF0YWJhc2UtPmRvY3VtZW50KCkt
PmZyYW1lKCksIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkpOworICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBuZXdRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3RhRm9yT3Jp
Z2luKG9yaWdpbi5nZXQoKSk7CisgICAgcmV0dXJuIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSk7
Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gKKyNk
ZWZpbmUgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKKworICAgIC8vIEEgY2xpZW50IHRvIHRoZSBTUUxUcmFu
c2FjdGlvbiBjbGFzcy4gQWxsb3dzIFNRTFRyYW5zYWN0aW9uIHRvIG5vdGlmeSBpbnRlcmVzdGVk
CisgICAgLy8gcGFydGllcyB0aGF0IGNlcnRhaW4gdGhpbmdzIGhhdmUgaGFwcGVuZWQgaW4gYSB0
cmFuc2FjdGlvbi4KKyAgICBjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudCB7CisgICAgcHVibGlj
OgorICAgICAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKFNRTFRyYW5zYWN0aW9uKik7Cisg
ICAgICAgIHZvaWQgZGlkRXhlY3V0ZVN0YXRlbWVudChTUUxUcmFuc2FjdGlvbiopOworICAgICAg
ICBib29sIGRpZEV4Y2VlZFF1b3RhKFNRTFRyYW5zYWN0aW9uKik7CisgICAgfTsKK30KKworI2Vu
ZGlmIC8vIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35054</attachid>
            <date>2009-08-18 11:20:19 -0700</date>
            <delta_ts>2009-08-18 15:14:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21517</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDgtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogc3RvcmFn
ZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnRy
YW5zYWN0aW9uQ2xpZW50KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oOiBBZGRlZC4KKwog
MjAwOS0wOC0xOCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQ3NDMwKQor
KysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjEyNCw2ICsyMTI0
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rp
b24uY3BwIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaCBcCiAJV2ViQ29yZS9z
dG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRy
YW5zYWN0aW9uQ2xpZW50LmNwcCBcCisJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xp
ZW50LmggXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAog
CVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBcCiAJV2ViQ29y
ZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
NDc0MzApCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjk2NSw2
ICsyOTY1LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcCcsCiAg
ICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oJywKICAgICAgICAgICAgICdzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbkNsaWVudC5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgn
LApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUucHJvCShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcg
Y29weSkKQEAgLTI1MDQsNiArMjUwNCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRB
QkFTRT0xKSB7CiAgICAgICAgIHN0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAgXAogICAg
ICAgICBzdG9yYWdlL1NRTFN0YXRlbWVudC5jcHAgXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcCBcCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBcCkBAIC0y
NTMyLDYgKzI1MzMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRE9NX1NUT1JBR0U9MSkg
CiAgICAgICAgIHN0b3JhZ2UvU1FMUmVzdWx0U2V0Um93TGlzdC5oIFwKICAgICAgICAgc3RvcmFn
ZS9TUUxTdGF0ZW1lbnQuaCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaCBcCisg
ICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaCBcCiAgICAgICAgIHN0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJl
YS5oIFwKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaCBcCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2Vz
LmJrbAkocmV2aXNpb24gNDc0MzApCisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29y
a2luZyBjb3B5KQpAQCAtMTAzOSw2ICsxMDM5LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBs
aXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBzdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuY3Bw
CiAgICAgICAgIHN0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAogICAgICAgICBzdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmNwcAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcAor
ICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCiAgICAgICAgIHN0
b3JhZ2UvU3RvcmFnZS5jcHAKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCiAg
ICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwODE2LDYgKzMwODE2LDE0
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25DbGllbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDQ3NDMwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4NTksNiArMzg1OSw4IEBACiAJCUIyRkEzRTE4MEFC
NzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkZBM0QzMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
Vkdab29tRXZlbnQuY3BwICovOyB9OwogCQlCMkZBM0UxOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
Vkdab29tRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyRkEzRDMxMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5oICovOyB9Owog
CQlCNTBGNUI4MTBFOTZDRDk5MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTBGNUI4MDBFOTZDRDk5
MDBBRDcxQTYgLyogV2ViQ29yZU9iakNFeHRyYXMubW0gKi87IHNldHRpbmdzID0ge0NPTVBJTEVS
X0ZMQUdTID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiOyB9OyB9OworCQlCNTFCRjZG
MDEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUUxMDJDOUU1OTAwMDJD
MTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCAqLzsgfTsKKwkJQjUxQkY2RjExMDJDOUU1
OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FM
VHJhbnNhY3Rpb25DbGllbnQuaCAqLzsgfTsKIAkJQjVBNjg0MjIwRkZBQkU5ODAwRDI0Njg5IC8q
IFNRTGl0ZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1QTY4NDIxMEZGQUJFOTgwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmgg
Ki87IH07CiAJCUI1QTY4NDI0MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QTY4NDIz
MEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQjVDMTEy
M0IxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVDMTEyMzkxMDJCNkM0
NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovOyB9OwpAQCAtODc2
Nyw2ICs4NzY5LDggQEAKIAkJQjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHWm9vbUV2
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR1pvb21F
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyRkEzRDMxMEFCNzVBNkYw
MDBFNUFDNCAvKiBKU1NWR1pvb21FdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNTVkdab29tRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjUw
RjVCODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU9iakNFeHRyYXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxU
cmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUI1MUJGNkVGMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FM
aXRlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxpdGVG
aWxlU3lzdGVtLmg7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5
c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxpdGVGaWxl
U3lzdGVtLmNwcDsgcGF0aCA9IHNxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05ODczLDYgKzk4NzcsOCBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3Rv
cmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjUx
QkY2RUUxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCAqLywKKwkJ
CQlCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAqLywK
IAkJCQlCNUMxMTIzOTEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAgKi8sCiAJCQkJQjVDMTEyM0ExMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwICovLApAQCAtMTczMTIsNiArMTczMTgsNyBAQAogCQkJCTQxNkUy
OUE2MTAyRkE5NjIwMDdGQzE0RSAvKiBXb3JrZXJSZXBvcnRpbmdQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjVDMTEyM0MxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBD
b29raWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUI1MUJGNkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBT
UUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xOTM3OCw2ICsxOTM4NSw3
IEBACiAJCQkJOTM5MjI2MkQxMDMyMTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5MjI2MkYxMDMyMTA4NDAwNkU3RDVEIC8q
IEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjVDMTEyM0IxMDJC
NkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA0NzQz
MCkKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDYgKzUwLDcgQEAKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMUmVzdWx0U2V0LmgiCisjaW5jbHVkZSAiU1FM
VHJhbnNhY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAtNTg4LDYgKzU4OSwx
MSBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6cGVyZm9ybUdldFRhYmxlCiAgICAgcmV0dXJu
IHRhYmxlTmFtZXM7CiB9CiAKK1NRTFRyYW5zYWN0aW9uQ2xpZW50KiBEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25DbGllbnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5kYXRhYmFzZVRo
cmVhZCgpLT50cmFuc2FjdGlvbkNsaWVudCgpOworfQorCiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKiBEYXRhYmFzZTo6dHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fZG9jdW1lbnQtPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3Io
KTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZS5oCShyZXZpc2lvbiA0NzQzMCkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw2IEBACiAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNTcsNiArNTYsNyBAQCBjbGFzcyBE
YXRhYmFzZVRocmVhZDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU1FMUmVzdWx0U2V0OwogY2xh
c3MgU1FMVHJhbnNhY3Rpb25DYWxsYmFjazsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50Owog
Y2xhc3MgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjazsKIGNsYXNzIFNRTFZhbHVlOwpAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1HZXRUYWJsZU5hbWVzKCk7CiAKKyAgICBTUUxU
cmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdDsKICAgICBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAJKHJldmlzaW9uIDQ3NDMw
KQorKysgV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTIgKzM1LDE0IEBACiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKICNpbmNsdWRlICJEYXRh
YmFzZVRhc2suaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rp
b25DbGllbnQuaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogRGF0YWJhc2VUaHJlYWQ6OkRhdGFiYXNlVGhyZWFkKCkKICAg
ICA6IG1fdGhyZWFkSUQoMCkKKyAgICAsIG1fdHJhbnNhY3Rpb25DbGllbnQobmV3IFNRTFRyYW5z
YWN0aW9uQ2xpZW50KCkpCiAgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IobmV3IFNRTFRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSkKIHsKICAgICBtX3NlbGZSZWYgPSB0aGlzOwpJbmRleDog
V2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlVGhyZWFkLmgJKHJldmlzaW9uIDQ3NDMwKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBEYXRhYmFzZVRhc2s7CiBj
bGFzcyBEb2N1bWVudDsKK2NsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50OwogY2xhc3MgU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgRGF0YWJhc2VUaHJlYWQgOiBwdWJsaWMgVGhy
ZWFkU2FmZVNoYXJlZDxEYXRhYmFzZVRocmVhZD4gewpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSopOwogICAgIFRocmVhZElk
ZW50aWZpZXIgZ2V0VGhyZWFkSUQoKSB7IHJldHVybiBtX3RocmVhZElEOyB9CiAKKyAgICBTUUxU
cmFuc2FjdGlvbkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQoKSB7IHJldHVybiBtX3RyYW5zYWN0
aW9uQ2xpZW50LmdldCgpOyB9CiAgICAgU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNh
Y3Rpb25Db29yZGluYXRvcigpIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQo
KTsgfQogCiBwcml2YXRlOgpAQCAtODAsNiArODIsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYg
SGFzaFNldDxSZWZQdHI8RGF0YWJhc2U+ID4gRGF0YWJhc2VTZXQ7CiAgICAgRGF0YWJhc2VTZXQg
bV9vcGVuRGF0YWJhc2VTZXQ7CiAKKyAgICBPd25QdHI8U1FMVHJhbnNhY3Rpb25DbGllbnQ+IG1f
dHJhbnNhY3Rpb25DbGllbnQ7CiAgICAgT3duUHRyPFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcAkocmV2aXNpb24gNDc0MzApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMSArMzUsOSBAQAogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VBdXRob3JpemVyLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VEZXRhaWxzLmgiCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIk9yaWdpblF1b3RhTWFuYWdlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CkBAIC01MCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAi
U1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKICNpbmNsdWRlICJTUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25DbGllbnQuaCIKICNpbmNsdWRlICJTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU1FMVmFsdWUuaCIKIApAQCAtMzUw
LDEwICszNDksNyBAQCBib29sIFNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50CiAg
ICAgICAgICAgICAvLyBGbGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgaGF2aW5nIGNoYW5nZWQgdGhl
IGRhdGFiYXNlIGZvciBsYXRlciBkZWxlZ2F0ZSBub3RpZmljYXRpb24KICAgICAgICAgICAgIG1f
bW9kaWZpZWREYXRhYmFzZSA9IHRydWU7CiAgICAgICAgICAgICAvLyBBbHNvIGRpcnR5IHRoZSBz
aXplIG9mIHRoaXMgZGF0YWJhc2UgZmlsZSBmb3IgY2FsY3VsYXRpbmcgcXVvdGEgdXNhZ2UKLSAg
ICAgICAgICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7Ci0gICAgICAgICAgICBMb2NrZXI8T3JpZ2lu
UXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG1hbmFnZXIubWFya0RhdGFiYXNlKG1fZGF0YWJhc2UuZ2V0KCkpOworICAgICAgICAgICAgbV9k
YXRhYmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+ZGlkRXhlY3V0ZVN0YXRlbWVudCh0aGlzKTsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQt
Pmhhc1N0YXRlbWVudENhbGxiYWNrKCkpIHsKQEAgLTQxNCwyMCArNDEwLDkgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhcwogewogICAgIEFTU0VSVChtX2N1cnJlbnRT
dGF0ZW1lbnQpOwogICAgIEFTU0VSVCghbV9zaG91bGRSZXRyeUN1cnJlbnRTdGF0ZW1lbnQpOwot
ICAgIAotICAgIFBhZ2UqIHBhZ2UgPSBtX2RhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0g
ICAgQVNTRVJUKHBhZ2UpOwotICAgIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gbV9kYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7Ci0gICAgCi0gICAgdW5zaWduZWQg
bG9uZyBsb25nIGN1cnJlbnRRdW90YSA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnF1b3Rh
Rm9yT3JpZ2luKG9yaWdpbi5nZXQoKSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5l
eGNlZWRlZERhdGFiYXNlUXVvdGEobV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbV9k
YXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3
UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4u
Z2V0KCkpOwotICAgIAotICAgIC8vIElmIHRoZSBuZXcgcXVvdGEgZW5kZWQgdXAgYmVpbmcgbGFy
Z2VyIHRoYW4gdGhlIG9sZCBxdW90YSwgd2Ugd2lsbCByZXRyeSB0aGUgc3RhdGVtZW50LgotICAg
IGlmIChuZXdRdW90YSA+IGN1cnJlbnRRdW90YSkKLSAgICAgICAgbV9zaG91bGRSZXRyeUN1cnJl
bnRTdGF0ZW1lbnQgPSB0cnVlOwotICAgICAgICAKKworICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50
U3RhdGVtZW50ID0gbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+ZGlkRXhjZWVkUXVv
dGEodGhpcyk7CisKICAgICBtX25leHRTdGVwID0gJlNRTFRyYW5zYWN0aW9uOjpydW5TdGF0ZW1l
bnRzOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBydW5TdGF0ZW1lbnRzIGZvciB0
cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2Fj
dGlvblN0ZXAodGhpcyk7CkBAIC00NjIsOCArNDQ3LDggQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6
cG9zdGZsaWdodEFuZENvbW1pdAogICAgIAogICAgIC8vIFRoZSBjb21taXQgd2FzIHN1Y2Nlc3Nm
dWwsIG5vdGlmeSB0aGUgZGVsZWdhdGVzIGlmIHRoZSB0cmFuc2FjdGlvbiBtb2RpZmllZCB0aGlz
IGRhdGFiYXNlCiAgICAgaWYgKG1fbW9kaWZpZWREYXRhYmFzZSkKLSAgICAgICAgRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQobV9kYXRhYmFz
ZS0+bV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgbV9kYXRhYmFzZS0+bV9uYW1lKTsKLSAgICAKKyAg
ICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25DbGllbnQoKS0+ZGlkQ29tbWl0VHJhbnNhY3Rp
b24odGhpcyk7CisKICAgICAvLyBOb3cgcmVsZWFzZSBvdXIgdW5uZWVkZWQgY2FsbGJhY2tzLCB0
byBicmVhayByZWZlcmVuY2UgY3ljbGVzLgogICAgIG1fY2FsbGJhY2sgPSAwOwogICAgIG1fZXJy
b3JDYWxsYmFjayA9IDA7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCisKKyNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVGhyZWFkLmgi
CisjaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiU1FMVHJhbnNhY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFNRTFRy
YW5zYWN0aW9uQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihTUUxUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCit7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSB0cmFuc2FjdGlvbi0+
ZGF0YWJhc2UoKS0+ZG9jdW1lbnQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7
CisgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CisgICAg
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
ZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpLmdldCgpLCBkYXRhYmFzZS0+c3RyaW5nSWRl
bnRpZmllcigpKTsKK30KKwordm9pZCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhlY3V0ZVN0
YXRlbWVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+ZG9jdW1lbnQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+Z2V0VGhyZWFkSUQoKSk7CisgICAgT3JpZ2luUXVvdGFNYW5hZ2VyJiBtYW5h
Z2VyKERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLm9yaWdpblF1b3RhTWFuYWdlcigpKTsKKyAg
ICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBsb2NrZXIobWFuYWdlcik7CisgICAgbWFuYWdl
ci5tYXJrRGF0YWJhc2UodHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkpOworfQorCitib29sIFNRTFRy
YW5zYWN0aW9uQ2xpZW50OjpkaWRFeGNlZWRRdW90YShTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBEYXRhYmFzZSogZGF0YWJh
c2UgPSB0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKTsKKyAgICBQYWdlKiBwYWdlID0gZGF0YWJhc2Ut
PmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBBU1NFUlQocGFnZSk7CisKKyAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG9yaWdpbiA9IGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHkoKTsKKwor
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5xdW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOworICAgIHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKGRhdGFiYXNlLT5kb2N1bWVudCgpLT5m
cmFtZSgpLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpKTsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbmV3UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZvck9yaWdp
bihvcmlnaW4uZ2V0KCkpOworICAgIHJldHVybiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpOwor
fQorCit9CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTUUxUcmFuc2FjdGlvbkNsaWVudF9oCisjZGVm
aW5lIFNRTFRyYW5zYWN0aW9uQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU1FMVHJhbnNhY3Rpb247CisKKyAgICAvLyBBIGNsaWVudCB0byB0aGUgU1FMVHJhbnNh
Y3Rpb24gY2xhc3MuIEFsbG93cyBTUUxUcmFuc2FjdGlvbiB0byBub3RpZnkgaW50ZXJlc3RlZAor
ICAgIC8vIHBhcnRpZXMgdGhhdCBjZXJ0YWluIHRoaW5ncyBoYXZlIGhhcHBlbmVkIGluIGEgdHJh
bnNhY3Rpb24uCisgICAgY2xhc3MgU1FMVHJhbnNhY3Rpb25DbGllbnQgeworICAgIHB1YmxpYzoK
KyAgICAgICAgdm9pZCBkaWRDb21taXRUcmFuc2FjdGlvbihTUUxUcmFuc2FjdGlvbiopOworICAg
ICAgICB2b2lkIGRpZEV4ZWN1dGVTdGF0ZW1lbnQoU1FMVHJhbnNhY3Rpb24qKTsKKyAgICAgICAg
Ym9vbCBkaWRFeGNlZWRRdW90YShTUUxUcmFuc2FjdGlvbiopOworICAgIH07Cit9CisKKyNlbmRp
ZiAvLyBTUUxUcmFuc2FjdGlvbkNsaWVudF9oCg==
</data>
<flag name="review"
          id="19238"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="19239"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35082</attachid>
            <date>2009-08-18 15:14:20 -0700</date>
            <delta_ts>2009-08-19 15:32:23 -0700</delta_ts>
            <desc>resolved patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21515</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzQ1OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDgtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogc3RvcmFn
ZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnRy
YW5zYWN0aW9uQ2xpZW50KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oOiBBZGRlZC4KKwog
MjAwOS0wOC0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NzQ1
OSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMjQsNiAr
MjEyNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5z
YWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmggXAogCVdlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgXAorCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bkNsaWVudC5oIFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IFwKIAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgXAogCVdl
YkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDQ3NDU5KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTI5
NjUsNiArMjk2NSw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25DbGllbnQuaCcsCisgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbkNsaWVudC5jcHAnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5oJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
ay5oJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnBybwkocmV2aXNpb24gNDc0NTkpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTA0LDYgKzI1MDQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
REFUQUJBU0U9MSkgewogICAgICAgICBzdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9TUUxTdGF0ZW1lbnQuY3BwIFwKICAgICAgICAgc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5jcHAgXAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNw
cCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgXApA
QCAtMjUzMiw2ICsyNTMzLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RPTV9TVE9SQUdF
PTEpIAogICAgICAgICBzdG9yYWdlL1NRTFJlc3VsdFNldFJvd0xpc3QuaCBcCiAgICAgICAgIHN0
b3JhZ2UvU1FMU3RhdGVtZW50LmggXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgg
XAorICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmggXAogICAgICAgICBzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFn
ZUFyZWEuaCBcCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggXApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291
cmNlcy5ia2wJKHJldmlzaW9uIDQ3NDU5KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMzksNiArMTAzOSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0
aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0
LmNwcAogICAgICAgICBzdG9yYWdlL1NRTFN0YXRlbWVudC5jcHAKICAgICAgICAgc3RvcmFnZS9T
UUxUcmFuc2FjdGlvbi5jcHAKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5j
cHAKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcAogICAgICAg
ICBzdG9yYWdlL1N0b3JhZ2UuY3BwCiAgICAgICAgIHN0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNw
cAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDc0NTkpCisrKyBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDgxNiw2ICszMDgx
NiwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHN0b3JhZ2VcU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA0NzQ1OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODU5LDYgKzM4NTksOCBAQAogCQlCMkZBM0Ux
ODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMzAwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJQjJGQTNFMTkwQUI3NUE2RjAwMEU1QUM0IC8q
IEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuaCAqLzsg
fTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUwRjVCODAwRTk2
Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovOyBzZXR0aW5ncyA9IHtDT01Q
SUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKKwkJQjUx
QkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MUJGNkVFMTAyQzlFNTkw
MDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi87IH07CisJCUI1MUJGNkYxMTAy
QzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8q
IFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07CiAJCUI1QTY4NDIyMEZGQUJFOTgwMEQyNDY4
OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3Rl
bS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3Rl
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi87IH07CiAJCUI1
QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzExMjM5MTAy
QjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKQEAg
LTg3NjgsNiArODc3MCw4IEBACiAJCUIyRkEzRDMwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1pv
b21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkda
b29tRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0QzMTBBQjc1
QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU1ZHWm9vbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUI1MEY1QjgwMEU5NkNEOTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTFCRjZFRTEwMkM5RTU5MDAwMkMxNUEgLyog
U1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjEwRkZBQkU5ODAwRDI0Njg5IC8q
IFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FM
aXRlRmlsZVN5c3RlbS5oOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNRTGl0ZUZp
bGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMaXRl
RmlsZVN5c3RlbS5jcHA7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtOTg3NSw2ICs5ODc5LDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIzN0FFIC8q
IHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8s
CisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50Lmgg
Ki8sCiAJCQkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwICovLAogCQkJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmggKi8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5IC8qIENo
YW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKQEAgLTE3MzE2LDYgKzE3MzIyLDcgQEAKIAkJCQlC
NUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRlck92ZXJm
bG93LmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEgLyogU1FM
VHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTkzODIsNiArMTkzODksNyBA
QAogCQkJCTkzOTIyNjJEMTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1RCAvKiBK
U0NTU1J1bGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1QzExMjNCMTAyQjZD
NDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUI1MUJGNkYwMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24gNDc0NTkp
CisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlNRTGl0
ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUgIlNRTFRy
YW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
IgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjZW5kaWYKQEAgLTU4OSw2ICs1OTAsMTEg
QEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZQogICAgIHJldHVybiB0
YWJsZU5hbWVzOwogfQogCitTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0YWJhc2U6OnRyYW5zYWN0
aW9uQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+ZGF0YWJhc2VUaHJl
YWQoKS0+dHJhbnNhY3Rpb25DbGllbnQoKTsKK30KKwogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ciogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdAogewogICAgIHJldHVy
biBtX2RvY3VtZW50LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7
CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNpb24gNDc0NTkpCisrKyBXZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQAogCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTU3LDYgKzU2LDcgQEAgY2xhc3MgRGF0
YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNRTFJlc3VsdFNldDsKIGNsYXNz
IFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNs
YXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkVycm9y
Q2FsbGJhY2s7CiBjbGFzcyBTUUxWYWx1ZTsKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtR2V0VGFibGVOYW1lcygpOwogCisgICAgU1FMVHJh
bnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3Q7CiAgICAgU1FMVHJhbnNh
Y3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0OwogCiBwcml2
YXRlOgpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCShyZXZpc2lvbiA0NzQ1OSkK
KysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiRGF0YWJh
c2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9u
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCgpCiAgICAg
OiBtX3RocmVhZElEKDApCisgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KG5ldyBTUUxUcmFuc2Fj
dGlvbkNsaWVudCgpKQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKG5ldyBTUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhpczsKSW5kZXg6IFdl
YkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRocmVhZC5oCShyZXZpc2lvbiA0NzQ1OSkKKysrIFdlYkNvcmUvc3RvcmFn
ZS9EYXRhYmFzZVRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUYXNrOwogY2xh
c3MgRG9jdW1lbnQ7CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNRTFRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGljIFRocmVh
ZFNhZmVTaGFyZWQ8RGF0YWJhc2VUaHJlYWQ+IHsKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UqKTsKICAgICBUaHJlYWRJZGVu
dGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4gbV90aHJlYWRJRDsgfQogCisgICAgU1FMVHJh
bnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KCkgeyByZXR1cm4gbV90cmFuc2FjdGlv
bkNsaWVudC5nZXQoKTsgfQogICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7
IH0KIAogcHJpdmF0ZToKQEAgLTgwLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPERhdGFiYXNlPiA+IERhdGFiYXNlU2V0OwogICAgIERhdGFiYXNlU2V0IG1f
b3BlbkRhdGFiYXNlU2V0OwogCisgICAgT3duUHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50PiBtX3Ry
YW5zYWN0aW9uQ2xpZW50OwogICAgIE93blB0cjxTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiB9OwogCkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvU1FM
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2Fj
dGlvbi5jcHAJKHJldmlzaW9uIDQ3NDU5KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDkgQEAKICNpbmNsdWRlICJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpA
QCAtNTAsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNRTFN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TFN0YXRlbWVudENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAKQEAgLTM1MCwx
MCArMzQ5LDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudAogICAg
ICAgICAgICAgLy8gRmxhZyB0aGlzIHRyYW5zYWN0aW9uIGFzIGhhdmluZyBjaGFuZ2VkIHRoZSBk
YXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdhdGUgbm90aWZpY2F0aW9uCiAgICAgICAgICAgICBtX21v
ZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgLy8gQWxzbyBkaXJ0eSB0aGUgc2l6
ZSBvZiB0aGlzIGRhdGFiYXNlIGZpbGUgZm9yIGNhbGN1bGF0aW5nIHF1b3RhIHVzYWdlCi0gICAg
ICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG1hbmFnZXIoRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwotICAgICAgICAgICAgTG9ja2VyPE9yaWdpblF1
b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBt
YW5hZ2VyLm1hcmtEYXRhYmFzZShtX2RhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgICAgIG1fZGF0
YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZEV4ZWN1dGVTdGF0ZW1lbnQodGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9jdXJyZW50U3RhdGVtZW50LT5o
YXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7CkBAIC00MTQsMjAgKzQxMCw5IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIHsKICAgICBBU1NFUlQobV9jdXJyZW50U3Rh
dGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50KTsKLSAg
ICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+cGFnZSgpOwotICAg
IEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9
IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwotICAgIAotICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5xdW90YUZv
ck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCksIG1fZGF0
YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1
b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdl
dCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgbmV3IHF1b3RhIGVuZGVkIHVwIGJlaW5nIGxhcmdl
ciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdpbGwgcmV0cnkgdGhlIHN0YXRlbWVudC4KLSAgICBp
ZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpCi0gICAgICAgIG1fc2hvdWxkUmV0cnlDdXJyZW50
U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgCisKKyAgICBtX3Nob3VsZFJldHJ5Q3VycmVudFN0
YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZEV4Y2VlZFF1b3Rh
KHRoaXMpOworCiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6cnVuU3RhdGVtZW50
czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgcnVuU3RhdGVtZW50cyBmb3IgdHJh
bnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rp
b25TdGVwKHRoaXMpOwpAQCAtNDYyLDggKzQ0Nyw4IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBv
c3RmbGlnaHRBbmRDb21taXQKICAgICAKICAgICAvLyBUaGUgY29tbWl0IHdhcyBzdWNjZXNzZnVs
LCBub3RpZnkgdGhlIGRlbGVnYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gbW9kaWZpZWQgdGhpcyBk
YXRhYmFzZQogICAgIGlmIChtX21vZGlmaWVkRGF0YWJhc2UpCi0gICAgICAgIERhdGFiYXNlVHJh
Y2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG1fZGF0YWJhc2Ut
Pm1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIG1fZGF0YWJhc2UtPm1fbmFtZSk7Ci0gICAgCisgICAg
ICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZENvbW1pdFRyYW5zYWN0aW9u
KHRoaXMpOworCiAgICAgLy8gTm93IHJlbGVhc2Ugb3VyIHVubmVlZGVkIGNhbGxiYWNrcywgdG8g
YnJlYWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICBtX2NhbGxiYWNrID0gMDsKICAgICBtX2Vycm9y
Q2FsbGJhY2sgPSAwOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgorCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVhZC5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlNRTFRyYW5zYWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBTUUxUcmFu
c2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oU1FMVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQoreworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRh
dGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwor
ICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAgIERh
dGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKGRh
dGFiYXNlLT5zZWN1cml0eU9yaWdpbkNvcHkoKS5nZXQoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50
aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb25DbGllbnQ6OmRpZEV4ZWN1dGVTdGF0
ZW1lbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFiYXNl
VGhyZWFkKCktPmdldFRocmVhZElEKCkpOworICAgIE9yaWdpblF1b3RhTWFuYWdlciYgbWFuYWdl
cihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5RdW90YU1hbmFnZXIoKSk7CisgICAg
TG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOworICAgIG1hbmFnZXIu
bWFya0RhdGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKTsKK30KKworYm9vbCBTUUxUcmFu
c2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgRGF0YWJhc2UqIGRhdGFiYXNl
ID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CisgICAgUGFnZSogcGFnZSA9IGRhdGFiYXNlLT5k
b2N1bWVudCgpLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW5Db3B5KCk7CisKKyAg
ICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFj
a2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VRdW90YShkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4o
b3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gKG5ld1F1b3RhID4gY3VycmVudFF1b3RhKTsKK30K
KworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rpb25DbGllbnRfaAorI2RlZmlu
ZSBTUUxUcmFuc2FjdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIFNRTFRyYW5zYWN0aW9uOworCisgICAgLy8gQSBjbGllbnQgdG8gdGhlIFNRTFRyYW5zYWN0
aW9uIGNsYXNzLiBBbGxvd3MgU1FMVHJhbnNhY3Rpb24gdG8gbm90aWZ5IGludGVyZXN0ZWQKKyAg
ICAvLyBwYXJ0aWVzIHRoYXQgY2VydGFpbiB0aGluZ3MgaGF2ZSBoYXBwZW5lZCBpbiBhIHRyYW5z
YWN0aW9uLgorICAgIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oU1FMVHJhbnNhY3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBkaWRFeGVjdXRlU3RhdGVtZW50KFNRTFRyYW5zYWN0aW9uKik7CisgICAgICAgIGJv
b2wgZGlkRXhjZWVkUXVvdGEoU1FMVHJhbnNhY3Rpb24qKTsKKyAgICB9OworfQorCisjZW5kaWYg
Ly8gU1FMVHJhbnNhY3Rpb25DbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35150</attachid>
            <date>2009-08-19 15:32:23 -0700</date>
            <delta_ts>2009-08-21 12:04:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21533</size>
            <attacher name="Dumitru Daniliuc">dumi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzUyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDktMDgtMTggIER1bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGNsaWVudCB0byBTUUxUcmFuc2FjdGlvbi4gSW4gYWRkaXRpb24gdG8gYmVpbmcg
YSBwbGFjZSB0bworICAgICAgICBnZXQgbm90aWZpY2F0aW9ucyBhYm91dCBjZXJ0YWluIGV2ZW50
cyBpbiBhIHRyYW5zYWN0aW9uLCBpdCBpcworICAgICAgICBhbHNvIGFuIGFic3RyYWN0aW9uIGxh
eWVyIHRoYXQgYWxsb3dzIHVzIHRvIHBsdWcgaW4gZGlmZmVyZW50CisgICAgICAgIGltcGxlbWVu
dGF0aW9ucyBmb3IgZWFjaCBwb3J0IGZvciBob3cgdHJhbnNhY3Rpb25zIGludGVycmFjdCB3aXRo
CisgICAgICAgIHRoZSBtYWluIERCLiBGb3IgZXhhbXBsZSwgV2ViQ29yZSdzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24gd2lsbAorICAgICAgICBtYWtlIGRpcmVjdCBjYWxscyB0byBEYXRhYmFzZVRy
YWNrZXIncyBtZXRob2RzLiBBdCB0aGUgc2FtZSB0aW1lLAorICAgICAgICBDaHJvbWl1bSdzIGlt
cGxlbWVudGF0aW9uIHdpbGwgc2VuZCBJUENzIHRvIHRoZSBicm93c2VyIHByb2Nlc3MKKyAgICAg
ICAgd2hlbmV2ZXIgYSB0cmFuc2FjdGlvbiBuZWVkcyBzb21ldGhpbmcgZnJvbSB0aGUgbWFpbiBE
Qi4KKworICAgICAgICBBbGwgc3RvcmFnZSB0ZXN0cyBwYXNzLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzk2NworCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJv
OgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNl
cy5ia2w6CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6dHJhbnNhY3Rpb25DbGllbnQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogc3RvcmFn
ZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnRy
YW5zYWN0aW9uQ2xpZW50KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5k
Q29tbWl0KToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDogQWRk
ZWQuCisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oOiBBZGRlZC4KKwog
MjAwOS0wOC0xOSAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCAoYnVpbGQgZml4IGZvciBTa2lhKS4KSW5kZXg6IFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24g
NDc1MjYpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIw
LDYgKzIxMjAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5jcHAgXAogCVdlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5oIFwKIAlX
ZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwIFwKKwlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNh
Y3Rpb25DbGllbnQuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCBcCiAJV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwK
IAlXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiA0NzUyNikKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTc0LDYgKzI5NzQsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24u
Y3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmgnLAogICAgICAgICAg
ICAgJ3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oJywKKyAgICAgICAgICAgICdzdG9y
YWdlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb25DbGllbnQuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmNwcCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2suaCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ3NTI2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMjUwNCw2ICsyNTA0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0RBVEFCQVNFPTEpIHsKICAgICAgICAgc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmNw
cCBcCiAgICAgICAgIHN0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcCBcCiAgICAgICAgIHN0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb24uY3BwIFwKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVu
dC5jcHAgXAogICAgICAgICBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3Bw
IFwKQEAgLTI1MzIsNiArMjUzMyw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9ET01fU1RP
UkFHRT0xKSAKICAgICAgICAgc3RvcmFnZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmggXAogICAgICAg
ICBzdG9yYWdlL1NRTFN0YXRlbWVudC5oIFwKICAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlv
bi5oIFwKKyAgICAgICAgc3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNsaWVudC5oIFwKICAgICAgICAg
c3RvcmFnZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggXAogICAgICAgICBzdG9yYWdlL1N0
b3JhZ2VBcmVhLmggXAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCShyZXZpc2lvbiA0NzUyNikKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMu
YmtsCSh3b3JraW5nIGNvcHkpCkBAIC0xMDM5LDYgKzEwMzksOCBAQCBUaGlzIGZpbGUgY29udGFp
bnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIHN0b3JhZ2UvU1FMUmVzdWx0U2V0Um93
TGlzdC5jcHAKICAgICAgICAgc3RvcmFnZS9TUUxTdGF0ZW1lbnQuY3BwCiAgICAgICAgIHN0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb24uY3BwCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25DbGll
bnQuY3BwCisgICAgICAgIHN0b3JhZ2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKICAg
ICAgICAgc3RvcmFnZS9TdG9yYWdlLmNwcAogICAgICAgICBzdG9yYWdlL1N0b3JhZ2VBcmVhSW1w
bC5jcHAKICAgICAgICAgc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQ3NTI2KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA3NjgsNiAr
MzA3NjgsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2FjdGlvbkNsaWVudC5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxTUUxUcmFuc2Fj
dGlvbkNsaWVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdG9yYWdlXFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIg0KIAkJ
CQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiA0NzUyNikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODU5LDYgKzM4NTksOCBAQAogCQlC
MkZBM0UxODBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJGQTNEMzAwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmNwcCAqLzsgfTsKIAkJQjJGQTNFMTkwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMkZBM0QzMTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQu
aCAqLzsgfTsKIAkJQjUwRjVCODEwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUwRjVC
ODAwRTk2Q0Q5OTAwQUQ3MUE2IC8qIFdlYkNvcmVPYmpDRXh0cmFzLm1tICovOyBzZXR0aW5ncyA9
IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsK
KwkJQjUxQkY2RjAxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1MUJGNkVFMTAy
QzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi87IH07CisJCUI1MUJG
NkYxMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUxQkY2RUYxMDJDOUU1OTAwMDJD
MTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xpZW50LmggKi87IH07CiAJCUI1QTY4NDIyMEZGQUJFOTgw
MEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmls
ZVN5c3RlbS5oICovOyB9OwogCQlCNUE2ODQyNDBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmls
ZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNUE2ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi87IH07
CiAJCUI1QzExMjNCMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1QzEx
MjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsg
fTsKQEAgLTg3NjgsNiArODc3MCw4IEBACiAJCUIyRkEzRDMwMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1pvb21FdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNTVkdab29tRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMkZBM0Qz
MTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdab29tRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU1ZHWm9vbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUI1MEY1QjgwMEU5NkNEOTkwMEFENzFBNiAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVPYmpDRXh0cmFz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTFCRjZFRTEwMkM5RTU5MDAwMkMx
NUEgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCNTFCRjZFRjEwMkM5RTU5MDAwMkMxNUEgLyogU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMVHJhbnNhY3Rpb25DbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjEwRkZBQkU5ODAwRDI0
Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU1FMaXRlRmlsZVN5c3RlbS5oOyBwYXRoID0gc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjVBNjg0MjMwRkZBQkVBQTAwRDI0Njg5IC8qIFNR
TGl0ZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
U1FMaXRlRmlsZVN5c3RlbS5jcHA7IHBhdGggPSBzcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI1QzExMjM5MTAyQjZDNDYwMDA5NjU3OCAvKiBT
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTg3NSw2ICs5ODc5LDggQEAKIAkJMUFFODJFQzkwQ0FBRTE3NzAwMjIz
N0FFIC8qIHN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUI1MUJGNkVFMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5j
cHAgKi8sCisJCQkJQjUxQkY2RUYxMDJDOUU1OTAwMDJDMTVBIC8qIFNRTFRyYW5zYWN0aW9uQ2xp
ZW50LmggKi8sCiAJCQkJQjVDMTEyMzkxMDJCNkM0NjAwMDk2NTc4IC8qIFNRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwICovLAogCQkJCUI1QzExMjNBMTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8sCiAJCQkJNTE0MTg1RUQwQ0Q2NUYwNDAwNzYzQzk5
IC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCAqLywKQEAgLTE3MzE2LDYgKzE3MzIyLDcgQEAK
IAkJCQlCNUMxMTIzQzEwMkI2QzQ2MDAwOTY1NzggLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDhCNjE1MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tp
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGQTkzMDgxMDMzMzE5MzAwN0IyNUQxIC8qIFJlbmRl
ck92ZXJmbG93LmggaW4gSGVhZGVycyAqLywKKwkJCQlCNTFCRjZGMTEwMkM5RTU5MDAwMkMxNUEg
LyogU1FMVHJhbnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTkzODIsNiArMTkz
ODksNyBAQAogCQkJCTkzOTIyNjJEMTAzMjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVt
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOTIyNjJGMTAzMjEwODQwMDZFN0Q1
RCAvKiBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1QzExMjNC
MTAyQjZDNDYwMDA5NjU3OCAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUI1MUJGNkYwMTAyQzlFNTkwMDAyQzE1QSAvKiBTUUxUcmFuc2FjdGlvbkNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkocmV2aXNpb24g
NDc1MjYpCisrKyBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNRTFJlc3VsdFNldC5oIgorI2luY2x1ZGUg
IlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjZW5kaWYKQEAgLTU4OSw2ICs1
OTAsMTEgQEAgVmVjdG9yPFN0cmluZz4gRGF0YWJhc2U6OnBlcmZvcm1HZXRUYWJsZQogICAgIHJl
dHVybiB0YWJsZU5hbWVzOwogfQogCitTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0YWJhc2U6OnRy
YW5zYWN0aW9uQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC0+ZGF0YWJh
c2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25DbGllbnQoKTsKK30KKwogU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvciogRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdAogewogICAg
IHJldHVybiBtX2RvY3VtZW50LT5kYXRhYmFzZVRocmVhZCgpLT50cmFuc2FjdGlvbkNvb3JkaW5h
dG9yKCk7CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuaAkocmV2aXNpb24gNDc1MjYpCisrKyBXZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNiBAQAogCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTU3LDYgKzU2LDcgQEAgY2xh
c3MgRGF0YWJhc2VUaHJlYWQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNRTFJlc3VsdFNldDsK
IGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s7CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVu
dDsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiBjbGFzcyBTUUxUcmFuc2FjdGlv
bkVycm9yQ2FsbGJhY2s7CiBjbGFzcyBTUUxWYWx1ZTsKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwZXJmb3JtR2V0VGFibGVOYW1lcygpOwogCisgICAg
U1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KCkgY29uc3Q7CiAgICAgU1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0Owog
CiBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCShyZXZpc2lvbiA0
NzUyNikKKysrIFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDEyICszNSwxNCBAQAogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VUYXNrLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNRTFRyYW5z
YWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERhdGFiYXNlVGhyZWFkOjpEYXRhYmFzZVRocmVhZCgp
CiAgICAgOiBtX3RocmVhZElEKDApCisgICAgLCBtX3RyYW5zYWN0aW9uQ2xpZW50KG5ldyBTUUxU
cmFuc2FjdGlvbkNsaWVudCgpKQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKG5ldyBT
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkpCiB7CiAgICAgbV9zZWxmUmVmID0gdGhpczsKSW5k
ZXg6IFdlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCShyZXZpc2lvbiA0NzUyNikKKysrIFdlYkNvcmUv
c3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRGF0YWJhc2VUYXNr
OwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBTUUxUcmFuc2FjdGlvbkNsaWVudDsKIGNsYXNzIFNR
TFRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNzIERhdGFiYXNlVGhyZWFkIDogcHVibGlj
IFRocmVhZFNhZmVTaGFyZWQ8RGF0YWJhc2VUaHJlYWQ+IHsKQEAgLTYyLDYgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2UqKTsKICAgICBUaHJl
YWRJZGVudGlmaWVyIGdldFRocmVhZElEKCkgeyByZXR1cm4gbV90aHJlYWRJRDsgfQogCisgICAg
U1FMVHJhbnNhY3Rpb25DbGllbnQqIHRyYW5zYWN0aW9uQ2xpZW50KCkgeyByZXR1cm4gbV90cmFu
c2FjdGlvbkNsaWVudC5nZXQoKTsgfQogICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Z2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTgwLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlPiA+IERhdGFiYXNlU2V0OwogICAgIERhdGFiYXNl
U2V0IG1fb3BlbkRhdGFiYXNlU2V0OwogCisgICAgT3duUHRyPFNRTFRyYW5zYWN0aW9uQ2xpZW50
PiBtX3RyYW5zYWN0aW9uQ2xpZW50OwogICAgIE93blB0cjxTUUxUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiB9OwogCkluZGV4OiBXZWJDb3JlL3N0b3Jh
Z2UvU1FMVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDQ3NTI2KQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRy
YW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDkgQEAKICNpbmNsdWRl
ICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQXV0aG9yaXplci5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlRGV0YWlscy5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlICJPcmlnaW5RdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgpAQCAtNTAsNiArNDgsNyBAQAogI2luY2x1ZGUgIlNRTFN0YXRlbWVudC5oIgogI2luY2x1
ZGUgIlNRTFN0YXRlbWVudENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5oIgorI2luY2x1ZGUgIlNRTFRyYW5zYWN0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCiAKQEAg
LTM1MCwxMCArMzQ5LDcgQEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVu
dAogICAgICAgICAgICAgLy8gRmxhZyB0aGlzIHRyYW5zYWN0aW9uIGFzIGhhdmluZyBjaGFuZ2Vk
IHRoZSBkYXRhYmFzZSBmb3IgbGF0ZXIgZGVsZWdhdGUgbm90aWZpY2F0aW9uCiAgICAgICAgICAg
ICBtX21vZGlmaWVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgLy8gQWxzbyBkaXJ0eSB0
aGUgc2l6ZSBvZiB0aGlzIGRhdGFiYXNlIGZpbGUgZm9yIGNhbGN1bGF0aW5nIHF1b3RhIHVzYWdl
Ci0gICAgICAgICAgICBPcmlnaW5RdW90YU1hbmFnZXImIG1hbmFnZXIoRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkub3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwotICAgICAgICAgICAgTG9ja2VyPE9y
aWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFnZXIpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtYW5hZ2VyLm1hcmtEYXRhYmFzZShtX2RhdGFiYXNlLmdldCgpKTsKKyAgICAgICAgICAg
IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZEV4ZWN1dGVTdGF0ZW1lbnQodGhp
cyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9jdXJyZW50U3RhdGVt
ZW50LT5oYXNTdGF0ZW1lbnRDYWxsYmFjaygpKSB7CkBAIC00MTQsMjAgKzQxMCw5IEBAIHZvaWQg
U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXMKIHsKICAgICBBU1NFUlQobV9jdXJy
ZW50U3RhdGVtZW50KTsKICAgICBBU1NFUlQoIW1fc2hvdWxkUmV0cnlDdXJyZW50U3RhdGVtZW50
KTsKLSAgICAKLSAgICBQYWdlKiBwYWdlID0gbV9kYXRhYmFzZS0+ZG9jdW1lbnQoKS0+cGFnZSgp
OwotICAgIEFTU0VSVChwYWdlKTsKLSAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbiA9IG1fZGF0YWJhc2UtPnNlY3VyaXR5T3JpZ2luQ29weSgpOwotICAgIAotICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBjdXJyZW50UXVvdGEgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5x
dW90YUZvck9yaWdpbihvcmlnaW4uZ2V0KCkpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+ZXhjZWVkZWREYXRhYmFzZVF1b3RhKG1fZGF0YWJhc2UtPmRvY3VtZW50KCktPmZyYW1lKCks
IG1fZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25n
IG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3Jp
Z2luLmdldCgpKTsKLSAgICAKLSAgICAvLyBJZiB0aGUgbmV3IHF1b3RhIGVuZGVkIHVwIGJlaW5n
IGxhcmdlciB0aGFuIHRoZSBvbGQgcXVvdGEsIHdlIHdpbGwgcmV0cnkgdGhlIHN0YXRlbWVudC4K
LSAgICBpZiAobmV3UXVvdGEgPiBjdXJyZW50UXVvdGEpCi0gICAgICAgIG1fc2hvdWxkUmV0cnlD
dXJyZW50U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICAgICAgCisKKyAgICBtX3Nob3VsZFJldHJ5Q3Vy
cmVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZEV4Y2Vl
ZFF1b3RhKHRoaXMpOworCiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6cnVuU3Rh
dGVtZW50czsKICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgcnVuU3RhdGVtZW50cyBm
b3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJh
bnNhY3Rpb25TdGVwKHRoaXMpOwpAQCAtNDYyLDggKzQ0Nyw4IEBAIHZvaWQgU1FMVHJhbnNhY3Rp
b246OnBvc3RmbGlnaHRBbmRDb21taXQKICAgICAKICAgICAvLyBUaGUgY29tbWl0IHdhcyBzdWNj
ZXNzZnVsLCBub3RpZnkgdGhlIGRlbGVnYXRlcyBpZiB0aGUgdHJhbnNhY3Rpb24gbW9kaWZpZWQg
dGhpcyBkYXRhYmFzZQogICAgIGlmIChtX21vZGlmaWVkRGF0YWJhc2UpCi0gICAgICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKG1fZGF0
YWJhc2UtPm1fc2VjdXJpdHlPcmlnaW4uZ2V0KCksIG1fZGF0YWJhc2UtPm1fbmFtZSk7Ci0gICAg
CisgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCktPmRpZENvbW1pdFRyYW5z
YWN0aW9uKHRoaXMpOworCiAgICAgLy8gTm93IHJlbGVhc2Ugb3VyIHVubmVlZGVkIGNhbGxiYWNr
cywgdG8gYnJlYWsgcmVmZXJlbmNlIGN5Y2xlcy4KICAgICBtX2NhbGxiYWNrID0gMDsKICAgICBt
X2Vycm9yQ2FsbGJhY2sgPSAwOwpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
bGllbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkNsaWVudC5oIgorCisjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRocmVh
ZC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiT3JpZ2luUXVvdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNRTFRyYW5zYWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBT
UUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oU1FMVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rp
b24tPmRhdGFiYXNlKCktPmRvY3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElE
KCkpOworICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOwor
ICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFu
Z2VkKAorICAgICAgICBkYXRhYmFzZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0
YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1FMVHJhbnNhY3Rpb25DbGll
bnQ6OmRpZEV4ZWN1dGVTdGF0ZW1lbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorewor
ICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmRv
Y3VtZW50KCktPmRhdGFiYXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOworICAgIE9yaWdpblF1
b3RhTWFuYWdlciYgbWFuYWdlcihEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5vcmlnaW5RdW90
YU1hbmFnZXIoKSk7CisgICAgTG9ja2VyPE9yaWdpblF1b3RhTWFuYWdlcj4gbG9ja2VyKG1hbmFn
ZXIpOworICAgIG1hbmFnZXIubWFya0RhdGFiYXNlKHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpKTsK
K30KKworYm9vbCBTUUxUcmFuc2FjdGlvbkNsaWVudDo6ZGlkRXhjZWVkUXVvdGEoU1FMVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
RGF0YWJhc2UqIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CisgICAgUGFnZSog
cGFnZSA9IGRhdGFiYXNlLT5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOwor
CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBkYXRhYmFzZS0+c2VjdXJpdHlP
cmlnaW5Db3B5KCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAg
ICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4Y2VlZGVkRGF0YWJhc2VRdW90YShkYXRhYmFz
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgZGF0YWJhc2UtPnN0cmluZ0lkZW50aWZpZXIoKSk7Cisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
KCkucXVvdGFGb3JPcmlnaW4ob3JpZ2luLmdldCgpKTsKKyAgICByZXR1cm4gKG5ld1F1b3RhID4g
Y3VycmVudFF1b3RhKTsKK30KKworfQpJbmRleDogV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0
aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdG9yYWdlL1NRTFRyYW5zYWN0aW9u
Q2xpZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25D
bGllbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU1FMVHJhbnNhY3Rp
b25DbGllbnRfaAorI2RlZmluZSBTUUxUcmFuc2FjdGlvbkNsaWVudF9oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworICAgIGNsYXNzIFNRTFRyYW5zYWN0aW9uOworCisgICAgLy8gQSBjbGllbnQg
dG8gdGhlIFNRTFRyYW5zYWN0aW9uIGNsYXNzLiBBbGxvd3MgU1FMVHJhbnNhY3Rpb24gdG8gbm90
aWZ5IGludGVyZXN0ZWQKKyAgICAvLyBwYXJ0aWVzIHRoYXQgY2VydGFpbiB0aGluZ3MgaGF2ZSBo
YXBwZW5lZCBpbiBhIHRyYW5zYWN0aW9uLgorICAgIGNsYXNzIFNRTFRyYW5zYWN0aW9uQ2xpZW50
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oU1FMVHJh
bnNhY3Rpb24qKTsKKyAgICAgICAgdm9pZCBkaWRFeGVjdXRlU3RhdGVtZW50KFNRTFRyYW5zYWN0
aW9uKik7CisgICAgICAgIGJvb2wgZGlkRXhjZWVkUXVvdGEoU1FMVHJhbnNhY3Rpb24qKTsKKyAg
ICB9OworfQorCisjZW5kaWYgLy8gU1FMVHJhbnNhY3Rpb25DbGllbnRfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>