<?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>88467</bug_id>
          
          <creation_ts>2012-06-06 16:17:03 -0700</creation_ts>
          <short_desc>IndexedDB: Snapshot metadata in front end to avoid IPC round-trips</short_desc>
          <delta_ts>2012-06-22 15:10:24 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88678</dependson>
    
    <dependson>89243</dependson>
          <blocked>86127</blocked>
    
    <blocked>89377</blocked>
    
    <blocked>89495</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>michaeln</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642930</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-06 16:17:03 -0700</bug_when>
    <thetext>IndexedDB: Snapshot metadata in front end to avoid IPC round-trips</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642931</commentid>
    <comment_count>1</comment_count>
      <attachid>146139</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-06 16:17:43 -0700</bug_when>
    <thetext>Created attachment 146139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642933</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-06 16:23:19 -0700</bug_when>
    <thetext>Alec, David - please take an initial look. This needs MANY additional tests, but passes with existing layout tests (modulo a few tweaks). This implements:

* Metadata is snapshotted on connection and after version-change transactions finish. All the little calls to name(), keyPath(), autoIncrement() and friends are now done w/o IPC. (Eventually this should move into the IDBDatabase creation code itself.)
* Metadata for object stores is reverted after an aborted version change transaction.
* Calls to store and index methods fail if the objects have been deleted.

There&apos;s a corresponding Chromium change for the IPC plumbing to route the WebIDBDatabase::metaData() call around.

Obviously, this adds a lot of code, in the hope that more code can then be removed/simplified. That said, it&apos;s still not filling my heart with glee, so needs refinement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643841</commentid>
    <comment_count>3</comment_count>
      <attachid>146368</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 13:23:01 -0700</bug_when>
    <thetext>Created attachment 146368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643848</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 13:33:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=146368) [details]
&gt; Patch

Latest patch adds two layout tests, and adds a few missing &quot;if deleted throw exception&quot; cases caught by the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643930</commentid>
    <comment_count>5</comment_count>
      <attachid>146368</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-07 14:39:46 -0700</bug_when>
    <thetext>Comment on attachment 146368
Patch

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

Do you know what you didn&apos;t like about this patch?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:154
&gt; +        m_versionChangeTransaction-&gt;objectStoreDeleted(name);

Not checking for ec was an error in our existing code and a gap in test coverage, right?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.h:108
&gt; +    IDBDatabaseMetaData m_metaData;

How does aborting a transaction work?  Why doesn&apos;t IDBDatabase need a m_previousMetaData member like IDBObjectStore?

&gt; Source/WebCore/Modules/indexeddb/IDBIndex.cpp:64
&gt; +    if (m_deleted) {

Before this change what happens if we do

var index = os.index(&quot;myindex&quot;)
os.deleteIndex(&quot;myindex&quot;)
var request = index.openCursor();

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:353
&gt; +        objectStoreMetaData.indexes.remove(name);

Commenting these 4 lines doesn&apos;t cause any tests to fail. We still need a test that ensures a deleted index doesn&apos;t show up in transaction.objectStore(&quot;mystore&quot;).indexNames?

&gt; Source/WebKit/chromium/public/WebIDBMetaData.h:35
&gt; +template&lt;typename T, size_t inlineCapacity&gt; class Vector;

Could you include wtf/Forward.h in place of these?

&gt; Source/WebKit/chromium/public/WebIDBMetaData.h:93
&gt; +    WebPrivateOwnPtr&lt;WebCore::IDBObjectStoreMetaData&gt; m_private;

I&apos;m assuming you copied the WEBKIT_IMPLEMENTATION / WebPrivateOwnPtr idiom from surrounding files?  I don&apos;t know much about it.

&gt; LayoutTests/storage/indexeddb/resources/transaction-basics.js:-51
&gt; -    evalAndLog(&quot;store.deleteIndex(&apos;indexFail&apos;)&quot;);

This used to just succeed?  Script could still access deleted objectstores?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643959</commentid>
    <comment_count>6</comment_count>
      <attachid>146368</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-07 15:08:05 -0700</bug_when>
    <thetext>Comment on attachment 146368
Patch

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

&gt; Source/WebCore/ChangeLog:1
&gt; +2012-06-07  Joshua Bell  &lt;jsbell@chromium.org&gt;

first pass through is mostly &quot;more constness&quot; - comments below. Also, we had talked some about using the database-id for the store/index/etc though poking through the code I can see that this can be hard to get to at times..

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:68
&gt; +    m_metaData = m_backend-&gt;metaData();

the extra camelcase on &quot;Data&quot; rubs me the wrong way here but that&apos;s just a personal preference :) &quot;metadata&quot; is fine IMO

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.h:91
&gt; +    IDBDatabaseMetaData&amp; metaData() { return m_metaData; }

Can this be returned as const, and can the method be const too?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:137
&gt; +IDBDatabaseMetaData IDBDatabaseBackendImpl::metaData() const

Seems like a lot of work to construct the metadata each time, plus that means this can&apos;t return &apos;const IDBDatabaseMetadata&amp;&apos; like IDBDatabase.h does...

&gt; Source/WebCore/Modules/indexeddb/IDBIndex.h:87
&gt; +    IDBIndex(IDBIndexMetaData, PassRefPtr&lt;IDBIndexBackendInterface&gt;, IDBObjectStore*, IDBTransaction*);

in the constructors, pass these as const IDBIndexMetaData&amp; etc

&gt; Source/WebCore/Modules/indexeddb/IDBMetaData.h:49
&gt; +    String name;

more const lovin&apos; - seems like most non-array member vars can be const as well? Looks like that will make it have trouble getting through the proxies though... hrm..

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:350
&gt; +        IDBDatabaseMetaData&amp; databaseMetaData = m_transaction-&gt;db()-&gt;metaData();

I&apos;d put this logic in IDBDatabase - here you&apos;re doing direct manipulation of a datstructure that&apos;s stored inside IDBDatabase (which again if there were more const-ness this would be harder to do)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644072</commentid>
    <comment_count>7</comment_count>
      <attachid>146368</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 16:51:07 -0700</bug_when>
    <thetext>Comment on attachment 146368
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:68
&gt;&gt; +    m_metaData = m_backend-&gt;metaData();
&gt; 
&gt; the extra camelcase on &quot;Data&quot; rubs me the wrong way here but that&apos;s just a personal preference :) &quot;metadata&quot; is fine IMO

It looks like there&apos;s precedent for &quot;metadata&quot; as a single word in WebKit. I&apos;ll follow up and remove unnecessary CamelCasing.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:154
&gt;&gt; +        m_versionChangeTransaction-&gt;objectStoreDeleted(name);
&gt; 
&gt; Not checking for ec was an error in our existing code and a gap in test coverage, right?

Correct. (But harmless, I believe.)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.h:91
&gt;&gt; +    IDBDatabaseMetaData&amp; metaData() { return m_metaData; }
&gt; 
&gt; Can this be returned as const, and can the method be const too?

Yes. I had it non-const when IDBObjectStore had to reach in and mutate it, but that&apos;s no longer necessary (see discussion below)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.h:108
&gt;&gt; +    IDBDatabaseMetaData m_metaData;
&gt; 
&gt; How does aborting a transaction work?  Why doesn&apos;t IDBDatabase need a m_previousMetaData member like IDBObjectStore?

In IDBDatabase&apos;s clearVersionChangeTransaction it fetches a fresh copy of the metadata from the back end, which is rolled back by that point.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:137
&gt;&gt; +IDBDatabaseMetaData IDBDatabaseBackendImpl::metaData() const
&gt; 
&gt; Seems like a lot of work to construct the metadata each time, plus that means this can&apos;t return &apos;const IDBDatabaseMetadata&amp;&apos; like IDBDatabase.h does...

True, but it is called lazily - only when an updated copy is needed.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBIndex.cpp:64
&gt;&gt; +    if (m_deleted) {
&gt; 
&gt; Before this change what happens if we do
&gt; 
&gt; var index = os.index(&quot;myindex&quot;)
&gt; os.deleteIndex(&quot;myindex&quot;)
&gt; var request = index.openCursor();

No exception. A success event is fired at the request, with a null result (i.e. no cursor).

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBIndex.h:87
&gt;&gt; +    IDBIndex(IDBIndexMetaData, PassRefPtr&lt;IDBIndexBackendInterface&gt;, IDBObjectStore*, IDBTransaction*);
&gt; 
&gt; in the constructors, pass these as const IDBIndexMetaData&amp; etc

Will do.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBMetaData.h:49
&gt;&gt; +    String name;
&gt; 
&gt; more const lovin&apos; - seems like most non-array member vars can be const as well? Looks like that will make it have trouble getting through the proxies though... hrm..

I&apos;ll poke at it some more. If the default constructor can be eliminated then this is possible.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:61
&gt;  String IDBObjectStore::name() const

FYI, I&apos;m going to make these inline like the IDBDatabase and IDBIndex counterparts.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:67
&gt;  PassRefPtr&lt;IDBAny&gt; IDBObjectStore::keyPath() const

ditto

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:89
&gt;  bool IDBObjectStore::autoIncrement() const

ditto

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:292
&gt; +    // Need to update canonical metadata in IDBDatabase so future copies of this store have the new index metadata.

These lines can go away (see discussion below)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:350
&gt;&gt; +        IDBDatabaseMetaData&amp; databaseMetaData = m_transaction-&gt;db()-&gt;metaData();
&gt; 
&gt; I&apos;d put this logic in IDBDatabase - here you&apos;re doing direct manipulation of a datstructure that&apos;s stored inside IDBDatabase (which again if there were more const-ness this would be harder to do)

Per discussion below, this can go away.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:353
&gt;&gt; +        objectStoreMetaData.indexes.remove(name);
&gt; 
&gt; Commenting these 4 lines doesn&apos;t cause any tests to fail. We still need a test that ensures a deleted index doesn&apos;t show up in transaction.objectStore(&quot;mystore&quot;).indexNames?

Good point. Thinking through it, those four lines are unnecessary (which is good, as they&apos;re ugly!):
* Once you&apos;ve called transaction.objectStore(&quot;mystore&quot;) the first time the IDBObjectStore is saved (in m_objectStoreMap) and that object is re-used for the lifetime of the IDBTransaction. 
* Once the version change transaction is finished the IDBDatabase gets updated from the backing store.
Therefore, there is no way during the lifetime of the transaction to access the IDBDatabase&apos;s copy of the object store metadata again and see it be out-of-sync.

&gt;&gt; Source/WebKit/chromium/public/WebIDBMetaData.h:35
&gt;&gt; +template&lt;typename T, size_t inlineCapacity&gt; class Vector;
&gt; 
&gt; Could you include wtf/Forward.h in place of these?

That should be unnecessary and can be removed, thanks.

&gt;&gt; Source/WebKit/chromium/public/WebIDBMetaData.h:93
&gt;&gt; +    WebPrivateOwnPtr&lt;WebCore::IDBObjectStoreMetaData&gt; m_private;
&gt; 
&gt; I&apos;m assuming you copied the WEBKIT_IMPLEMENTATION / WebPrivateOwnPtr idiom from surrounding files?  I don&apos;t know much about it.

Yeah, it&apos;s a common pattern. It was used in WebIDBKeyPath as well.

&gt;&gt; LayoutTests/storage/indexeddb/resources/transaction-basics.js:-51
&gt;&gt; -    evalAndLog(&quot;store.deleteIndex(&apos;indexFail&apos;)&quot;);
&gt; 
&gt; This used to just succeed?  Script could still access deleted objectstores?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644086</commentid>
    <comment_count>8</comment_count>
      <attachid>146420</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 17:01:32 -0700</bug_when>
    <thetext>Created attachment 146420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644087</commentid>
    <comment_count>9</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-07 17:02:09 -0700</bug_when>
    <thetext>New patch addresses feedback except for de-camel-casing &quot;MetaData&quot;. I&apos;ll upload that tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644090</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 17:04:20 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644873</commentid>
    <comment_count>11</comment_count>
      <attachid>146616</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-08 11:28:46 -0700</bug_when>
    <thetext>Created attachment 146616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644899</commentid>
    <comment_count>12</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-08 11:42:58 -0700</bug_when>
    <thetext>New patch removes camel casing.

This will need to be split up for landing to handle the chromium-side changes which are at: http://codereview.chromium.org/10533057/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644913</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-08 11:57:51 -0700</bug_when>
    <thetext>Chromium WebKit API impl is http://webkit.org/b/88678 which needs to land first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647142</commentid>
    <comment_count>14</comment_count>
      <attachid>147127</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-12 11:50:18 -0700</bug_when>
    <thetext>Created attachment 147127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647144</commentid>
    <comment_count>15</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-12 11:51:18 -0700</bug_when>
    <thetext>Patch rebased on top of https://bugs.webkit.org/show_bug.cgi?id=88678</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648229</commentid>
    <comment_count>16</comment_count>
      <attachid>147359</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-13 10:32:27 -0700</bug_when>
    <thetext>Created attachment 147359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650456</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-15 13:30:45 -0700</bug_when>
    <thetext>I factored out the &quot;deleted objects should throw&quot; part of this patch into http://webkit.org/b/89243 - that will need to land first and reduce the size of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650616</commentid>
    <comment_count>18</comment_count>
      <attachid>147921</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-15 16:20:06 -0700</bug_when>
    <thetext>Created attachment 147921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650618</commentid>
    <comment_count>19</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-15 16:22:29 -0700</bug_when>
    <thetext>Rebased on top of http://trac.webkit.org/changeset/120504 - still waiting on https://bugs.webkit.org/show_bug.cgi?id=88678 to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653002</commentid>
    <comment_count>20</comment_count>
      <attachid>148463</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 17:01:42 -0700</bug_when>
    <thetext>Created attachment 148463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653003</commentid>
    <comment_count>21</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 17:02:51 -0700</bug_when>
    <thetext>Rebased on top of http://trac.webkit.org/changeset/120753

Needs Chromium side to land, and still needs the xcode project addition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654014</commentid>
    <comment_count>22</comment_count>
      <attachid>148681</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-20 16:55:30 -0700</bug_when>
    <thetext>Created attachment 148681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654024</commentid>
    <comment_count>23</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-20 17:08:57 -0700</bug_when>
    <thetext>Okay, ready for actual feedback. Some things I&apos;m not sure about:

Should we have IDBDatabaseMetadata, IDBObjectStoreMetadata and IDBIndexMetadata, or instead have IDBMetadata, IDBMetadata::ObjectStore and IDBMetadata::Index?

Naming of the m_previousMetadata member of IDBObjectStore, which is a hideous abomination required by the spec only in the case of version change transaction abort. Anything more evocative?

I noticed two things while polishing this patch which I&apos;ll check before landing.

* I believe the call to m_metadata = m_backend-&gt;metadata(); in transactionCreated() is superfluous and can be removed.

* I believe there is a missing case: a pre-existing object store that has an index added/removed will not be reset per spec. I&apos;ll add a test to verify. If needed, it just needs IDBTransaction::objectStore() to add the store to the potential change set if it&apos;s a version change transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654047</commentid>
    <comment_count>24</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-20 17:31:39 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; * I believe the call to m_metadata = m_backend-&gt;metadata(); in transactionCreated() is superfluous and can be removed.

Wrong, and covered by tests. :) This is to capture the change to the version number made by the setVersion() call. When the upgradeneeded changes land this can probably be removed.
 
&gt; * I believe there is a missing case: a pre-existing object store that has an index added/removed will not be reset per spec. 

Wrong, and covered by tests. :) However, I can optimize the implementation slightly. New patch incoming, just scopes population of the m_objectStoreCleanupSet to version change transactions and clears the set when it&apos;s no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654052</commentid>
    <comment_count>25</comment_count>
      <attachid>148690</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-20 17:32:47 -0700</bug_when>
    <thetext>Created attachment 148690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654202</commentid>
    <comment_count>26</comment_count>
      <attachid>148690</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-20 20:49:23 -0700</bug_when>
    <thetext>Comment on attachment 148690
Patch

LGTM

I prefer the current IDBObjectStoreMetadata-style vs IDBMetadata::ObjectStore and m_previousMetadata is fine.

Did you consciously reuse the test from your public-webapps message?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654601</commentid>
    <comment_count>27</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-21 09:34:47 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; 
&gt; Did you consciously reuse the test from your public-webapps message?

Yep! I added index counts, but otherwise it seemed like a good idea. It also subsumes the repro in in https://bugs.webkit.org/show_bug.cgi?id=86127 which I think was a direct copy/paste of that message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654605</commentid>
    <comment_count>28</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-21 09:36:38 -0700</bug_when>
    <thetext>fishd@ - review of the Chromium public WebKit API changes? (trivial additions)

tony@ - review of the rest?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654608</commentid>
    <comment_count>29</comment_count>
      <attachid>148690</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-06-21 09:40:26 -0700</bug_when>
    <thetext>Comment on attachment 148690
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.h:61
&gt; +    const String&amp; name() const { return m_metadata.name; }

I dug around a little bit with this.. for background, I suggested last week to use a lot more use of &apos;const&apos; and refs as a cheap way to avoid copying. 

But after seeing this, I voiced concern to jsbell yesterday that this could be problematic in case m_metadata goes away or gets overwritten. (or reset...) I think whats here is probably generally safe, but only because of the way it&apos;s currently used, (for example, the bindings call into this looks safe) but that could change. I think this is a valid enough reason to warrent dropping the &apos;&amp;&apos; but of course keeping the const, especially given that names and versions tend to be short.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.h:100
&gt; +    void resetMetadata() { m_metadata = m_previousMetadata; }

I think the only thing I find odd about m_previousMetadata is that it&apos;s the first time that the IDBObjectStore maintains any kind of explicit before/after transaction state. It feels like something that belongs in IDBTransaction itself. 

I wonder, since you&apos;re already maintaining an IDBObjectStoreSet, and since IDBTransaction is already initiating the &apos;resetMetadata&apos;, if this should just be a mapping from IDBObjectStore-&gt;[previous]IDBObjectStoreMetadata inside the transaction, and then the transaction is the one that hands off the old metadata.

Otherwise, looks good. I too prefer the IDBObjectStoreMetadata name over IDBObjectStore::Metadata, if only to be consistent with things like IDBObjectStore[BackendImpl] and IDBObjectStore[BackingStore]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654609</commentid>
    <comment_count>30</comment_count>
      <attachid>148690</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-21 09:41:56 -0700</bug_when>
    <thetext>Comment on attachment 148690
Patch

Thanks, alec. I agree; I&apos;ll take care of those and re-up the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654690</commentid>
    <comment_count>31</comment_count>
      <attachid>148838</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-21 10:53:08 -0700</bug_when>
    <thetext>Created attachment 148838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654695</commentid>
    <comment_count>32</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-21 10:54:32 -0700</bug_when>
    <thetext>alec&apos;s feedback incorporated. 

fishd@, tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655626</commentid>
    <comment_count>33</comment_count>
      <attachid>148838</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-06-22 11:16:59 -0700</bug_when>
    <thetext>Comment on attachment 148838
Patch

LGTM for WebKit API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655743</commentid>
    <comment_count>34</comment_count>
      <attachid>148838</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-22 13:48:12 -0700</bug_when>
    <thetext>Comment on attachment 148838
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBMetadata.h:87
&gt; +#endif // IDBTracing_h

Nit: IDBMetadata_h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655745</commentid>
    <comment_count>35</comment_count>
      <attachid>149096</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-22 13:51:33 -0700</bug_when>
    <thetext>Created attachment 149096
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655817</commentid>
    <comment_count>36</comment_count>
      <attachid>149096</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 15:09:47 -0700</bug_when>
    <thetext>Comment on attachment 149096
Patch for landing

Clearing flags on attachment: 149096

Committed r121059: &lt;http://trac.webkit.org/changeset/121059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655819</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 15:10:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146139</attachid>
            <date>2012-06-06 16:17:43 -0700</date>
            <delta_ts>2012-06-07 13:22:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120606161742.patch</filename>
            <type>text/plain</type>
            <size>66331</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFkYWYwZTFmNGRjZmIx
NDI5Zjk3OTI5N2UxYjhkYjIxYTQ1Mzg5Mi4uZTdlMGJlZWZmNWZlOGU4ODBmNDg3MTUxNzM4Y2M4
OTgyMGY2MzEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA2LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
KE9PUFMhKQorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsZWFyVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9iamVj
dFN0b3JlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjp2ZXJzaW9uKToKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjptZXRhRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjptZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkluZGV4OjptYXJrRGVsZXRlZCk6CisgICAgICAgIChJREJJbmRleCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhRGF0YSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmg6
CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJNZXRhRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YTo6SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAg
ICAgIChJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YURhdGE6OklEQk9iamVjdFN0b3JlTWV0YURhdGEpOgorICAgICAgICAoSURCT2JqZWN0
U3RvcmVNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhOjpJREJJ
bmRleE1ldGFEYXRhKToKKyAgICAgICAgKElEQkluZGV4TWV0YURhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om1hcmtE
ZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpyZXNldE1ldGFEYXRh
KToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6b25BYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjppc1ZlcnNp
b25DaGFuZ2UpOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKwogMjAxMi0wNi0wNiAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1Z0BnbWFp
bC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogaGVscC9zZXR0aW5ncyBzY3JlZW4gZG9l
cyBub3Qgb3ZlcmxheSBjb25zb2xlIGluIHNwbGl0IHNjcmVlbiBtb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM2Zjk2MDMyNWVlNDU4ZDYwOGIxNGJjZGVhODdmODBiZjJlMDViMTYu
LjM0NDAxOTU0NTEyYWM1YTU0YTdmNzk3YmFjNmJiODE3ODZlOGJhNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDYtMDYgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFk
YXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMgcm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAq
IHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFz
ZTo6bWV0YURhdGEpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRhRGF0YS5oOiBBZGRlZC4K
KyAgICAgICAgKFdURik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYklEQk9iamVjdFN0
b3JlTWV0YURhdGEpOgorICAgICAgICAoV2ViSURCSW5kZXhNZXRhRGF0YSk6CisgICAgICAgICog
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRGF0
YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bWV0YURhdGEpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
TWV0YURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkRhdGFiYXNlTWV0YURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlTWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp+V2ViSURCRGF0YWJhc2VNZXRhRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YURhdGE6Om5hbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp2ZXJzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhRGF0YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpX
ZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmVNZXRhRGF0YTo6fldlYklEQk9iamVjdFN0b3JlTWV0YURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6a2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlTWV0YURhdGE6OmF1dG9JbmNyZW1lbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjppbmRleGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJREJJ
bmRleE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6fldl
YklEQkluZGV4TWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRh
OjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6a2V5UGF0aCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YURhdGE6OnVuaXF1ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkluZGV4TWV0YURhdGE6Om11bHRpRW50cnkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJJbmRleE1ldGFEYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFE
YXRhJik6CisKIDIwMTItMDYtMDYgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJvbGwgQ2hyb21pdW0gREVQUyBmcm9tIHIxNDA3MDAgdG8gcjE0MDcxMS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApp
bmRleCBlMWY0NGNkNTA2MGE1YzU4MDFjZGEwZjRlZjkyYTUwYTAyY2U3MjYyLi45YjdkYjZhNDBh
MGI1MTExN2ZlNzFlNDE0NGFjYjM4YThjYTg4MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC02NSw2ICs2NSw3IEBAIElEQkRh
dGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9i
amVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVt
ZW50KCk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bDo6Y3JlYXRlKHRoaXMpOworICAgIG1fbWV0YURhdGEgPSBtX2JhY2tlbmQtPm1ldGFEYXRhKCk7
CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQpAQCAtNzcsMTIgKzc4LDIzIEBAIHZv
aWQgSURCRGF0YWJhc2U6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bik7CiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAgICBt
X21ldGFEYXRhID0gbV9iYWNrZW5kLT5tZXRhRGF0YSgpOwogfQogCiB2b2lkIElEQkRhdGFiYXNl
OjpjbGVhclZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24pCiB7CiAgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbiwgbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
ID0gMDsKKyAgICBtX21ldGFEYXRhID0gbV9iYWNrZW5kLT5tZXRhRGF0YSgpOworfQorCitQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QKK3sKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0
cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhRGF0YTo6T2JqZWN0
U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhRGF0YS5vYmplY3RTdG9yZXMuYmVn
aW4oKTsgaXQgIT0gbV9tZXRhRGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisgICAgICAg
IG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOworICAgIG9iamVjdFN0b3JlTmFt
ZXMtPnNvcnQoKTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7CiB9CiAK
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtMTIyLDcgKzEzNCwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVs
ZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0
U3RvcmVNZXRhRGF0YSBtZXRhRGF0YShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZShtZXRhRGF0YSwgb2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fbWV0YURhdGEub2JqZWN0U3RvcmVzLnNldChu
YW1lLCBtZXRhRGF0YSk7CisKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0
U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUu
cmVsZWFzZSgpOwogfQpAQCAtMTM1LDcgKzE1MCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IH0KIAogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uLT5vYmplY3RTdG9yZURlbGV0ZWQobmFtZSk7CisgICAgaWYgKCFlYykgeworICAgICAg
ICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOwor
ICAgICAgICBtX21ldGFEYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQog
CiBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVy
c2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggNjY1NjM1MmYzNjE4NzFlNGNmYTNkNmY3YzViOWQ3NDQ4
MDI1ZjI3OC4uY2E2NmRlZjgxNzY2ZDMyNTQzYjE4MzRmZTAwYzI3N2ZiMzAzYTVhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aCIKKyNpbmNsdWRlICJJREJNZXRhRGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgi
CiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNTcsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiopOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwK
LSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0g
ICAgU3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsg
fQotICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVOYW1lcygpOyB9CisgICAgU3RyaW5nIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFEYXRhLm5hbWU7IH0KKyAgICBTdHJpbmcgdmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YURhdGEudmVyc2lvbjsgfQorICAgIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6
IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAg
ICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUo
bmFtZSwgRGljdGlvbmFyeSgpLCBlYyk7IH0KQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogCiAgICAgdm9pZCBvcGVuKCk7CisgICAgSURCRGF0YWJhc2VNZXRhRGF0YSYgbWV0
YURhdGEoKSB7IHJldHVybiBtX21ldGFEYXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0OjpkaXNwYXRj
aEV2ZW50KGV2ZW50LCBlYyk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CkBAIC0xMDMsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCisgICAgSURCRGF0YWJhc2VNZXRh
RGF0YSBtX21ldGFEYXRhOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDNiMjk3MzE1ODM5Mjk2MTNk
MWEyMmZlOTJmODg0OWQ4MzI4MmIxNmEuLjFlMzhmMDZkMWFjOThiMzQ2NDhhMGIyODI1NGJmMDg0
ZDA4ODgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzQsNiArMTM0LDE0IEBAIFBh
c3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5n
U3RvcmUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZTsKIH0KIAorSURCRGF0YWJh
c2VNZXRhRGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhRGF0YSgpIGNvbnN0Cit7Cisg
ICAgSURCRGF0YWJhc2VNZXRhRGF0YSBtZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbik7CisgICAg
Zm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5i
ZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWV0YURh
dGEub2JqZWN0U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFEYXRhKCkpOwor
ICAgIHJldHVybiBtZXRhRGF0YTsKK30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDJhNmZiM2I3NzIxNmU3YzNjNTY2MzkzZWQ2YTVl
NTdlODE1NmRiZDQuLjViMTEyMTU1YmEwMzY3MDhmMmY2YzI2MjQ0Y2YwOGMzYjU3NjUzNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3Bl
bkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRlbGV0ZURh
dGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlTWV0YURhdGEgbWV0YURhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCmluZGV4IGUwNzJhMGYzOTU5ZDcwZDUxYTUwYzI2YjFlYjIxNTIwYzU5NmViMWYuLjljM2Ex
YzM1NjQxYjkwMTJmMGRiNTU5ODdhMzFmNGU0ODg2Y2MxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwog
Y2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsK
IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKK3N0cnVjdCBJREJEYXRhYmFz
ZU1ldGFEYXRhOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC01Miw2ICs1Myw3
IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJREJEYXRhYmFzZUJhY2tlCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0
YURhdGEgbWV0YURhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5k
ZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmlu
ZGV4IDU3Y2RiMTIxNWE0MTU3MTg2YjM5YzY5YTZlNzIzOTQ0MmY3ZDA0YTcuLjliMDkyM2MyNTlj
NjNkNThjNTVmOTZkMmNjMzJmMTQxOWIwNDc1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTQyLDEwICs0MiwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9u
ID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJJbmRleDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9y
ZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGJhY2tlbmQp
CitJREJJbmRleDo6SURCSW5kZXgoSURCSW5kZXhNZXRhRGF0YSBtZXRhRGF0YSwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmpl
Y3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIDogbV9tZXRhRGF0YSht
ZXRhRGF0YSkKKyAgICAsIG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9vYmplY3RTdG9yZShv
YmplY3RTdG9yZSkKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBtX2Rl
bGV0ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fb2Jq
ZWN0U3RvcmUpOwpAQCAtNTksNiArNjEsMTAgQEAgSURCSW5kZXg6On5JREJJbmRleCgpCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleDo6b3BlbkN1cnNvciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURC
Q3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI2LDYgKzEzMiwxMCBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKKyAgICBp
ZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9J
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgdW5zaWdu
ZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rp
b25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0xNzMsNiArMTgzLDEwIEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXQiKTsKKyAgICBp
ZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9J
TlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkg
JiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4
OCw2ICsyMDIsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIw
NSw2ICsyMjMsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJB
Q0UoIklEQkluZGV4OjpnZXRLZXkiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6
SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIyMCw2ICsyNDIsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWYKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0
S2V5Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
ICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGE5MGFjZTAzZGEwOTYzOWE1NzA4OGM0MTYzZGQwN2Zm
ZTI3ZTAxOGIuLmI2ZDkxMTdjMDQyMTIyOGY2OWQyNjFhMWJkYjgzNGFlYTU3MzJjYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFE
YXRhLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQyLDE4ICs0MywxOCBAQCBjbGFzcyBJ
REJPYmplY3RTdG9yZTsKIAogY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgUmVmQ291bnRlZDxJREJJ
bmRleD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGUo
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGUoSURCSW5kZXhNZXRhRGF0YSBtZXRhRGF0YSwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChiYWNrZW5kLCBvYmplY3RTdG9yZSwg
dHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChtZXRh
RGF0YSwgYmFja2VuZCwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5J
REJJbmRleCgpOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9CisgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21ldGFEYXRhLm5hbWU7IH0KICAgICBJREJPYmplY3RTdG9yZSogb2Jq
ZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9Ci0gICAgUGFz
c1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBh
dGgoKTsgfQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlx
dWUoKTsgfQotICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+
bXVsdGlFbnRyeSgpOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7
IHJldHVybiBtX21ldGFEYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWV0YURhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9tZXRhRGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRv
IG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3Rh
dGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04MCwxMiArODEsMTYgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgbWFya0RlbGV0ZWQo
KSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKLSAgICBJREJJbmRleChQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNh
Y3Rpb24qKTsKKyAgICBJREJJbmRleChJREJJbmRleE1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNhY3Rpb24qKTsK
IAorICAgIElEQkluZGV4TWV0YURhdGEgbV9tZXRhRGF0YTsKICAgICBSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBt
X29iamVjdFN0b3JlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsK
KyAgICBib29sIG1fZGVsZXRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW1wbC5jcHAKaW5kZXggOWVmZTU0ODI5YWYwNzA1NDIwYjgzMDYzZjBlNzMzNjIzYTJmZjM0OC4u
NjJhM2U1OWJlZGVkNGMzYjE3NGUwYjQ1N2ZjOGJkMzk5OWYxYzU5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAi
SURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCVHJhY2luZy5oIgogCkBAIC02OSw2ICs3MCwxMSBAQCBJREJJbmRleEJhY2tl
bmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1wbCgpCiB7CiB9CiAKK0lEQkluZGV4TWV0YURhdGEg
SURCSW5kZXhCYWNrZW5kSW1wbDo6bWV0YURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBJREJJ
bmRleE1ldGFEYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsK
K30KKwogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5cGVkRGly
ZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklE
QkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4
IDIwZjM1YzRmM2ZhMzlhZDA0YzE1MmI0NzRhYzhkMTcwM2EwNDVjZGUuLmEwZDUwY2RiODc4ZGFi
YzQ4ZjJiZmQxMzUzMmZkZjBlNjJmMDFhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1
ZGUgIklEQk1ldGFEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsNiArNjMs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKGNvbnN0IElEQktleSogaW5k
ZXhLZXksIGNvbnN0IElEQktleSogcHJpbWFyeUtleSA9IDApOwogCiAgICAgLy8gSW1wbGVtZW50
cyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuCisgICAgdmlydHVhbCBJREJJbmRleE1ldGFEYXRh
IG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIG1f
bmFtZTsgfQogICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQ
YXRoOyB9CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJuIG1fdW5pcXVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YURhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZDA5ZmUwMGNiNDE0OTgwNmM0ZjlkY2U3ZDAwOGJiZGExYTJmNzg1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YURhdGEuaApA
QCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCTWV0YURhdGFfaAorI2RlZmluZSBJREJNZXRh
RGF0YV9oCisKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhOworc3RydWN0IElEQkluZGV4
TWV0YURhdGE7CisKK3N0cnVjdCBJREJEYXRhYmFzZU1ldGFEYXRhIHsKKyAgICBJREJEYXRhYmFz
ZU1ldGFEYXRhKCkgeyB9CisgICAgSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAg
ICwgdmVyc2lvbih2ZXJzaW9uKSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgdmVy
c2lvbjsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQk9iamVjdFN0b3JlTWV0YURh
dGE+IE9iamVjdFN0b3JlTWFwOworICAgIE9iamVjdFN0b3JlTWFwIG9iamVjdFN0b3JlczsKK307
CisKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhIHsKKyAgICBJREJPYmplY3RTdG9yZU1l
dGFEYXRhKCkgeyB9CisgICAgSURCT2JqZWN0U3RvcmVNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICAg
ICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwga2V5UGF0aChrZXlQYXRoKQorICAgICAgICAsIGF1
dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURC
S2V5UGF0aCBrZXlQYXRoOworICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKworICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIElEQkluZGV4TWV0YURhdGE+IEluZGV4TWFwOworICAgIEluZGV4TWFw
IGluZGV4ZXM7Cit9OworCitzdHJ1Y3QgSURCSW5kZXhNZXRhRGF0YSB7CisgICAgSURCSW5kZXhN
ZXRhRGF0YSgpIHsgfQorICAgIElEQkluZGV4TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQor
ICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAg
ICwgdW5pcXVlKHVuaXF1ZSkKKyAgICAgICAgLCBtdWx0aUVudHJ5KG11bHRpRW50cnkpIHsgfQor
ICAgIFN0cmluZyBuYW1lOworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBib29sIHVuaXF1
ZTsKKyAgICBib29sIG11bHRpRW50cnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlRyYWNpbmdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDdiMjQ1
ZTY4YTM0MTBkYWQ3Yzk1NWYwMWU0ZmI0NmFlMDhiODhjMzMuLjIwYzk1YjUxYjE5ODg3NjYwNDBl
YTQ5MWYxMmYzZjE0MWE1YzhlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJE
YXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
SURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKQEAgLTQ0LDkgKzQ1LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJl
Y3Rpb24gPSBJREJDdXJzb3I6Ok5FWFQ7CiAKLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9y
ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3Rv
cmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2VuZChpZGJPYmpl
Y3RTdG9yZSkKK0lEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZU1l
dGFEYXRhIG1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1f
bWV0YURhdGEobWV0YURhdGEpCisgICAgLCBtX3ByZXZpb3VzTWV0YURhdGEobWV0YURhdGEpCisg
ICAgLCBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQorICAgICwgbV9kZWxldGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKQEAgLTU3LDE5ICs2MSwyMyBAQCBJREJPYmpl
Y3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+IGlkYk9iagogU3RyaW5nIElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpuYW1lIik7Ci0gICAgcmV0dXJuIG1fYmFj
a2VuZC0+bmFtZSgpOworICAgIHJldHVybiBtX21ldGFEYXRhLm5hbWU7CiB9CiAKIFBhc3NSZWZQ
dHI8SURCQW55PiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPmtl
eVBhdGgoKTsKKyAgICByZXR1cm4gbV9tZXRhRGF0YS5rZXlQYXRoOwogfQogCiBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1f
YmFja2VuZC0+aW5kZXhOYW1lcygpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5h
bWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1l
dGFEYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFEYXRhLmluZGV4ZXMu
YmVnaW4oKTsgaXQgIT0gbV9tZXRhRGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBp
bmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7Cisg
ICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBJREJUcmFuc2FjdGlvbiogSURC
T2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKQEAgLTgxLDcgKzg5LDcgQEAgSURCVHJh
bnNhY3Rpb24qIElEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbigpIGNvbnN0CiBib29sIElEQk9i
amVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0lu
Y3JlbWVudCgpOworICAgIHJldHVybiBtX21ldGFEYXRhLmF1dG9JbmNyZW1lbnQ7CiB9CiAKIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0xMDQsNiArMTEyLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CisgICAgaWYg
KG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleSB8
fCAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE4
LDYgKzEzMCwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZTo6YWRkIik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRU
eXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xNDIsNiArMTU4LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKKyAgICBpZiAobV9kZWxldGVk
KSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlw
ZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE2Niw2ICsxODYsMTAg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpkZWxldGUiKTsKKyAgICBpZiAobV9kZWxl
dGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsK
ICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTgzLDYgKzIwNywxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7
CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBp
ZiAoIWtleSB8fCAha2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjAwLDYgKzIyOCwxMCBA
QCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKKyAg
ICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFu
eTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNs
ZWFyKHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykg
ewpAQCAtMjI2LDYgKzI1OCwxMSBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPAogUGFzc1JlZlB0
cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgiKTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8
IG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgha2V5
UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURC
X1NZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0LDEwICsyODEsMjEgQEAgUGFz
c1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2UKIAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBB
U1NFUlQoIWluZGV4QmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4
LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNh
LgotICAgIGlmICghaW5kZXhCYWNrZW5kKQorICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUoaW5kZXhCYWNr
ZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisKKyAgICBJREJJbmRl
eE1ldGFEYXRhIG1ldGFEYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7Cisg
ICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YURhdGEsIGlu
ZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
aW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFEYXRhLmluZGV4ZXMuc2V0KG5h
bWUsIG1ldGFEYXRhKTsKKworICAgIC8vIE5lZWQgdG8gdXBkYXRlIGNhbm9uaWNhbCBtZXRhZGF0
YSBpbiBJREJEYXRhYmFzZSBzbyBmdXR1cmUgY29waWVzIG9mIHRoaXMgc3RvcmUgaGF2ZSB0aGUg
bmV3IGluZGV4IG1ldGFkYXRhLgorICAgIElEQkRhdGFiYXNlTWV0YURhdGEmIGRhdGFiYXNlTWV0
YURhdGEgPSBtX3RyYW5zYWN0aW9uLT5kYigpLT5tZXRhRGF0YSgpOworICAgIElEQkRhdGFiYXNl
TWV0YURhdGE6Ok9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YURhdGEu
b2JqZWN0U3RvcmVzLmZpbmQobV9tZXRhRGF0YS5uYW1lKTsKKyAgICBBU1NFUlQoaXQgIT0gZGF0
YWJhc2VNZXRhRGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0
YURhdGEmIG9iamVjdFN0b3JlTWV0YURhdGEgPSBpdC0+c2Vjb25kOworICAgIG9iamVjdFN0b3Jl
TWV0YURhdGEuaW5kZXhlcy5zZXQobmFtZSwgbWV0YURhdGEpOworCiAgICAgcmV0dXJuIGluZGV4
LnJlbGVhc2UoKTsKIH0KIApAQCAtMjY1LDIyICszMTMsNTAgQEAgUGFzc1JlZlB0cjxJREJJbmRl
eD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMKIAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2Vu
ZCA9IG1fYmFja2VuZC0+aW5kZXgobmFtZSwgZWMpOwogICAgIEFTU0VSVCghaW5kZXhCYWNrZW5k
ICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdv
dHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCi0gICAgaWYgKCFpbmRleEJh
Y2tlbmQpCisgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJREJJ
bmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRo
aXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGE6Oklu
ZGV4TWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbV9tZXRhRGF0YS5pbmRleGVzLmZpbmQobmFt
ZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbV9tZXRhRGF0YS5pbmRleGVzLmVuZCgpKTsKKworICAg
IFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1kaXQtPnNlY29uZCwg
aW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7
CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc1ZlcnNp
b25DaGFuZ2UoKSB8fCBtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCiAg
ICAgbV9iYWNrZW5kLT5kZWxldGVJbmRleChuYW1lLCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCks
IGVjKTsKKyAgICBpZiAoIWVjKSB7CisgICAgICAgIElEQkluZGV4TWFwOjppdGVyYXRvciBpdCA9
IG1faW5kZXhNYXAuZmluZChuYW1lKTsKKyAgICAgICAgaWYgKGl0ICE9IG1faW5kZXhNYXAuZW5k
KCkpIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7CisgICAgICAgICAg
ICBtX2luZGV4TWFwLnJlbW92ZShuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCht
X21ldGFEYXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOworICAgICAgICBtX21ldGFEYXRhLmlu
ZGV4ZXMucmVtb3ZlKG5hbWUpOworCisgICAgICAgIC8vIE5lZWQgdG8gdXBkYXRlIGNhbm9uaWNh
bCBtZXRhZGF0YSBpbiBJREJEYXRhYmFzZSBzbyBmdXR1cmUgY29waWVzIG9mIHRoaXMgc3RvcmUg
aGF2ZSB0aGUgbmV3IGluZGV4IG1ldGFkYXRhLgorICAgICAgICBJREJEYXRhYmFzZU1ldGFEYXRh
JiBkYXRhYmFzZU1ldGFEYXRhID0gbV90cmFuc2FjdGlvbi0+ZGIoKS0+bWV0YURhdGEoKTsKKyAg
ICAgICAgSURCRGF0YWJhc2VNZXRhRGF0YTo6T2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIG1kaXQg
PSBkYXRhYmFzZU1ldGFEYXRhLm9iamVjdFN0b3Jlcy5maW5kKG1fbWV0YURhdGEubmFtZSk7Cisg
ICAgICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGEmIG9iamVjdFN0b3JlTWV0YURhdGEgPSBtZGl0
LT5zZWNvbmQ7CisgICAgICAgIG9iamVjdFN0b3JlTWV0YURhdGEuaW5kZXhlcy5yZW1vdmUobmFt
ZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURC
S2V5UmFuZ2U+IHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIp
OworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAg
dW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihk
aXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MzI3LDYgKzQwMywxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisgICAgaWYgKG1fZGVs
ZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwg
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApp
bmRleCBlMTFmYmQwODBkMmJlZDk3NTEzYzc4NTc2MTI0OTA4YzAyMDdiZGZiLi5kYWI5N2NmZjE3
NDU0NDZhYTg2OWEwZGYzYWU5Y2QzNTIxZjJhMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktl
eVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb24uaCIKQEAgLTQ5LDkgKzUwLDkgQEAgY2xhc3MgSURCQW55OwogCiBj
bGFzcyBJREJPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUs
IElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gY3JlYXRlKElEQk9iamVjdFN0b3JlTWV0YURhdGEgbWV0YURhdGEsIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
Qk9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKG1ldGFEYXRhLCBiYWNrZW5kLCB0cmFuc2Fj
dGlvbikpOwogICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmUoKSB7IH0KIApAQCAtOTQsMTQgKzk1
LDE5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCBtYXJr
RGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5p
c2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhRGF0YSgpIHsgbV9tZXRhRGF0YSA9IG1fcHJldmlv
dXNNZXRhRGF0YTsgfQogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJ
REJPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZU1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdm9pZCByZW1v
dmVUcmFuc2FjdGlvbkZyb21QZW5kaW5nTGlzdCgpOwogCisgICAgSURCT2JqZWN0U3RvcmVNZXRh
RGF0YSBtX21ldGFEYXRhOworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGEgbV9wcmV2aW91c01l
dGFEYXRhOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFj
a2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CisgICAgYm9v
bCBtX2RlbGV0ZWQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5k
ZXg+ID4gSURCSW5kZXhNYXA7CiAgICAgSURCSW5kZXhNYXAgbV9pbmRleE1hcDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggYjU1ZDFlMTI2MWZiYzQ0ODM2ZWMzNmFiZDFiYzI1MGIz
ZjVhZjEyYS4uZTAwZTQ0NDhhNmM0MmRhMDA3YjU5NmNiYTlkMDNjOGE3MDE1ZTNmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTc0LDYgKzc0LDE0IEBAIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBi
YWNraW5nU3RvCiB7CiB9CiAKK0lEQk9iamVjdFN0b3JlTWV0YURhdGEgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6bWV0YURhdGEoKSBjb25zdAoreworICAgIElEQk9iamVjdFN0b3JlTWV0YURh
dGEgbWV0YURhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fYXV0b0luY3JlbWVudCk7CisgICAgZm9y
IChJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0g
bV9pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBtZXRhRGF0YS5pbmRleGVzLnNldChpdC0+
Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFEYXRhKCkpOworICAgIHJldHVybiBtZXRhRGF0YTsKK30K
KwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpp
bmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1l
cyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4
IGE1ZGU3ZTVkMmQ2MjNkZGUwZjAwZmNmZDRlOWE2ZWIzZjA4OGM2MzkuLjQ4MmFhODI3NjNiMjYw
OWM2NTc5MTc2NjUzNDA0MzM0NzI2ZmJjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAKICNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQwLDYgKzQxLDcgQEAg
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGw7
CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Oworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YURhdGE7CiAKIGNsYXNzIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlIHsKIHB1YmxpYzoKQEAgLTYxLDYgKzYzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2
b2lkIHNldElkKGludDY0X3QgaWQpIHsgbV9pZCA9IGlkOyB9CiAKKyAgICB2aXJ0dWFsIElEQk9i
amVjdFN0b3JlTWV0YURhdGEgbWV0YURhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRoIGtl
eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGY1Yzc0NGIx
NWE3NzJjNzViMDM3MmVlYzRjMjBjOTIzZTJmZGE4YzIuLjBjYTgyODc1MWUzMzRiZTE4MjNlNDMy
NWZmMmY3NjM4NGFhNzEzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE1MCwyNSArMTUwLDM3IEBAIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwCiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVCYWNrZW5kID0gbV9i
YWNrZW5kLT5vYmplY3RTdG9yZShuYW1lLCBlYyk7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUJhY2tl
bmQpIHsKLSAgICAgICAgQVNTRVJUKGVjKTsKKyAgICBBU1NFUlQoIW9iamVjdFN0b3JlQmFja2Vu
ZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGEgc3RvcmUsIHdlIHNob3VsZCBoYXZlIGdv
dHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCisgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RT
dG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsK
KworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YURhdGEmIG1ldGFEYXRhID0gbV9kYXRhYmFzZS0+
bWV0YURhdGEoKTsKKyAgICBJREJEYXRhYmFzZU1ldGFEYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29u
c3RfaXRlcmF0b3IgbWRpdCA9IG1ldGFEYXRhLm9iamVjdFN0b3Jlcy5maW5kKG5hbWUpOworICAg
IEFTU0VSVChtZGl0ICE9IG1ldGFEYXRhLm9iamVjdFN0b3Jlcy5lbmQoKSk7CisKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZSht
ZGl0LT5zZWNvbmQsIG9iamVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CiAgICAgb2JqZWN0U3RvcmVD
cmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFz
ZSgpOwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSkKK3Zv
aWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IHBycE9iamVjdFN0b3JlKQogewogICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gcHJwT2JqZWN0U3RvcmU7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQobmFt
ZSwgb2JqZWN0U3RvcmUpOworICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFkZChvYmplY3RT
dG9yZSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwot
ICAgIG1fb2JqZWN0U3RvcmVNYXAucmVtb3ZlKG5hbWUpOworICAgIElEQk9iamVjdFN0b3JlTWFw
OjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVNYXAuZmluZChuYW1lKTsKKyAgICBpZiAoaXQg
IT0gbV9vYmplY3RTdG9yZU1hcC5lbmQoKSkgeworICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IG9iamVjdFN0b3JlID0gaXQtPnNlY29uZDsKKyAgICAgICAgbV9vYmplY3RTdG9yZU1hcC5y
ZW1vdmUobmFtZSk7CisgICAgICAgIG9iamVjdFN0b3JlLT5tYXJrRGVsZXRlZCgpOworICAgICAg
ICBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3RvcmUpOworICAgIH0KIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQpAQCAtMjMwLDggKzI0MiwxMSBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpvbkFib3J0KCkKICAgICAgICAgcmVxdWVzdC0+YWJvcnQoKTsKICAgICB9
CiAKLSAgICBpZiAobV9tb2RlID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkKKyAg
ICBpZiAobV9tb2RlID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewogICAgICAg
ICBtX2RhdGFiYXNlLT5jbGVhclZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih0aGlzKTsKKyAgICAg
ICAgZm9yIChJREJPYmplY3RTdG9yZVNldDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlQ2xl
YW51cFNldC5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5lbmQoKTsgKytp
dCkKKyAgICAgICAgICAgICgqaXQpLT5yZXNldE1ldGFEYXRhKCk7CisgICAgfQogICAgIGNsb3Nl
T3BlbkN1cnNvcnMoKTsKIAogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaAppbmRleCAxY2ViZTljMTkzZDkyN2JjMTU5NjI2N2ViNzM1NjhiNzFm
YjU5ZTcyLi5jYTY0M2U1NmFjYzVlZGFkNTg4NDA0NjM1OGRlYmZlNDJjZmFhYzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSURCTWV0YURh
dGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC02OCw2ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogYmFja2VuZCgpIGNvbnN0OwogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0Owor
ICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJ
T05fQ0hBTkdFOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKICAgICBJREJE
YXRhYmFzZSogZGIoKSBjb25zdDsKQEAgLTE0MCw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RT
dG9yZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFwOwogCisgICAg
dHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZVNl
dDsKKyAgICBJREJPYmplY3RTdG9yZVNldCBtX29iamVjdFN0b3JlQ2xlYW51cFNldDsKKwogICAg
IEhhc2hTZXQ8SURCQ3Vyc29yKj4gbV9vcGVuQ3Vyc29yczsKIAogICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhODYxYTJmNmFmMGMzYWJi
Njk5MTdmY2U3ZGYzMjFjNTMxNjdiN2U3Li45OWViYThhYjVlMzQ2NGQwMTE1ODAwYTI4OWFlNWZi
NGQ3NzJiNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDg1LDYgKzE0ODUsNyBAQAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YURhdGEuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggMzQwNzQxOGM0YTNjM2U0OTllMWI5YjMzNGQ4N2Q2NjY1MGQyMDFmOS4u
MWE0Mjc5OWRlZDQ0ODAyOTM1OTMxODk1Y2FjMzQzYmE3ZDA1MGQzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cApAQCAtMTgxLDYgKzE4MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJJREJLZXkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJLZXlQYXRoLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UmFuZ2UuaCcsCisgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJJREJNZXRhRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYklEQk9iamVjdFN0b3JlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJh
bnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcy5oJywKQEAgLTU2Myw2ICs1NjQsNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SURCS2V5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlQYXRoLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlSYW5nZS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViSURCTWV0YURhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRh
YmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApp
bmRleCBiMzk4NTM0MTY1NTQzYTE5N2E2MTc5N2Q1NDc0OWRhODVlM2EzNTZlLi42OTZmMTZjNDdj
ZTJjYjRmYzllNjg0OWYwZjQzYTgwYmYyZGNkODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiV2ViSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24u
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NSwxMSBAQCBjbGFzcyBXZWJJREJE
YXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2UoKSB7IH0KIAor
ICAgIHZpcnR1YWwgV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBtZXRhRGF0YSgpIGNvbnN0CisgICAg
eworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpjcmVhdGUoKTsKKyAgICB9CiAgICAgdmlydHVhbCBXZWJT
dHJpbmcgbmFtZSgpIGNvbnN0CiAgICAgewogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJN
ZXRhRGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YURhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMmIyMjc3NDE5ZTNlMGFlY2Q2MDcyNDU3NmFjNGY2MDdjZDg5YzFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0
YURhdGEuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCTWV0YURhdGFf
aAorI2RlZmluZSBXZWJJREJNZXRhRGF0YV9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlT3duUHRyLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisK
K25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5PiBjbGFzcyBWZWN0b3I7CitjbGFzcyBTdHJpbmc7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIElEQktleVBhdGg7CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhRGF0YTsKK3N0cnVj
dCBJREJJbmRleE1ldGFEYXRhOworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YURhdGE7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJREJJbmRleE1ldGFEYXRhOworY2xhc3Mg
V2ViSURCS2V5UGF0aDsKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE7CisKK2NsYXNz
IFdlYklEQkRhdGFiYXNlTWV0YURhdGEgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklEQkRhdGFiYXNlTWV0YURhdGEgY3JlYXRlKCk7CisgICAgV0VCS0lUX0VYUE9SVCBz
dGF0aWMgV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJPYmplY3RT
dG9yZU1ldGFEYXRhPiYgb2JqZWN0X3N0b3Jlcyk7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFdlYklEQkRhdGFiYXNlTWV0YURhdGEmKTsKKworICAgIFdF
QktJVF9FWFBPUlQgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8V2Vi
SURCT2JqZWN0U3RvcmVNZXRhRGF0YT4gb2JqZWN0U3RvcmVzKCkgY29uc3Q7CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJEYXRhYmFzZU1ldGFEYXRhKCk7CisgICAgV2Vi
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFEYXRhJik7
CisgICAgfldlYklEQkRhdGFiYXNlTWV0YURhdGEoKTsKKyAgICBXZWJJREJEYXRhYmFzZU1ldGFE
YXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YSYpOworICAg
IG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YURhdGEmKCkgY29uc3Q7Cisj
ZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YURhdGE+IG1fcHJpdmF0ZTsKK307CisKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlTWV0
YURhdGEgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQk9iamVjdFN0
b3JlTWV0YURhdGEgY3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViVmVjdG9yPFdlYklEQkluZGV4TWV0
YURhdGE+JiBpbmRleGVzKTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYklEQk9iamVjdFN0b3JlTWV0
YURhdGEoY29uc3QgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSYpOworCisgICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5
UGF0aCBrZXlQYXRoKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGF1dG9JbmNyZW1l
bnQoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlZlY3RvcjxXZWJJREJJbmRleE1ldGFE
YXRhPiBpbmRleGVzKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBX
ZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKCk7CisgICAgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0
YShjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhJik7CisgICAgfldlYklEQk9i
amVjdFN0b3JlTWV0YURhdGEoKTsKKyAgICBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhJiBvcGVy
YXRvcj0oY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhRGF0YSYpOworICAgIG9wZXJh
dG9yIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGEmKCkgY29uc3Q7CisjZW5k
aWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YURhdGE+IG1fcHJpdmF0ZTsKK307CisKK2NsYXNzIFdlYklEQkluZGV4TWV0YURhdGEg
eworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQkluZGV4TWV0YURhdGEg
Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnkpOworICAgIFdFQktJVF9FWFBPUlQgV2ViSURCSW5kZXhN
ZXRhRGF0YShjb25zdCBXZWJJREJJbmRleE1ldGFEYXRhJik7CisKKyAgICBXRUJLSVRfRVhQT1JU
IFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJLZXlQYXRo
IGtleVBhdGgoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIGJvb2wgdW5pcXVlKCkgY29uc3Q7
CisgICAgV0VCS0lUX0VYUE9SVCBib29sIG11bHRpRW50cnkoKSBjb25zdDsKKworI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgorICAgIFdlYklEQkluZGV4TWV0YURhdGEoKTsKKyAgICBXZWJJREJJ
bmRleE1ldGFEYXRhKGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YURhdGEmKTsKKyAgICB+V2Vi
SURCSW5kZXhNZXRhRGF0YSgpOworICAgIFdlYklEQkluZGV4TWV0YURhdGEmIG9wZXJhdG9yPShj
b25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhJik7CisgICAgb3BlcmF0b3IgY29uc3QgV2Vi
Q29yZTo6SURCSW5kZXhNZXRhRGF0YSYoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAg
IFdlYlByaXZhdGVPd25QdHI8V2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YT4gbV9wcml2YXRlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJLZXlQYXRoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcAppbmRleCA2ZTUzNTQ5OWEzOGM0YTkzNTA5YTZlNGY1NTZjZjk4YWM4ZjIwMDcz
Li5iMzUwZTc2ZDkwMDE1ODIwNzQ3N2JiZWI4OWQ2NTYzNTQ5ODVlZjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5j
bHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEsMTEgQEAgSURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiB7CiB9CiAKK0lEQkRhdGFiYXNlTWV0
YURhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFEYXRhKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YURhdGEoKTsKK30KKwogU3RyaW5nIElEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJJREJEYXRh
YmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggYjc4YWM2OTkyY2RjZmYxMzg3YTllYzA4YjM4Njhl
YjZjZmM0MzM5Mi4uMmM2MDg5MTI1NjkwODQ4ZGUwNGFhZTE5OGU0ZjhhNmFkN2Y2MDRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdl
YklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoKTsK
IAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YSBtZXRhRGF0YSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDRiZTQzZGMxNGQ4MTdk
OTU5YWVmNThhMTZhZWNmNDg1YmNiNWI2YmEuLjc1YTdhODJmNDFmYWY1MDljYjE4OWM0OGVlZmZj
M2U5MDQzNzE4YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNsdWRlICJJREJDYWxsYmFj
a3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNsdWRlICJJREJNZXRhRGF0
YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
LmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RT
dG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKIApAQCAtNTEs
NiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+V2ViSURCRGF0YWJhc2VJbXBsKCkKIHsK
IH0KIAorV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFEYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm1ldGFEYXRhKCk7Cit9
CisKIFdlYlN0cmluZyBXZWJJREJEYXRhYmFzZUltcGw6Om5hbWUoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA5NjU3MWJiZTljMWQ5NmNiZDNmOWM3
ZDNhZDgzMTc5Yjk2MTkzZGQ5Li5iMDFhYjA5MmM2Mzg1YTk0OWE3ZmRkZWM1YTJhNDUzMTYxY2Vm
ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUlt
cGwuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSURCRGF0
YWJhc2VDYWxsYmFja3NQcm94eTsKIGNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xh
c3MgV2ViSURCRGF0YWJhc2VNZXRhRGF0YTsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xh
c3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdl
YklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2VJbXBsKCk7CiAKKyAg
ICB2aXJ0dWFsIFdlYklEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGEoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgdmVy
c2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZU5h
bWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJNZXRhRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhRGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWRmNzY4ZTRlNmQwNDQyZDYyZDU0N2IyMzBkMmY4ODZhNmY0ZDY4
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1l
dGFEYXRhLmNwcApAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJJREJNZXRhRGF0YS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlICJJREJNZXRhRGF0YS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGgu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJJREJEYXRhYmFzZU1ldGFEYXRhIFdlYklEQkRhdGFiYXNlTWV0YURhdGE6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIFdlYklEQkRhdGFiYXNlTWV0YURhdGEoSURCRGF0YWJhc2VN
ZXRhRGF0YSgpKTsKK30KKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBXZWJJREJEYXRhYmFzZU1l
dGFEYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZl
cnNpb24sIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhPiYgb2JqZWN0
U3RvcmVzKQoreworICAgIElEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGE7CisgICAgbWV0YURh
dGEubmFtZSA9IG5hbWU7CisgICAgbWV0YURhdGEudmVyc2lvbiA9IHZlcnNpb247CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1l
dGFEYXRhLm9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmVzW2ldLm5hbWUoKSwgb2JqZWN0U3Rv
cmVzW2ldKTsKKyAgICByZXR1cm4gV2ViSURCRGF0YWJhc2VNZXRhRGF0YShtZXRhRGF0YSk7Cit9
CisKK1dlYklEQkRhdGFiYXNlTWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEoKQorICAg
IDogbV9wcml2YXRlKG5ldyBJREJEYXRhYmFzZU1ldGFEYXRhKCkpCit7Cit9CisKK1dlYklEQkRh
dGFiYXNlTWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgV2ViSURCRGF0YWJh
c2VNZXRhRGF0YSYgb3RoZXIpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkRhdGFiYXNlTWV0YURh
dGEob3RoZXIpKQoreworfQorCitXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp+V2ViSURCRGF0YWJh
c2VNZXRhRGF0YSgpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KDApOworfQorCitXZWJTdHJpbmcg
V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bmFtZTsKK30KKworV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNlTWV0YURhdGE6OnZlcnNp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnZlcnNpb247Cit9CisKK1dlYlZl
Y3RvcjxXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhPiBXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpv
YmplY3RTdG9yZXMoKSBjb25zdAoreworICAgIHNpemVfdCBjb3VudCA9IHN0YXRpY19jYXN0PHNp
emVfdD4obV9wcml2YXRlLT5vYmplY3RTdG9yZXMuc2l6ZSgpKTsKKyAgICBXZWJWZWN0b3I8V2Vi
SURCT2JqZWN0U3RvcmVNZXRhRGF0YT4gb2JqZWN0U3RvcmVzKGNvdW50KTsKKyAgICBzaXplX3Qg
aSA9IDA7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFEYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3ByaXZhdGUtPm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBt
X3ByaXZhdGUtPm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgb2JqZWN0U3RvcmVz
W2krK10gPSBpdC0+c2Vjb25kOworICAgIHJldHVybiBvYmplY3RTdG9yZXM7Cit9CisKK1dlYklE
QkRhdGFiYXNlTWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgV2ViQ29yZTo6
SURCRGF0YWJhc2VNZXRhRGF0YSYgbWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkRh
dGFiYXNlTWV0YURhdGEoKSkKK3sKKyAgICBtX3ByaXZhdGUtPm5hbWUgPSBtZXRhZGF0YS5uYW1l
OworICAgIG1fcHJpdmF0ZS0+dmVyc2lvbiA9IG1ldGFkYXRhLnZlcnNpb247CisgICAgbV9wcml2
YXRlLT5vYmplY3RTdG9yZXMgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXM7Cit9CisKK1dlYklEQkRh
dGFiYXNlTWV0YURhdGEmIFdlYklEQkRhdGFiYXNlTWV0YURhdGE6Om9wZXJhdG9yPShjb25zdCBX
ZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFEYXRhJiBtZXRhZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUu
cmVzZXQobmV3IElEQkRhdGFiYXNlTWV0YURhdGEobWV0YWRhdGEpKTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK1dlYklEQkRhdGFiYXNlTWV0YURhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6
OklEQkRhdGFiYXNlTWV0YURhdGEmKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKihtX3ByaXZhdGUu
Z2V0KCkpOworfQorCitXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhIFdlYklEQk9iamVjdFN0b3Jl
TWV0YURhdGE6OmNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViVmVjdG9yPFdlYklEQklu
ZGV4TWV0YURhdGE+JiBpbmRleGVzKQoreworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGEgbWV0
YURhdGE7CisgICAgbWV0YURhdGEubmFtZSA9IG5hbWU7CisgICAgbWV0YURhdGEua2V5UGF0aCA9
IFdlYklEQktleVBhdGgoa2V5UGF0aCk7CisgICAgbWV0YURhdGEuYXV0b0luY3JlbWVudCA9IGF1
dG9JbmNyZW1lbnQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleGVzLnNpemUoKTsg
KytpKQorICAgICAgICBtZXRhRGF0YS5pbmRleGVzLnNldChpbmRleGVzW2ldLm5hbWUoKSwgaW5k
ZXhlc1tpXSk7CisgICAgcmV0dXJuIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGEobWV0YURhdGEp
OworfQorCitXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpXZWJJREJPYmplY3RTdG9yZU1ldGFE
YXRhKCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCT2JqZWN0U3RvcmVNZXRhRGF0YSgpKQorewor
fQorCitXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRh
KGNvbnN0IFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGEmIG90aGVyKQorICAgIDogbV9wcml2YXRl
KG5ldyBJREJPYmplY3RTdG9yZU1ldGFEYXRhKG90aGVyKSkKK3sKK30KKworV2ViSURCT2JqZWN0
U3RvcmVNZXRhRGF0YTo6fldlYklEQk9iamVjdFN0b3JlTWV0YURhdGEoKQoreworICAgIG1fcHJp
dmF0ZS5yZXNldCgwKTsKK30KKworV2ViU3RyaW5nIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6
Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPm5hbWU7Cit9CisKK1dlYklE
QktleVBhdGggV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6a2V5UGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9wcml2YXRlLT5rZXlQYXRoKTsKK30KKworYm9vbCBX
ZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjphdXRvSW5jcmVtZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT5hdXRvSW5jcmVtZW50OworfQorCitXZWJWZWN0b3I8V2ViSURCSW5k
ZXhNZXRhRGF0YT4gV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6aW5kZXhlcygpIGNvbnN0Cit7
CisgICAgc2l6ZV90IGNvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3ByaXZhdGUtPmluZGV4
ZXMuc2l6ZSgpKTsKKyAgICBXZWJWZWN0b3I8V2ViSURCSW5kZXhNZXRhRGF0YT4gaW5kZXhlcyhj
b3VudCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhRGF0
YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wcml2YXRlLT5pbmRleGVzLmJlZ2lu
KCk7IGl0ICE9IG1fcHJpdmF0ZS0+aW5kZXhlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgaW5kZXhl
c1tpKytdID0gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gaW5kZXhlczsKK30KKworV2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YShjb25zdCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZU1ldGFEYXRhJiBtZXRhZGF0YSkKKyAgICA6IG1fcHJpdmF0ZShuZXcg
SURCT2JqZWN0U3RvcmVNZXRhRGF0YSgpKQoreworICAgIG1fcHJpdmF0ZS0+bmFtZSA9IG1ldGFk
YXRhLm5hbWU7CisgICAgbV9wcml2YXRlLT5rZXlQYXRoID0gbWV0YWRhdGEua2V5UGF0aDsKKyAg
ICBtX3ByaXZhdGUtPmF1dG9JbmNyZW1lbnQgPSBtZXRhZGF0YS5hdXRvSW5jcmVtZW50OworICAg
IG1fcHJpdmF0ZS0+aW5kZXhlcyA9IG1ldGFkYXRhLmluZGV4ZXM7Cit9CisKK1dlYklEQk9iamVj
dFN0b3JlTWV0YURhdGEmIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6Om9wZXJhdG9yPShjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhJiBtZXRhZGF0YSkKK3sKKyAgICBtX3By
aXZhdGUucmVzZXQobmV3IElEQk9iamVjdFN0b3JlTWV0YURhdGEobWV0YWRhdGEpKTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK1dlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6Om9wZXJhdG9yIGNv
bnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGEmKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKihtX3ByaXZhdGUuZ2V0KCkpOworfQorCitXZWJJREJJbmRleE1ldGFEYXRhIFdlYklEQklu
ZGV4TWV0YURhdGE6OmNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCit7CisgICAgSURC
SW5kZXhNZXRhRGF0YSBtZXRhRGF0YTsKKyAgICBtZXRhRGF0YS5uYW1lID0gbmFtZTsKKyAgICBt
ZXRhRGF0YS5rZXlQYXRoID0ga2V5UGF0aDsKKyAgICBtZXRhRGF0YS51bmlxdWUgPSB1bmlxdWU7
CisgICAgbWV0YURhdGEubXVsdGlFbnRyeSA9IG11bHRpRW50cnk7CisgICAgcmV0dXJuIFdlYklE
QkluZGV4TWV0YURhdGEobWV0YURhdGEpOworfQorCitXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJ
REJJbmRleE1ldGFEYXRhKCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCSW5kZXhNZXRhRGF0YSgp
KQoreworfQorCitXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJREJJbmRleE1ldGFEYXRhKGNvbnN0
IFdlYklEQkluZGV4TWV0YURhdGEmIG90aGVyKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJJbmRl
eE1ldGFEYXRhKG90aGVyKSkKK3sKK30KKworV2ViSURCSW5kZXhNZXRhRGF0YTo6fldlYklEQklu
ZGV4TWV0YURhdGEoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKK30KKworV2ViU3RyaW5n
IFdlYklEQkluZGV4TWV0YURhdGE6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hbWU7Cit9CisKK1dlYklEQktleVBhdGggV2ViSURCSW5kZXhNZXRhRGF0YTo6a2V5UGF0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYklEQktleVBhdGgobV9wcml2YXRlLT5rZXlQYXRo
KTsKK30KKworYm9vbCBXZWJJREJJbmRleE1ldGFEYXRhOjp1bmlxdWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPnVuaXF1ZTsKK30KKworYm9vbCBXZWJJREJJbmRleE1ldGFEYXRh
OjptdWx0aUVudHJ5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tdWx0aUVudHJ5
OworfQorCisKK1dlYklEQkluZGV4TWV0YURhdGE6OldlYklEQkluZGV4TWV0YURhdGEoY29uc3Qg
V2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YSYgbWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUobmV3
IElEQkluZGV4TWV0YURhdGEoKSkKK3sKKyAgICBtX3ByaXZhdGUtPm5hbWUgPSBtZXRhZGF0YS5u
YW1lOworICAgIG1fcHJpdmF0ZS0+a2V5UGF0aCA9IG1ldGFkYXRhLmtleVBhdGg7CisgICAgbV9w
cml2YXRlLT51bmlxdWUgPSBtZXRhZGF0YS51bmlxdWU7CisgICAgbV9wcml2YXRlLT5tdWx0aUVu
dHJ5ID0gbWV0YWRhdGEubXVsdGlFbnRyeTsKK30KKworV2ViSURCSW5kZXhNZXRhRGF0YSYgV2Vi
SURCSW5kZXhNZXRhRGF0YTo6b3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YURh
dGEmIG1ldGFkYXRhKQoreworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURCSW5kZXhNZXRhRGF0
YShtZXRhZGF0YSkpOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViSURCSW5kZXhNZXRhRGF0
YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YSYoKSBjb25zdAorewor
ICAgIHJldHVybiAqKG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDhkMzgwZWZk
ODQyNTJlMTJlOWI2N2I4ODNjYjE4MmZhOWI2MDJhZC4uZDc2ODFkZDlmYmJlNWJiZTkzNDI0MTIx
NDU4MzA1MDc4NDA0OWJiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTA2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qczoKKyAgICAgICAgKGFkZFJlbW92
ZUlEQk9iamVjdHMpOgorICAgICAgICAoYWRkUmVtb3ZlQWRkSURCT2JqZWN0cyk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dDoKKwog
MjAxMi0wNi0wNiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCB1cGRhdGVkIFRlc3RFeHBlY3RhdGlvbnMgYWZ0ZXIgc2V2ZXJh
bCB0ZXN0cyBoYXZlIGJlZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCmluZGV4IDhmYTcwMTYy
YjgxYjlmMWU3YTI2YTExNDVhNDA4NGFkN2QwNDg0ZmQuLjNiM2I3NTRjOWViMTlmZTQ4ZWUwYTI5
OTljNTliY2YwMWNlNzE1NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwpAQCAtNDgsNyAr
NDgsNyBAQCBmdW5jdGlvbiBhZGRSZW1vdmVJREJPYmplY3RzKCkKICAgICB2YXIgaW5kZXggPSBl
dmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7
CiAKICAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsK
LSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKyAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiLCAi
RE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsK
IAogICAgIHRyYW5zLmFib3J0KCk7CiB9CkBAIC03NCw3ICs3NCw3IEBAIGZ1bmN0aW9uIGFkZFJl
bW92ZUFkZElEQk9iamVjdHMoKQogICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKIAogICAgIGV2YWxBbmRMb2co
ImRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOwotICAgIGV2YWxBbmRMb2coInN0
b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRp
b24oInN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKSIsICJET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOwogCiAgICAgdmFyIHN0b3JlID0g
ZXZhbEFuZExvZygic3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVs
bCkiKTsKICAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUlu
ZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAppbmRleCA1
ZmMyNTE1NTVlN2NmOTBmNTVkMmVkY2I1NWZkNjU0MDJkMzJjY2JlLi41OTIwNmQ5YWIyODA1ZTM3
MzZkNjhiMTJmZjQ2MzljYmFmODIxZmNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKQEAg
LTIwLDcgKzIwLDEwIEBAIFBBU1MgdHJhbnMgaXMgbm9uLW51bGwuCiBzdG9yZSA9IGRiLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKQogaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRl
eCgnaW5kZXhGYWlsJywgJ3gnKQogZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpCi1z
dG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBz
dG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1l
IGlzICdJbnZhbGlkU3RhdGVFcnJvcicKIAogdGVzdFNldFZlcnNpb25BYm9ydDIoKToKIFBBU1Mg
c2VsZi5kYi5vYmplY3RTdG9yZU5hbWVzIGlzIFtdCkBAIC0zMyw3ICszNiwxMCBAQCBQQVNTIHRy
YW5zIGlzIG5vbi1udWxsLgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWls
JywgbnVsbCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIGRi
LmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKQotc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3In
CiBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKQogaW5kZXgg
PSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146368</attachid>
            <date>2012-06-07 13:23:01 -0700</date>
            <delta_ts>2012-06-07 17:01:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120607132301.patch</filename>
            <type>text/plain</type>
            <size>86708</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJiODI5MDZjMWYxNjY2
NzcxYzc5YzA2NjM0ZDUyYjNhZGZjZTk5NS4uYzZlNWI3NTYzYzJkYzM0YmM2MjQ3ZjhmZGJmMDUx
ODZmNzhkY2ZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTA2LTA3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBzdG9yYWdl
L2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbAorICAgICAgICAgICAgICAgc3RvcmFnZS9p
bmRleGVkZGIvbWV0YWRhdGEuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OklEQkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNsZWFyVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjp2ZXJzaW9uKToKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjptZXRhRGF0YSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURC
SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4
OjpvcGVuS2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OnVuaXF1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bXVsdGlFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6bWFya0RlbGV0ZWQpOgorICAgICAgICAoSURCSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6bWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCTWV0YURhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YURhdGE6OklEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAo
SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1l
dGFEYXRhOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3Jl
TWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YTo6SURCSW5kZXhN
ZXRhRGF0YSk6CisgICAgICAgIChJREJJbmRleE1ldGFEYXRhKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6SURCT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjptYXJrRGVsZXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhRGF0YSk6Cisg
ICAgICAgIChJREJPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjptZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb246Om9uQWJvcnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNWZXJzaW9uQ2hh
bmdlKToKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisKIDIwMTItMDYtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTk2OTQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDE0NTYxYThiY2Q5MGQ4MGIxNmI3ODE5MWU3MTcyY2Y5YmQ5OTM1
ZGMuLjhmMmE5YmQyMGU1ZGUwNmUwMDA1NjUxNTRhOGViNWI5NGMwMzMxMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTItMDYtMDcgIEpvc2h1YSBCZWxs
ICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNuYXBzaG90IG1l
dGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMgcm91bmQtdHJpcHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRh
YmFzZTo6bWV0YURhdGEpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRhRGF0YS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYklEQk9iamVj
dFN0b3JlTWV0YURhdGEpOgorICAgICAgICAoV2ViSURCSW5kZXhNZXRhRGF0YSk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bWV0YURhdGEpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
SURCTWV0YURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlTWV0YURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlTWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp+V2ViSURCRGF0YWJhc2VNZXRhRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YURhdGE6Om5hbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp2ZXJzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCRGF0
YWJhc2VNZXRhRGF0YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFE
YXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRh
OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YTo6fldlYklEQk9iamVjdFN0b3JlTWV0YURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpuYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6a2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OmF1dG9JbmNyZW1lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjppbmRleGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVNZXRhRGF0YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFE
YXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJ
REJJbmRleE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6
fldlYklEQkluZGV4TWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFE
YXRhOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YURhdGE6OnVuaXF1ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YURhdGE6Om11bHRpRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJJbmRleE1ldGFEYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1l
dGFEYXRhJik6CisKIDIwMTItMDYtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTk2OTQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5k
ZXggZTFmNDRjZDUwNjBhNWM1ODAxY2RhMGY0ZWY5MmE1MGEwMmNlNzI2Mi4uOWI3ZGI2YTQwYTBi
NTExMTdmZTcxZTQxNDRhY2IzOGE4Y2E4ODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjUsNiArNjUsNyBAQCBJREJEYXRh
YmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZQogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmpl
Y3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVu
dCgpOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6
OmNyZWF0ZSh0aGlzKTsKKyAgICBtX21ldGFEYXRhID0gbV9iYWNrZW5kLT5tZXRhRGF0YSgpOwog
fQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKQEAgLTc3LDEyICs3OCwyMyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQogewogICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24p
OwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisgICAgbV9t
ZXRhRGF0YSA9IG1fYmFja2VuZC0+bWV0YURhdGEoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6
Y2xlYXJWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogewogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb24sIG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9
IDA7CisgICAgbV9tZXRhRGF0YSA9IG1fYmFja2VuZC0+bWV0YURhdGEoKTsKK30KKworUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
Cit7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmb3IgKElEQkRhdGFiYXNlTWV0YURhdGE6Ok9iamVjdFN0
b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YURhdGEub2JqZWN0U3RvcmVzLmJlZ2lu
KCk7IGl0ICE9IG1fbWV0YURhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQorICAgICAgICBv
YmplY3RTdG9yZU5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBvYmplY3RTdG9yZU5hbWVz
LT5zb3J0KCk7CisgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCiBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTEyMiw3ICsxMzQsMTAgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmpl
Y3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVh
c2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0
b3JlTWV0YURhdGEgbWV0YURhdGEobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVh
dGUobWV0YURhdGEsIG9iamVjdFN0b3JlQmFja2VuZC5yZWxlYXNlKCksIG1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBtX21ldGFEYXRhLm9iamVjdFN0b3Jlcy5zZXQobmFt
ZSwgbWV0YURhdGEpOworCiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0
b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJl
bGVhc2UoKTsKIH0KQEAgLTEzNSw3ICsxNTAsMTAgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9
CiAKICAgICBtX2JhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsIG1fdmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgIGlmICghZWMpIHsKKyAgICAgICAg
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRlZChuYW1lKTsKKyAg
ICAgICAgbV9tZXRhRGF0YS5vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOworICAgIH0KIH0KIAog
UGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5oCmluZGV4IDY2NTYzNTJmMzYxODcxZTRjZmEzZDZmN2M1YjlkNzQ0ODAy
NWYyNzguLmNhNjZkZWY4MTc2NmQzMjU0M2IxODM0ZmUwMGMyNzdmYjMwM2E1YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgi
CisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgog
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTU3LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb24qKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCi0g
ICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQotICAg
IFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT52ZXJzaW9uKCk7IH0K
LSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPm9iamVjdFN0b3JlTmFtZXMoKTsgfQorICAgIFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YS5uYW1lOyB9CisgICAgU3RyaW5nIHZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtX21ldGFEYXRhLnZlcnNpb247IH0KKyAgICBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBU
cnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAg
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5h
bWUsIERpY3Rpb25hcnkoKSwgZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdDsKIAogICAgIHZvaWQgb3BlbigpOworICAgIElEQkRhdGFiYXNlTWV0YURhdGEmIG1ldGFE
YXRhKCkgeyByZXR1cm4gbV9tZXRhRGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOwpAQCAtMTAzLDYgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAorICAgIElEQkRhdGFiYXNlTWV0YURh
dGEgbV9tZXRhRGF0YTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBt
X2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzYjI5NzMxNTgzOTI5NjEzZDFh
MjJmZTkyZjg4NDlkODMyODJiMTZhLi4xZTM4ZjA2ZDFhYzk4YjM0NjQ4YTBiMjgyNTRiZjA4NGQw
ODg4MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTM0LDYgKzEzNCwxNCBAQCBQYXNz
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6YmFja2luZ1N0
b3JlKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmU7CiB9CiAKK0lEQkRhdGFiYXNl
TWV0YURhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YURhdGEoKSBjb25zdAoreworICAg
IElEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24pOworICAgIGZv
ciAoT2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZXMuYmVn
aW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1ldGFEYXRh
Lm9iamVjdFN0b3Jlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRhRGF0YSgpKTsKKyAg
ICByZXR1cm4gbWV0YURhdGE7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAyYTZmYjNiNzcyMTZlN2MzYzU2NjM5M2VkNmE1ZTU3
ZTgxNTZkYmQ0Li41YjExMjE1NWJhMDM2NzA4ZjJmNmMyNjI0NGNmMDhjM2I1NzY1MzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZW5D
b25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAgdm9pZCBkZWxldGVEYXRh
YmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCisgICAgdmlydHVhbCBJREJEYXRhYmFz
ZU1ldGFEYXRhIG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtX3ZlcnNpb247IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBlMDcyYTBmMzk1OWQ3MGQ1MWE1MGMyNmIxZWIyMTUyMGM1OTZlYjFmLi45YzNhMWMz
NTY0MWI5MDEyZjBkYjU1OTg3YTMxZjRlNDg4NmNjMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNs
YXNzIElEQktleVBhdGg7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U7CiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CitzdHJ1Y3QgSURCRGF0YWJhc2VN
ZXRhRGF0YTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApAQCAtNTIsNiArNTMsNyBA
QCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZQogcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZSgpIHsgfQogCisgICAgdmlydHVhbCBJREJEYXRhYmFzZU1ldGFE
YXRhIG1ldGFEYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRl
eCA1N2NkYjEyMTVhNDE1NzE4NmIzOWM2OWE2ZTcyMzk0NDJmN2QwNGE3Li5lOTY4ZjY0MTFkODgz
NGNhYjNiOWJmMDBjYjBkZjhkMDVkNzc0ZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00MiwxMCArNDIsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9
IElEQkN1cnNvcjo6TkVYVDsKIAotSURCSW5kZXg6OklEQkluZGV4KFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUs
IElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2VuZChiYWNrZW5kKQor
SURCSW5kZXg6OklEQkluZGV4KElEQkluZGV4TWV0YURhdGEgbWV0YURhdGEsIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0
U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YURhdGEobWV0
YURhdGEpCisgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fb2JqZWN0U3RvcmUob2Jq
ZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9kZWxl
dGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIEFTU0VSVChtX29iamVj
dFN0b3JlKTsKQEAgLTU5LDYgKzYxLDEwIEBAIElEQkluZGV4Ojp+SURCSW5kZXgoKQogUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgY29uc3QgU3Ry
aW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFD
RSgiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1
cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNSw2ICsxMTEsMTAgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXMKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdl
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpjb3VudCIp
OworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2Vu
ZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwogICAgIGlmIChlYykgewpAQCAtMTI2LDYgKzEzNiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKKyAgICBpZiAobV9k
ZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJp
bmcsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0xNzMsNiArMTg3LDEwIEBAIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXQiKTsKKyAgICBpZiAobV9k
ZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtl
eS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4OCw2ICsy
MDYsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleDo6Z2V0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIwNSw2ICsy
MjcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkluZGV4OjpnZXRLZXkiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxp
ZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTIyMCw2ICsyNDYsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWYKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0S2V5Iik7
CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBp
ZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5oCmluZGV4IGE5MGFjZTAzZGEwOTYzOWE1NzA4OGM0MTYzZGQwN2ZmZTI3ZTAx
OGIuLmI2ZDkxMTdjMDQyMTIyOGY2OWQyNjFhMWJkYjgzNGFlYTU3MzJjYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleVBh
dGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFEYXRhLmgi
CiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQyLDE4ICs0MywxOCBAQCBjbGFzcyBJREJPYmpl
Y3RTdG9yZTsKIAogY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgUmVmQ291bnRlZDxJREJJbmRleD4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBv
YmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQkluZGV4PiBjcmVhdGUoSURCSW5kZXhNZXRhRGF0YSBtZXRhRGF0YSwgUGFzc1Jl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBv
YmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNh
Y3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChtZXRhRGF0YSwg
YmFja2VuZCwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJJbmRl
eCgpOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9CisgICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21ldGFEYXRhLm5hbWU7IH0KICAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3Rv
cmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0
cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsg
fQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsg
fQotICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlF
bnRyeSgpOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVy
biBtX21ldGFEYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YURhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1
cm4gbV9tZXRhRGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlm
eSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nh
c3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04MCwxMiArODEsMTYgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1f
ZGVsZXRlZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKLSAgICBJREJJbmRleChQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNhY3Rpb24q
KTsKKyAgICBJREJJbmRleChJREJJbmRleE1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEludGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNhY3Rpb24qKTsKIAorICAg
IElEQkluZGV4TWV0YURhdGEgbV9tZXRhRGF0YTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVj
dFN0b3JlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKyAgICBi
b29sIG1fZGVsZXRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5j
cHAKaW5kZXggNmZjMzczMTdjYWE3ZTQ2MDQxNDg4MDYyOTQ4MzRmZThlNjAxZDdkMS4uMTk2NmYx
Njc2NjUwZTJkNjkyMTdhMThjNGQyYWQ1MGM3YjFmYjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0
YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogCkBAIC02OSw2ICs3MCwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBs
Ojp+SURCSW5kZXhCYWNrZW5kSW1wbCgpCiB7CiB9CiAKK0lEQkluZGV4TWV0YURhdGEgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6bWV0YURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBJREJJbmRleE1l
dGFEYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsKK30KKwog
dm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5cGVkRGlyZWN0aW9u
LCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4
QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IDIwZjM1
YzRmM2ZhMzlhZDA0YzE1MmI0NzRhYzhkMTcwM2EwNDVjZGUuLmEwZDUwY2RiODc4ZGFiYzQ4ZjJi
ZmQxMzUzMmZkZjBlNjJmMDFhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIklE
Qk1ldGFEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsNiArNjMsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKGNvbnN0IElEQktleSogaW5kZXhLZXks
IGNvbnN0IElEQktleSogcHJpbWFyeUtleSA9IDApOwogCiAgICAgLy8gSW1wbGVtZW50cyBJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2UuCisgICAgdmlydHVhbCBJREJJbmRleE1ldGFEYXRhIG1ldGFE
YXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsg
fQogICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9
CiAgICAgdmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJuIG1fdW5pcXVlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YURhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
ZDA5ZmUwMGNiNDE0OTgwNmM0ZjlkY2U3ZDAwOGJiZGExYTJmNzg1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YURhdGEuaApAQCAtMCww
ICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSURCTWV0YURhdGFfaAorI2RlZmluZSBJREJNZXRhRGF0YV9o
CisKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhOworc3RydWN0IElEQkluZGV4TWV0YURh
dGE7CisKK3N0cnVjdCBJREJEYXRhYmFzZU1ldGFEYXRhIHsKKyAgICBJREJEYXRhYmFzZU1ldGFE
YXRhKCkgeyB9CisgICAgSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgdmVyc2lvbikKKyAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgdmVy
c2lvbih2ZXJzaW9uKSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgdmVyc2lvbjsK
KworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQk9iamVjdFN0b3JlTWV0YURhdGE+IE9i
amVjdFN0b3JlTWFwOworICAgIE9iamVjdFN0b3JlTWFwIG9iamVjdFN0b3JlczsKK307CisKK3N0
cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhIHsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRh
KCkgeyB9CisgICAgSURCT2JqZWN0U3RvcmVNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICAgICAgOiBu
YW1lKG5hbWUpCisgICAgICAgICwga2V5UGF0aChrZXlQYXRoKQorICAgICAgICAsIGF1dG9JbmNy
ZW1lbnQoYXV0b0luY3JlbWVudCkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0
aCBrZXlQYXRoOworICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKworICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIElEQkluZGV4TWV0YURhdGE+IEluZGV4TWFwOworICAgIEluZGV4TWFwIGluZGV4
ZXM7Cit9OworCitzdHJ1Y3QgSURCSW5kZXhNZXRhRGF0YSB7CisgICAgSURCSW5kZXhNZXRhRGF0
YSgpIHsgfQorICAgIElEQkluZGV4TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgICAg
ICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgdW5p
cXVlKHVuaXF1ZSkKKyAgICAgICAgLCBtdWx0aUVudHJ5KG11bHRpRW50cnkpIHsgfQorICAgIFN0
cmluZyBuYW1lOworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBib29sIHVuaXF1ZTsKKyAg
ICBib29sIG11bHRpRW50cnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKworI2VuZGlmIC8vIElEQlRyYWNpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDZmZDdkNWQ2M2Jk
MTBlNGFjOWFhOWFjMDMzMTYyMzlkN2ZmYWQyNDcuLjFjZDUyM2I2NTEzNjY4ZTdkNzNmZDJiMWIy
ZTllZTQwOGVkNDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCSW5k
ZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKQEAgLTQ0LDkgKzQ1LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24g
PSBJREJDdXJzb3I6Ok5FWFQ7CiAKLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2VuZChpZGJPYmplY3RTdG9y
ZSkKK0lEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZU1ldGFEYXRh
IG1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRi
T2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YURh
dGEobWV0YURhdGEpCisgICAgLCBtX3ByZXZpb3VzTWV0YURhdGEobWV0YURhdGEpCisgICAgLCBt
X2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQorICAgICwgbV9kZWxldGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9uKTsKQEAgLTU3LDE5ICs2MSwyMyBAQCBJREJPYmplY3RTdG9y
ZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGlkYk9iagogU3RyaW5nIElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKIHsKICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpuYW1lIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+
bmFtZSgpOworICAgIHJldHVybiBtX21ldGFEYXRhLm5hbWU7CiB9CiAKIFBhc3NSZWZQdHI8SURC
QW55PiBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6a2V5UGF0aCIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgo
KTsKKyAgICByZXR1cm4gbV9tZXRhRGF0YS5rZXlQYXRoOwogfQogCiBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1fYmFja2Vu
ZC0+aW5kZXhOYW1lcygpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0g
RE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFEYXRh
OjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFEYXRhLmluZGV4ZXMuYmVnaW4o
KTsgaXQgIT0gbV9tZXRhRGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBpbmRleE5h
bWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7CisgICAgcmV0
dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBJREJUcmFuc2FjdGlvbiogSURCT2JqZWN0
U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKQEAgLTgxLDcgKzg5LDcgQEAgSURCVHJhbnNhY3Rp
b24qIElEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbigpIGNvbnN0CiBib29sIElEQk9iamVjdFN0
b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVu
dCgpOworICAgIHJldHVybiBtX21ldGFEYXRhLmF1dG9JbmNyZW1lbnQ7CiB9CiAKIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xMDQsNiArMTEyLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CisgICAgaWYgKG1fZGVs
ZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleSB8fCAoa2V5
LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE4LDYgKzEz
MCwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+
IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9y
ZTo6YWRkIik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xNDIsNiArMTU4LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZh
bHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09
IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE2Niw2ICsxODYsMTAgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpkZWxldGUiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7
CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAw
OwpAQCAtMTgzLDYgKzIwNywxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAg
aWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtl
eSB8fCAha2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjAwLDYgKzIyOCwxMCBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjbwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKKyAgICBpZiAo
bV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3Jl
YXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNsZWFyKHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAt
MjI2LDYgKzI1OCwxMSBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPAogUGFzc1JlZlB0cjxJREJJ
bmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5k
ZXgiKTsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVs
ZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgha2V5UGF0aC5p
c1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1NZTlRB
WF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0LDE2ICsyODEsMzEgQEAgUGFzc1JlZlB0
cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2UKIAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGlu
ZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVl
LCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NFUlQo
IWluZGV4QmFja2VuZCAhPSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBz
aG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgotICAg
IGlmICghaW5kZXhCYWNrZW5kKQorICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
UmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUoaW5kZXhCYWNrZW5kLnJl
bGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CisKKyAgICBJREJJbmRleE1ldGFE
YXRhIG1ldGFEYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVm
UHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YURhdGEsIGluZGV4QmFj
a2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhN
YXAuc2V0KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFEYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1l
dGFEYXRhKTsKKworICAgIC8vIE5lZWQgdG8gdXBkYXRlIGNhbm9uaWNhbCBtZXRhZGF0YSBpbiBJ
REJEYXRhYmFzZSBzbyBmdXR1cmUgY29waWVzIG9mIHRoaXMgc3RvcmUgaGF2ZSB0aGUgbmV3IGlu
ZGV4IG1ldGFkYXRhLgorICAgIElEQkRhdGFiYXNlTWV0YURhdGEmIGRhdGFiYXNlTWV0YURhdGEg
PSBtX3RyYW5zYWN0aW9uLT5kYigpLT5tZXRhRGF0YSgpOworICAgIElEQkRhdGFiYXNlTWV0YURh
dGE6Ok9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YURhdGEub2JqZWN0
U3RvcmVzLmZpbmQobV9tZXRhRGF0YS5uYW1lKTsKKyAgICBBU1NFUlQoaXQgIT0gZGF0YWJhc2VN
ZXRhRGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGEm
IG9iamVjdFN0b3JlTWV0YURhdGEgPSBpdC0+c2Vjb25kOworICAgIG9iamVjdFN0b3JlTWV0YURh
dGEuaW5kZXhlcy5zZXQobmFtZSwgbWV0YURhdGEpOworCiAgICAgcmV0dXJuIGluZGV4LnJlbGVh
c2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6aW5kZXgiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsK
ICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTI2NSwyMiArMzE3LDUwIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+
IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjCiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQg
PSBtX2JhY2tlbmQtPmluZGV4KG5hbWUsIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAh
PSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0
ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgotICAgIGlmICghaW5kZXhCYWNr
ZW5kKQorICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCSW5k
ZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlz
LCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpJbmRl
eE1hcDo6Y29uc3RfaXRlcmF0b3IgbWRpdCA9IG1fbWV0YURhdGEuaW5kZXhlcy5maW5kKG5hbWUp
OworICAgIEFTU0VSVChtZGl0ICE9IG1fbWV0YURhdGEuaW5kZXhlcy5lbmQoKSk7CisKKyAgICBS
ZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZGl0LT5zZWNvbmQsIGlu
ZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1f
aW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwog
fQogCiB2b2lkIElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNWZXJzaW9u
Q2hhbmdlKCkgfHwgbV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IG1fYmFja2VuZC0+ZGVsZXRlSW5kZXgobmFtZSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7CisgICAgaWYgKCFlYykgeworICAgICAgICBJREJJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2luZGV4TWFwLmZpbmQobmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2luZGV4TWFwLmVuZCgp
KSB7CisgICAgICAgICAgICBpdC0+c2Vjb25kLT5tYXJrRGVsZXRlZCgpOworICAgICAgICAgICAg
bV9pbmRleE1hcC5yZW1vdmUobmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9t
ZXRhRGF0YS5pbmRleGVzLmNvbnRhaW5zKG5hbWUpKTsKKyAgICAgICAgbV9tZXRhRGF0YS5pbmRl
eGVzLnJlbW92ZShuYW1lKTsKKworICAgICAgICAvLyBOZWVkIHRvIHVwZGF0ZSBjYW5vbmljYWwg
bWV0YWRhdGEgaW4gSURCRGF0YWJhc2Ugc28gZnV0dXJlIGNvcGllcyBvZiB0aGlzIHN0b3JlIGhh
dmUgdGhlIG5ldyBpbmRleCBtZXRhZGF0YS4KKyAgICAgICAgSURCRGF0YWJhc2VNZXRhRGF0YSYg
ZGF0YWJhc2VNZXRhRGF0YSA9IG1fdHJhbnNhY3Rpb24tPmRiKCktPm1ldGFEYXRhKCk7CisgICAg
ICAgIElEQkRhdGFiYXNlTWV0YURhdGE6Ok9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBtZGl0ID0g
ZGF0YWJhc2VNZXRhRGF0YS5vYmplY3RTdG9yZXMuZmluZChtX21ldGFEYXRhLm5hbWUpOworICAg
ICAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRhJiBvYmplY3RTdG9yZU1ldGFEYXRhID0gbWRpdC0+
c2Vjb25kOworICAgICAgICBvYmplY3RTdG9yZU1ldGFEYXRhLmluZGV4ZXMucmVtb3ZlKG5hbWUp
OworICAgIH0KIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsK
KyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGly
ZWN0aW9uU3RyaW5nLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMy
Nyw2ICs0MDcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOworICAgIGlmIChtX2RlbGV0
ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhp
cyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2UsIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5k
ZXggZTExZmJkMDgwZDJiZWQ5NzUxM2M3ODU3NjEyNDkwOGMwMjA3YmRmYi4uZGFiOTdjZmYxNzQ1
NDQ2YWE4NjlhMGRmM2FlOWNkMzUyMWYyYTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlS
YW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCkBAIC00OSw5ICs1MCw5IEBAIGNsYXNzIElEQkFueTsKIAogY2xh
c3MgSURCT2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJPYmplY3RTdG9yZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iamVjdFN0b3JlLCBJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IGNyZWF0ZShJREJPYmplY3RTdG9yZU1ldGFEYXRhIG1ldGFEYXRhLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJP
YmplY3RTdG9yZShpZGJPYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShtZXRhRGF0YSwgYmFja2VuZCwgdHJhbnNhY3Rp
b24pKTsKICAgICB9CiAgICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKQEAgLTk0LDE0ICs5NSwx
OSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgbWFya0Rl
bGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KICAgICB2b2lkIHRyYW5zYWN0aW9uRmluaXNo
ZWQoKTsKKyAgICB2b2lkIHJlc2V0TWV0YURhdGEoKSB7IG1fbWV0YURhdGEgPSBtX3ByZXZpb3Vz
TWV0YURhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURC
T2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmVNZXRhRGF0YSwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgcmVtb3Zl
VHJhbnNhY3Rpb25Gcm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElEQk9iamVjdFN0b3JlTWV0YURh
dGEgbV9tZXRhRGF0YTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRhIG1fcHJldmlvdXNNZXRh
RGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tl
bmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOworICAgIGJvb2wg
bV9kZWxldGVkOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4
PiA+IElEQkluZGV4TWFwOwogICAgIElEQkluZGV4TWFwIG1faW5kZXhNYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwCmluZGV4IGFjNDM4ODcwMWY5NzQ0NDkxYjdkYjFlYjk1MWI4OTU4ODFk
ZTJlNzcuLmVmNzIwYTRiYTYyZTdiNWZjMTEyMDg1MmEwMDQwYmE3NDMzZmEzNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC03NCw2ICs3NCwxNCBAQCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFj
a2luZ1N0bwogewogfQogCitJREJPYmplY3RTdG9yZU1ldGFEYXRhIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6Om1ldGFEYXRhKCkgY29uc3QKK3sKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRh
IG1ldGFEYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX2F1dG9JbmNyZW1lbnQpOworICAgIGZvciAo
SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1f
aW5kZXhlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWV0YURhdGEuaW5kZXhlcy5zZXQoaXQtPmZp
cnN0LCBpdC0+c2Vjb25kLT5tZXRhRGF0YSgpKTsKKyAgICByZXR1cm4gbWV0YURhdGE7Cit9CisK
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5k
ZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMg
PSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBh
NWRlN2U1ZDJkNjIzZGRlMGYwMGZjZmQ0ZTlhNmViM2YwODhjNjM5Li40ODJhYTgyNzYzYjI2MDlj
NjU3OTE3NjY1MzQwNDMzNDcyNmZiY2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGxfaAogCiAjaW5j
bHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC00MCw2ICs0MSw3IEBAIGNs
YXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbXBsOwog
Y2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhOwogCiBjbGFzcyBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsIDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZSB7CiBwdWJsaWM6CkBAIC02MSw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9p
ZCBzZXRJZChpbnQ2NF90IGlkKSB7IG1faWQgPSBpZDsgfQogCisgICAgdmlydHVhbCBJREJPYmpl
Y3RTdG9yZU1ldGFEYXRhIG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBmNWM3NDRiMTVh
NzcyYzc1YjAzNzJlZWM0YzIwYzkyM2UyZmRhOGMyLi4wY2E4Mjg3NTFlMzM0YmUxODIzZTQzMjVm
ZjJmNzYzODRhYTcxMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xNTAsMjUgKzE1MCwzNyBAQCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcAogICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKIAogICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlQmFja2VuZCA9IG1fYmFj
a2VuZC0+b2JqZWN0U3RvcmUobmFtZSwgZWMpOwotICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5k
KSB7Ci0gICAgICAgIEFTU0VSVChlYyk7CisgICAgQVNTRVJUKCFvYmplY3RTdG9yZUJhY2tlbmQg
IT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBhIHN0b3JlLCB3ZSBzaG91bGQgaGF2ZSBnb3R0
ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgorICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9iamVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CisK
KyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFEYXRhJiBtZXRhRGF0YSA9IG1fZGF0YWJhc2UtPm1l
dGFEYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRhRGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0
X2l0ZXJhdG9yIG1kaXQgPSBtZXRhRGF0YS5vYmplY3RTdG9yZXMuZmluZChuYW1lKTsKKyAgICBB
U1NFUlQobWRpdCAhPSBtZXRhRGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworCisgICAgUmVmUHRy
PElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWRp
dC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVjdFN0b3JlQ3Jl
YXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2b2lk
IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQo
IW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmpl
Y3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5hbWUs
IG9iamVjdFN0b3JlKTsKKyAgICBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3Rv
cmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKLSAg
ICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKKyAgICBJREJPYmplY3RTdG9yZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlTWFwLmZpbmQobmFtZSk7CisgICAgaWYgKGl0ICE9
IG1fb2JqZWN0U3RvcmVNYXAuZW5kKCkpIHsKKyAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIG1fb2JqZWN0U3RvcmVNYXAucmVt
b3ZlKG5hbWUpOworICAgICAgICBvYmplY3RTdG9yZS0+bWFya0RlbGV0ZWQoKTsKKyAgICAgICAg
bV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYWRkKG9iamVjdFN0b3JlKTsKKyAgICB9CiB9CiAKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmFib3J0KCkKQEAgLTIzMCw4ICsyNDIsMTEgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6b25BYm9ydCgpCiAgICAgICAgIHJlcXVlc3QtPmFib3J0KCk7CiAgICAgfQog
Ci0gICAgaWYgKG1fbW9kZSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpCisgICAg
aWYgKG1fbW9kZSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAg
bV9kYXRhYmFzZS0+Y2xlYXJWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odGhpcyk7CisgICAgICAg
IGZvciAoSURCT2JqZWN0U3RvcmVTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZUNsZWFu
dXBTZXQuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuZW5kKCk7ICsraXQp
CisgICAgICAgICAgICAoKml0KS0+cmVzZXRNZXRhRGF0YSgpOworICAgIH0KICAgICBjbG9zZU9w
ZW5DdXJzb3JzKCk7CiAKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKaW5kZXggMWNlYmU5YzE5M2Q5MjdiYzE1OTYyNjdlYjczNTY4YjcxZmI1
OWU3Mi4uY2E2NDNlNTZhY2M1ZWRhZDU4ODQwNDYzNThkZWJmZTQyY2ZhYWMyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIklEQk1ldGFEYXRh
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNjgsNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKICAgICBib29sIGlzRmluaXNoZWQoKSBjb25zdDsKKyAg
ICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJTSU9O
X0NIQU5HRTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3Q7CiAgICAgSURCRGF0
YWJhc2UqIGRiKCkgY29uc3Q7CkBAIC0xNDAsNiArMTQyLDkgQEAgcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3Rv
cmVNYXA7CiAgICAgSURCT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZU1hcDsKIAorICAgIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVTZXQ7
CisgICAgSURCT2JqZWN0U3RvcmVTZXQgbV9vYmplY3RTdG9yZUNsZWFudXBTZXQ7CisKICAgICBI
YXNoU2V0PElEQkN1cnNvcio+IG1fb3BlbkN1cnNvcnM7CiAKICAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTkyNzAyNzIxZTZiMTBlZTUx
MTViZGNjNWE0MzVkYzU5OGE1MWI4Zi4uZGEzYzRmM2M1NjU2ZWVhZjU1MTYwMDIxZTBiODU0NTNm
MTBjNmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQ4NCw2ICsxNDg0LDcgQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFEYXRhLmgnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IDk5MjA0Yjg4NmFiN2VjMWNmNGQyNGE1OTNjY2RjZDAyN2Q1NDk5MDEuLjUy
YzYxMThiZWMxMWRkM2ZjYmU3ZDYzM2ZlZWNiNTgxNDhkMTJmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTE4MSw2ICsxODEsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViSURCS2V5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UGF0aC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktleVJhbmdlLmgnLAorICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViSURCTWV0YURhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJREJPYmplY3RTdG9yZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQlRyYW5z
YWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MuaCcsCkBAIC01NTgsNiArNTU5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklE
QktleS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYklEQk1ldGFEYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJh
c2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5k
ZXggYjM5ODUzNDE2NTU0M2ExOTdhNjE3OTdkNTQ3NDlkYTg1ZTNhMzU2ZS4uNjk2ZjE2YzQ3Y2Uy
Y2I0ZmM5ZTY4NDlmMGY0M2E4MGJmMmRjZDg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIldlYklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDUsMTEgQEAgY2xhc3MgV2ViSURCRGF0
YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlKCkgeyB9CiAKKyAg
ICB2aXJ0dWFsIFdlYklEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGEoKSBjb25zdAorICAgIHsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2Vi
SURCRGF0YWJhc2VNZXRhRGF0YTo6Y3JlYXRlKCk7CisgICAgfQogICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIG5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0
YURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFEYXRhLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDJiMjI3NzQxOWUzZTBhZWNkNjA3MjQ1NzZhYzRmNjA3Y2Q4OWMxYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFE
YXRhLmgKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQk1ldGFEYXRhX2gK
KyNkZWZpbmUgV2ViSURCTWV0YURhdGFfaAorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZU93blB0ci5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCitu
YW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gY2xhc3MgVmVjdG9yOworY2xhc3MgU3RyaW5nOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJREJLZXlQYXRoOworc3RydWN0IElEQkRhdGFiYXNlTWV0YURhdGE7CitzdHJ1Y3Qg
SURCSW5kZXhNZXRhRGF0YTsKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFEYXRhOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSURCSW5kZXhNZXRhRGF0YTsKK2NsYXNzIFdl
YklEQktleVBhdGg7CitjbGFzcyBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOworCitjbGFzcyBX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJJREJEYXRhYmFzZU1ldGFEYXRhIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklEQkRhdGFiYXNlTWV0YURhdGEgY3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3Rv
cmVNZXRhRGF0YT4mIG9iamVjdF9zdG9yZXMpOworICAgIFdFQktJVF9FWFBPUlQgV2ViSURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBXZWJJREJEYXRhYmFzZU1ldGFEYXRhJik7CisKKyAgICBXRUJL
SVRfRVhQT1JUIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgdmVyc2lvbigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYklE
Qk9iamVjdFN0b3JlTWV0YURhdGE+IG9iamVjdFN0b3JlcygpIGNvbnN0OworCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgV2ViSURCRGF0YWJhc2VNZXRhRGF0YSgpOworICAgIFdlYklE
QkRhdGFiYXNlTWV0YURhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YSYpOwor
ICAgIH5XZWJJREJEYXRhYmFzZU1ldGFEYXRhKCk7CisgICAgV2ViSURCRGF0YWJhc2VNZXRhRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YURhdGEmKTsKKyAgICBv
cGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFEYXRhJigpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFEYXRhPiBtX3ByaXZhdGU7Cit9OworCitjbGFzcyBXZWJJREJPYmplY3RTdG9yZU1ldGFE
YXRhIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJPYmplY3RTdG9y
ZU1ldGFEYXRhIGNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBh
dGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJJbmRleE1ldGFE
YXRhPiYgaW5kZXhlcyk7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJPYmplY3RTdG9yZU1ldGFE
YXRhKGNvbnN0IFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGEmKTsKKworICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBh
dGgga2V5UGF0aCgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhdXRvSW5jcmVtZW50
KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8V2ViSURCSW5kZXhNZXRhRGF0
YT4gaW5kZXhlcygpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2Vi
SURCT2JqZWN0U3RvcmVNZXRhRGF0YSgpOworICAgIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGEo
Y29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhRGF0YSYpOworICAgIH5XZWJJREJPYmpl
Y3RTdG9yZU1ldGFEYXRhKCk7CisgICAgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSYgb3BlcmF0
b3I9KGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGEmKTsKKyAgICBvcGVyYXRv
ciBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhJigpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZU93blB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZU1ldGFEYXRhPiBtX3ByaXZhdGU7Cit9OworCitjbGFzcyBXZWJJREJJbmRleE1ldGFEYXRhIHsK
K3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJJbmRleE1ldGFEYXRhIGNy
ZWF0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVu
aXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYklEQkluZGV4TWV0
YURhdGEoY29uc3QgV2ViSURCSW5kZXhNZXRhRGF0YSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBX
ZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aCBr
ZXlQYXRoKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIHVuaXF1ZSgpIGNvbnN0Owor
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJJbmRleE1ldGFEYXRhKCk7CisgICAgV2ViSURCSW5k
ZXhNZXRhRGF0YShjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhJik7CisgICAgfldlYklE
QkluZGV4TWV0YURhdGEoKTsKKyAgICBXZWJJREJJbmRleE1ldGFEYXRhJiBvcGVyYXRvcj0oY29u
c3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YSYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNv
cmU6OklEQkluZGV4TWV0YURhdGEmKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBX
ZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQkluZGV4TWV0YURhdGE+IG1fcHJpdmF0ZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViSURCS2V5UGF0aF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKaW5kZXggNmU1MzU0OTlhMzhjNGE5MzUwOWE2ZTRmNTU2Y2Y5OGFjOGYyMDA3My4u
YjM1MGU3NmQ5MDAxNTgyMDc0NzdiYmViODlkNjU2MzU0OTg1ZWY4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJ
REJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1
ZGUgIklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZ0xpc3QuaCIKQEAgLTYwLDYgKzYxLDExIEBAIElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5Ojp+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoKQogewogfQogCitJREJEYXRhYmFzZU1ldGFE
YXRhIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRhRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViSURCRGF0YWJhc2UtPm1ldGFEYXRhKCk7Cit9CisKIFN0cmluZyBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJh
c2UtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IGI3OGFjNjk5MmNkY2ZmMTM4N2E5ZWMwOGIzODY4ZWI2
Y2ZjNDMzOTIuLjJjNjA4OTEyNTY5MDg0OGRlMDRhYWUxOThlNGY4YTZhZDdmNjA0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJJ
REJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZFByb3h5KCk7CiAK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGEoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
dmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJp
bmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCA0YmU0M2RjMTRkODE3ZDk1
OWFlZjU4YTE2YWVjZjQ4NWJjYjViNmJhLi43NWE3YTgyZjQxZmFmNTA5Y2IxODljNDhlZWZmYzNl
OTA0MzcxOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tz
UHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5o
IgorI2luY2x1ZGUgIldlYklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKQEAgLTUxLDYg
KzUzLDExIEBAIFdlYklEQkRhdGFiYXNlSW1wbDo6fldlYklEQkRhdGFiYXNlSW1wbCgpCiB7CiB9
CiAKK1dlYklEQkRhdGFiYXNlTWV0YURhdGEgV2ViSURCRGF0YWJhc2VJbXBsOjptZXRhRGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5tZXRhRGF0YSgpOworfQor
CiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBsOjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggOTY1NzFiYmU5YzFkOTZjYmQzZjljN2Qz
YWQ4MzE3OWI5NjE5M2RkOS4uYjAxYWIwOTJjNjM4NWE5NDlhN2ZkZGVjNWEyYTQ1MzE2MWNlZmVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIElEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNz
IFdlYklEQkRhdGFiYXNlTWV0YURhdGE7CiBjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsKIGNsYXNz
IFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXZWJJ
REJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlSW1wbCgpOwogCisgICAg
dmlydHVhbCBXZWJJREJEYXRhYmFzZU1ldGFEYXRhIG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNp
b24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1l
cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
TWV0YURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YURhdGEu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFkZjc2OGU0ZTZkMDQ0MmQ2MmQ1NDdiMjMwZDJmODg2YTZmNGQ2ODEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRh
RGF0YS5jcHAKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViSURCTWV0YURhdGEuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpjcmVh
dGUoKQoreworICAgIHJldHVybiBXZWJJREJEYXRhYmFzZU1ldGFEYXRhKElEQkRhdGFiYXNlTWV0
YURhdGEoKSk7Cit9CisKK1dlYklEQkRhdGFiYXNlTWV0YURhdGEgV2ViSURCRGF0YWJhc2VNZXRh
RGF0YTo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2ZXJz
aW9uLCBjb25zdCBXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YT4mIG9iamVjdFN0
b3JlcykKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFEYXRhIG1ldGFEYXRhOworICAgIG1ldGFEYXRh
Lm5hbWUgPSBuYW1lOworICAgIG1ldGFEYXRhLnZlcnNpb24gPSB2ZXJzaW9uOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVzLnNpemUoKTsgKytpKQorICAgICAgICBtZXRh
RGF0YS5vYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3Jlc1tpXS5uYW1lKCksIG9iamVjdFN0b3Jl
c1tpXSk7CisgICAgcmV0dXJuIFdlYklEQkRhdGFiYXNlTWV0YURhdGEobWV0YURhdGEpOworfQor
CitXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhKCkKKyAgICA6
IG1fcHJpdmF0ZShuZXcgSURCRGF0YWJhc2VNZXRhRGF0YSgpKQoreworfQorCitXZWJJREJEYXRh
YmFzZU1ldGFEYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFdlYklEQkRhdGFiYXNl
TWV0YURhdGEmIG90aGVyKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJEYXRhYmFzZU1ldGFEYXRh
KG90aGVyKSkKK3sKK30KKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6fldlYklEQkRhdGFiYXNl
TWV0YURhdGEoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKK30KKworV2ViU3RyaW5nIFdl
YklEQkRhdGFiYXNlTWV0YURhdGE6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUtPm5hbWU7Cit9CisKK1dlYlN0cmluZyBXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp2ZXJzaW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT52ZXJzaW9uOworfQorCitXZWJWZWN0
b3I8V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YT4gV2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b2Jq
ZWN0U3RvcmVzKCkgY29uc3QKK3sKKyAgICBzaXplX3QgY291bnQgPSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KG1fcHJpdmF0ZS0+b2JqZWN0U3RvcmVzLnNpemUoKSk7CisgICAgV2ViVmVjdG9yPFdlYklE
Qk9iamVjdFN0b3JlTWV0YURhdGE+IG9iamVjdFN0b3Jlcyhjb3VudCk7CisgICAgc2l6ZV90IGkg
PSAwOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhRGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9wcml2YXRlLT5vYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9w
cml2YXRlLT5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG9iamVjdFN0b3Jlc1tp
KytdID0gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmVzOworfQorCitXZWJJREJE
YXRhYmFzZU1ldGFEYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFdlYkNvcmU6OklE
QkRhdGFiYXNlTWV0YURhdGEmIG1ldGFkYXRhKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJEYXRh
YmFzZU1ldGFEYXRhKCkpCit7CisgICAgbV9wcml2YXRlLT5uYW1lID0gbWV0YWRhdGEubmFtZTsK
KyAgICBtX3ByaXZhdGUtPnZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uOworICAgIG1fcHJpdmF0
ZS0+b2JqZWN0U3RvcmVzID0gbWV0YWRhdGEub2JqZWN0U3RvcmVzOworfQorCitXZWJJREJEYXRh
YmFzZU1ldGFEYXRhJiBXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpvcGVyYXRvcj0oY29uc3QgV2Vi
Q29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YSYgbWV0YWRhdGEpCit7CisgICAgbV9wcml2YXRlLnJl
c2V0KG5ldyBJREJEYXRhYmFzZU1ldGFEYXRhKG1ldGFkYXRhKSk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCitXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJ
REJEYXRhYmFzZU1ldGFEYXRhJigpIGNvbnN0Cit7CisgICAgcmV0dXJuICoobV9wcml2YXRlLmdl
dCgpKTsKK30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSBXZWJJREJPYmplY3RTdG9yZU1l
dGFEYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRo
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJJbmRl
eE1ldGFEYXRhPiYgaW5kZXhlcykKK3sKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRhIG1ldGFE
YXRhOworICAgIG1ldGFEYXRhLm5hbWUgPSBuYW1lOworICAgIG1ldGFEYXRhLmtleVBhdGggPSBX
ZWJJREJLZXlQYXRoKGtleVBhdGgpOworICAgIG1ldGFEYXRhLmF1dG9JbmNyZW1lbnQgPSBhdXRv
SW5jcmVtZW50OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbWV0YURhdGEuaW5kZXhlcy5zZXQoaW5kZXhlc1tpXS5uYW1lKCksIGluZGV4
ZXNbaV0pOworICAgIHJldHVybiBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKG1ldGFEYXRhKTsK
K30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0
YSgpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQk9iamVjdFN0b3JlTWV0YURhdGEoKSkKK3sKK30K
KworV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YShj
b25zdCBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhJiBvdGhlcikKKyAgICA6IG1fcHJpdmF0ZShu
ZXcgSURCT2JqZWN0U3RvcmVNZXRhRGF0YShvdGhlcikpCit7Cit9CisKK1dlYklEQk9iamVjdFN0
b3JlTWV0YURhdGE6On5XZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKCkKK3sKKyAgICBtX3ByaXZh
dGUucmVzZXQoMCk7Cit9CisKK1dlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5uYW1lOworfQorCitXZWJJREJL
ZXlQYXRoIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OmtleVBhdGgoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJJREJLZXlQYXRoKG1fcHJpdmF0ZS0+a2V5UGF0aCk7Cit9CisKK2Jvb2wgV2Vi
SURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6YXV0b0luY3JlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+YXV0b0luY3JlbWVudDsKK30KKworV2ViVmVjdG9yPFdlYklEQkluZGV4
TWV0YURhdGE+IFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OmluZGV4ZXMoKSBjb25zdAorewor
ICAgIHNpemVfdCBjb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4obV9wcml2YXRlLT5pbmRleGVz
LnNpemUoKSk7CisgICAgV2ViVmVjdG9yPFdlYklEQkluZGV4TWV0YURhdGE+IGluZGV4ZXMoY291
bnQpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YURhdGE6
OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcHJpdmF0ZS0+aW5kZXhlcy5iZWdpbigp
OyBpdCAhPSBtX3ByaXZhdGUtPmluZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGluZGV4ZXNb
aSsrXSA9IGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGluZGV4ZXM7Cit9CisKK1dlYklEQk9iamVj
dFN0b3JlTWV0YURhdGE6OldlYklEQk9iamVjdFN0b3JlTWV0YURhdGEoY29uc3QgV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVNZXRhRGF0YSYgbWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUobmV3IElE
Qk9iamVjdFN0b3JlTWV0YURhdGEoKSkKK3sKKyAgICBtX3ByaXZhdGUtPm5hbWUgPSBtZXRhZGF0
YS5uYW1lOworICAgIG1fcHJpdmF0ZS0+a2V5UGF0aCA9IG1ldGFkYXRhLmtleVBhdGg7CisgICAg
bV9wcml2YXRlLT5hdXRvSW5jcmVtZW50ID0gbWV0YWRhdGEuYXV0b0luY3JlbWVudDsKKyAgICBt
X3ByaXZhdGUtPmluZGV4ZXMgPSBtZXRhZGF0YS5pbmRleGVzOworfQorCitXZWJJREJPYmplY3RT
dG9yZU1ldGFEYXRhJiBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpvcGVyYXRvcj0oY29uc3Qg
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhRGF0YSYgbWV0YWRhdGEpCit7CisgICAgbV9wcml2
YXRlLnJlc2V0KG5ldyBJREJPYmplY3RTdG9yZU1ldGFEYXRhKG1ldGFkYXRhKSk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCitXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpvcGVyYXRvciBjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhJigpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICoobV9wcml2YXRlLmdldCgpKTsKK30KKworV2ViSURCSW5kZXhNZXRhRGF0YSBXZWJJREJJbmRl
eE1ldGFEYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQoreworICAgIElEQklu
ZGV4TWV0YURhdGEgbWV0YURhdGE7CisgICAgbWV0YURhdGEubmFtZSA9IG5hbWU7CisgICAgbWV0
YURhdGEua2V5UGF0aCA9IGtleVBhdGg7CisgICAgbWV0YURhdGEudW5pcXVlID0gdW5pcXVlOwor
ICAgIG1ldGFEYXRhLm11bHRpRW50cnkgPSBtdWx0aUVudHJ5OworICAgIHJldHVybiBXZWJJREJJ
bmRleE1ldGFEYXRhKG1ldGFEYXRhKTsKK30KKworV2ViSURCSW5kZXhNZXRhRGF0YTo6V2ViSURC
SW5kZXhNZXRhRGF0YSgpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkluZGV4TWV0YURhdGEoKSkK
K3sKK30KKworV2ViSURCSW5kZXhNZXRhRGF0YTo6V2ViSURCSW5kZXhNZXRhRGF0YShjb25zdCBX
ZWJJREJJbmRleE1ldGFEYXRhJiBvdGhlcikKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCSW5kZXhN
ZXRhRGF0YShvdGhlcikpCit7Cit9CisKK1dlYklEQkluZGV4TWV0YURhdGE6On5XZWJJREJJbmRl
eE1ldGFEYXRhKCkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQoMCk7Cit9CisKK1dlYlN0cmluZyBX
ZWJJREJJbmRleE1ldGFEYXRhOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5uYW1lOworfQorCitXZWJJREJLZXlQYXRoIFdlYklEQkluZGV4TWV0YURhdGE6OmtleVBhdGgo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fcHJpdmF0ZS0+a2V5UGF0aCk7
Cit9CisKK2Jvb2wgV2ViSURCSW5kZXhNZXRhRGF0YTo6dW5pcXVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT51bmlxdWU7Cit9CisKK2Jvb2wgV2ViSURCSW5kZXhNZXRhRGF0YTo6
bXVsdGlFbnRyeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bXVsdGlFbnRyeTsK
K30KKworCitXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJREJJbmRleE1ldGFEYXRhKGNvbnN0IFdl
YkNvcmU6OklEQkluZGV4TWV0YURhdGEmIG1ldGFkYXRhKQorICAgIDogbV9wcml2YXRlKG5ldyBJ
REJJbmRleE1ldGFEYXRhKCkpCit7CisgICAgbV9wcml2YXRlLT5uYW1lID0gbWV0YWRhdGEubmFt
ZTsKKyAgICBtX3ByaXZhdGUtPmtleVBhdGggPSBtZXRhZGF0YS5rZXlQYXRoOworICAgIG1fcHJp
dmF0ZS0+dW5pcXVlID0gbWV0YWRhdGEudW5pcXVlOworICAgIG1fcHJpdmF0ZS0+bXVsdGlFbnRy
eSA9IG1ldGFkYXRhLm11bHRpRW50cnk7Cit9CisKK1dlYklEQkluZGV4TWV0YURhdGEmIFdlYklE
QkluZGV4TWV0YURhdGE6Om9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRh
JiBtZXRhZGF0YSkKK3sKKyAgICBtX3ByaXZhdGUucmVzZXQobmV3IElEQkluZGV4TWV0YURhdGEo
bWV0YWRhdGEpKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYklEQkluZGV4TWV0YURhdGE6
Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YURhdGEmKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gKihtX3ByaXZhdGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI5OWIyODc0ZjJj
MmJmZTVhMGFhYzNhMGViMzdiMWUxYjJmMGJjNWEuLmMxNDUxOGNlNzg1MWYzY2E5YTZmOWQ0Yzcz
Y2M4NGRlODA2YWI4ZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNi0wNyAgSm9zaHVh
IEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25hcHNo
b3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2RlbGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanM6IEFkZGVkLgorICAgICAgICAo
dGVzdCk6CisgICAgICAgIChvcGVuRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzKToKKyAg
ICAgICAgKG9wZW5EYXRhYmFzZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL21ldGFkYXRhLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZmlyc3RP
cGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUp
OgorICAgICAgICAoZmlyc3RPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJz
dE9wZW4pOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9u
c3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5v
bnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRPcGVuKToKKyAgICAgICAgKHRoaXJkT3Blbi5y
ZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmFib3J0KToKKyAgICAg
ICAgKHRoaXJkT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuKToK
KyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3Mu
dHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAoZm91cnRoT3Blbik6CisgICAgICAgIChjaGVja1N0YXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzOgor
ICAgICAgICAoYWRkUmVtb3ZlSURCT2JqZWN0cyk6CisgICAgICAgIChhZGRSZW1vdmVBZGRJREJP
YmplY3RzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3Mt
ZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA2LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE5Njk0
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmpl
Y3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQt
b2JqZWN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2NmFmZTNhMDhhZmI0OTE3YWQzMzY0
OTM1ODMyY2MxZTIxMjU5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4NyBAQAor
VGVzdCB0aGF0IEluZGV4ZWREQiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQgdGhyb3cg
ZXhjZXB0aW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0g
c2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVk
REIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKQorCitvcGVuRGF0YWJhc2UoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5h
bWUpCitjb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uLnNl
dFZlcnNpb24oJzEnKQorCitkZWxldGVkU3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9iamVjdFN0
b3JlKCdkZWxldGVkU3RvcmUnKQorc3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZScpCitkZWxldGVkSW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnZGVsZXRlZEluZGV4
JywgJ3BhdGgnKQorCitjb25uZWN0aW9uLmRlbGV0ZU9iamVjdFN0b3JlKCdkZWxldGVkU3RvcmUn
KQorc3RvcmUuZGVsZXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcpCisKK0V4cGVjdGluZyBleGNlcHRp
b24gZnJvbSBkZWxldGVkU3RvcmUucHV0KDAsIDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFt
ZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRl
ZFN0b3JlLmFkZCgwLCAwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRT
dGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5kZWxldGUo
MCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuZ2V0KDApCitQQVNTIEV4Y2VwdGlv
biB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9u
IGZyb20gZGVsZXRlZFN0b3JlLmNsZWFyKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlz
ICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3Rv
cmUub3BlbkN1cnNvcigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlz
IERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0
YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmNyZWF0ZUlu
ZGV4KCduYW1lJywgJ3BhdGgnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFs
aWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5pbmRl
eCgnbmFtZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJy
b3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmRlbGV0ZUluZGV4KCdu
YW1lJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuY291bnQoKQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFU
RV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4Lm9wZW5DdXJzb3IoKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BB
U1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IGRlbGV0ZWRJbmRleC5vcGVuS2V5Q3Vyc29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1l
IGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVk
SW5kZXguZ2V0KDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRl
RXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4LmdldEtleSgwKQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5W
QUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0
aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRJbmRleC5jb3VudCgpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgor
UEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTNmNTJmNTA5YzU0
MGM0YjcwY2JiNDhhMjE5YjNmYThkMWE3MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGVs
ZXRlZC1vYmplY3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0MzZkNDc1YWE0MjdiYWNmYWZmMTM0N2EzNjQxZjg1Zjk3OGQyNzgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4OCBAQAorVGVzdCBJbmRleGVkREIgZGF0YWJhc2UgbWV0
YWRhdGEgbXV0YXRpb24vc25hcHNob3R0aW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8
fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWRE
QjsKKworZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZQorcmVxdWVzdCA9IGluZGV4ZWRE
Qi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisKK2ZpcnN0T3BlbigpOgorcmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24xID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3Qg
PSBjb25uZWN0aW9uMS5zZXRWZXJzaW9uKCcxJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nv
bm5lY3Rpb24xc3RvcmUxID0gY29ubmVjdGlvbjEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMScp
Citjb25uZWN0aW9uMXN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ3BhdGgnKQorUEFTUyBj
b25uZWN0aW9uMS52ZXJzaW9uIGlzICIxIgorUEFTUyBjb25uZWN0aW9uMS5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCBpcyAxCitQQVNTIGNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3Ro
IGlzIDEKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBj
bG9zZQorY29ubmVjdGlvbjEuY2xvc2UoKQorCitzZWNvbmRPcGVuKCk6CityZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbjIgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVz
dCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAor
Y29ubmVjdGlvbjIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpCitjb25uZWN0aW9uMnN0b3Jl
MSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjJzdG9yZTEuY3JlYXRl
SW5kZXgoJ2luZGV4MicsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBpcyAiMiIK
K1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25u
ZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCitDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24yLmNsb3NlKCkK
KwordGhpcmRPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVj
dGlvbjMgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZlcnNpb24o
JzMnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjMuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlMycpCitjb25uZWN0aW9uM3N0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZTEnKQorY29ubmVjdGlvbjNzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4MycsICdwYXRoJykKK1BB
U1MgY29ubmVjdGlvbjMudmVyc2lvbiBpcyAiMyIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCBpcyAzCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0ZWQgb24g
YWJvcnQKK3RyYW5zLmFib3J0KCkKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBz
bmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjMuY2xvc2UoKQorCitmb3VydGhPcGVuKCk6
CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbjQgPSByZXF1ZXN0
LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24oJzQnKQordHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjQuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlNCcpCitj
b25uZWN0aW9uNHN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlv
bjRzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4NCcsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjQu
dmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgg
aXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAzCitDb25u
ZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5l
Y3Rpb240LmNsb3NlKCkKKworY2hlY2tTdGF0ZSgpOgorUEFTUyBjb25uZWN0aW9uMS52ZXJzaW9u
IGlzICIxIgorUEFTUyBjb25uZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQ
QVNTIGNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKKworUEFTUyBjb25u
ZWN0aW9uMi52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0aW9uMi5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlz
IDIKKworUEFTUyBjb25uZWN0aW9uMy52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0aW9uMy5v
YmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24zc3RvcmUxLmluZGV4
TmFtZXMubGVuZ3RoIGlzIDIKKworUEFTUyBjb25uZWN0aW9uNC52ZXJzaW9uIGlzICI0IgorUEFT
UyBjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitQQVNTIGNvbm5lY3Rp
b240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MmNmZTU5ZWM0NWVjMDc0ZTgzZWIzOGJm
NThiZjJiMWI4NTJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tZXRhZGF0YS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21ldGFkYXRhLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWQtb2JqZWN0cy5qcyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzk3YTA1YWJmY2M0MWI3MmRiZWRkYTVhMTIzNWEyY2NlZDA5NTAyNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVj
dHMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGlt
cG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7
CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0
IHRoYXQgSW5kZXhlZERCIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB0aHJvdyBleGNl
cHRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVz
KCk7CisgICAgZXZhbEFuZExvZygiZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZSIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkRhdGFiYXNlOworfQorCitmdW5jdGlvbiBvcGVuRGF0
YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlbkRhdGFiYXNlKCk6Iik7
CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5l
Y3Rpb24uc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKKworICAgICAgICAgICAg
ZGVidWcoIiIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlZFN0b3JlID0gY29ubmVj
dGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlZEluZGV4ID0gc3RvcmUuY3JlYXRlSW5k
ZXgoJ2RlbGV0ZWRJbmRleCcsICdwYXRoJykiKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbi5kZWxldGVPYmplY3RTdG9yZSgnZGVs
ZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4
KCdkZWxldGVkSW5kZXgnKSIpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUucHV0KDAsIDApIiwgIkRPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAg
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuYWRkKDAsIDApIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7
CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZGVsZXRl
KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJy
b3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUu
Z2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRl
RXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3Rv
cmUuY2xlYXIoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRT
dGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRl
ZFN0b3JlLm9wZW5DdXJzb3IoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAi
J0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlv
bigiZGVsZXRlZFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ3BhdGgnKSIsICJET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAg
ICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmluZGV4KCduYW1lJykiLCAi
RE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsK
KyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRlbGV0ZWRTdG9yZS5kZWxldGVJ
bmRleCgnbmFtZScpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxp
ZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxl
dGVkU3RvcmUuY291bnQoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0lu
dmFsaWRTdGF0ZUVycm9yJyIpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbkN1cnNvcigpIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7Cisg
ICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbktleUN1
cnNvcigpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRl
RXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5k
ZXguZ2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0
YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVk
SW5kZXguZ2V0S2V5KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52
YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
ZWxldGVkSW5kZXguY291bnQoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAi
J0ludmFsaWRTdGF0ZUVycm9yJyIpOworCisgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5l
eHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZmlu
aXNoSlNUZXN0OworICAgICAgICB9OworICAgIH07Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJlYzNlZWNmMDAwN2VlYzQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRh
LmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZyIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxB
bmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUiKTsKKyAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rpb24gZmlyc3RPcGVuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSByZXF1ZXN0LnJlc3VsdCIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZh
bEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xc3RvcmUxLmNyZWF0
ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsK
KworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25kT3BlbigpOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQiKTsK
KyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzIn
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUxLmNyZWF0
ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsK
KworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRPcGVuKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlbigpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZlcnNpb24oJzMnKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUx
JykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUlu
ZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIzIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
OworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRoT3BlbigpOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0
ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsK
KyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBmb3VydGhPcGVuKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24o
JzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxLmNy
ZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMi
KTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0
ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5j
bG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZSgpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjaGVja1N0YXRlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3RhdGUoKToiKTsKKworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIy
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgi
LCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29u
bmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjNzdG9y
ZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFz
aWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWJhc2ljcy5qcwppbmRleCA4ZmE3MDE2MmI4MWI5ZjFlN2EyNmExMTQ1YTQwODRhZDdkMDQ4
NGZkLi4zYjNiNzU0YzllYjE5ZmU0OGVlMGEyOTk5YzU5YmNmMDFjZTcxNTVmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFz
aWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFu
c2FjdGlvbi1iYXNpY3MuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gYWRkUmVtb3ZlSURC
T2JqZWN0cygpCiAgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVh
dGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwogCiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRl
T2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRl
SW5kZXgoJ2luZGV4RmFpbCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUu
ZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CiAKICAgICB0cmFucy5hYm9ydCgpOwogfQpAQCAt
NzQsNyArNzQsNyBAQCBmdW5jdGlvbiBhZGRSZW1vdmVBZGRJREJPYmplY3RzKCkKICAgICB2YXIg
aW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwn
LCAneCcpIik7CiAKICAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVG
YWlsJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJyki
KTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhG
YWlsJykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVF
cnJvciciKTsKIAogICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7CiAgICAgdmFyIGluZGV4ID0gZXZhbEFu
ZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggNWZjMjUxNTU1ZTdjZjkwZjU1ZDJlZGNiNTVmZDY1
NDAyZDMyY2NiZS4uNTkyMDZkOWFiMjgwNWUzNzM2ZDY4YjEyZmY0NjM5Y2JhZjgyMWZjZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCwxMCBAQCBQQVNTIHRyYW5zIGlz
IG5vbi1udWxsLgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVs
bCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIGRiLmRlbGV0
ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKQotc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcp
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcp
CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCiAKIHRl
c3RTZXRWZXJzaW9uQWJvcnQyKCk6CiBQQVNTIHNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyBpcyBb
XQpAQCAtMzMsNyArMzYsMTAgQEAgUEFTUyB0cmFucyBpcyBub24tbnVsbC4KIHN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpCiBpbmRleCA9IHN0b3JlLmNyZWF0
ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpCiBkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWls
JykKLXN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIHN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRo
cm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1Mg
ZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmVGYWlsJywgbnVsbCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFp
bCcsICd4JykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146420</attachid>
            <date>2012-06-07 17:01:32 -0700</date>
            <delta_ts>2012-06-08 11:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120607170131.patch</filename>
            <type>text/plain</type>
            <size>88562</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NjNDUxNjNiNjgxODM4
NDU4NDcwYjM2MzRhZTdjYzJjMjA4MWY4MC4uOWE5MjdlZjdhYTE4ODUwMWU4ZDg3N2M0OWY5MDMy
ZTA1MWU4NjFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wNi0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25h
cHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFn
ZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbGVhclZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAgIChJREJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWV0YURhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OklE
QkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpt
YXJrRGVsZXRlZCk6CisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJJbmRl
eEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhRGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhRGF0YTo6SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChJREJEYXRhYmFzZU1l
dGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGE6OklEQk9i
amVjdFN0b3JlTWV0YURhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVNZXRhRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhOjpJREJJbmRleE1ldGFEYXRhKToKKyAg
ICAgICAgKElEQkluZGV4TWV0YURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjptYXJrRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhRGF0YSk6CisgICAgICAgIChJREJPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRh
RGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKElEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMDcgIFJheW1l
cyBLaG91cnkgIDxyYXltZXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluY29ycmVjdCByZWN0
LWJhc2VkIGhpdC10ZXN0IHJlc3VsdCBmb3IgY3VsbGVkLWlubGluZSBlbGVtZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAwNzVlOTk2YzZkYWRkMmVlNWY4NjI5ODk1ZGYxOWFhMDlj
NWU0MWY0Li45ZDljYzAxYzFlNjM2YWE0MTAzOWZkNTg1YzIxNDM5ODQyYjIyODk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTA2LTA3ICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFwc2hv
dCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
RGF0YWJhc2U6Om1ldGFEYXRhKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCTWV0YURhdGEuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYklEQk9iamVjdFN0b3JlTWV0YURh
dGEpOgorICAgICAgICAoV2ViSURCSW5kZXhNZXRhRGF0YSk6CisgICAgICAgICogc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNr
ZW5kUHJveHk6Om1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURCTWV0YURhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRh
dGFiYXNlTWV0YURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNl
TWV0YURhdGE6OldlYklEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJEYXRhYmFzZU1ldGFEYXRhOjp+V2ViSURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YURhdGE6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp2ZXJzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
RGF0YWJhc2VNZXRhRGF0YTo6b2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
RGF0YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0
YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjpXZWJJREJPYmpl
Y3RTdG9yZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRh
RGF0YTo6fldlYklEQk9iamVjdFN0b3JlTWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJPYmplY3RTdG9yZU1ldGFEYXRhOjpuYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YTo6a2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVj
dFN0b3JlTWV0YURhdGE6OmF1dG9JbmNyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJP
YmplY3RTdG9yZU1ldGFEYXRhOjppbmRleGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVN
ZXRhRGF0YSYpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJREJJbmRleE1ldGFE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6fldlYklEQkluZGV4
TWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFEYXRhOjpuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhRGF0YTo6a2V5UGF0aCk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkluZGV4TWV0YURhdGE6OnVuaXF1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQkluZGV4TWV0YURhdGE6Om11bHRpRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJJbmRleE1ldGFEYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRl
eE1ldGFEYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhJik6CisK
IDIwMTItMDYtMDcgIERhbmllbCBFcmF0ICA8ZGVyYXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IEFkZCBzZXR0aW5nIHRvIGVuYWJsZSBzdWJwaXhlbC1wb3NpdGlvbmVkIHRleHQgb24gTGludXgu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
aW5kZXggZTFmNDRjZDUwNjBhNWM1ODAxY2RhMGY0ZWY5MmE1MGEwMmNlNzI2Mi4uOWI3ZGI2YTQw
YTBiNTExMTdmZTcxZTQxNDRhY2IzOGE4Y2E4ODIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjUsNiArNjUsNyBAQCBJREJE
YXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZQogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBv
YmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJl
bWVudCgpOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX21ldGFEYXRhID0gbV9iYWNrZW5kLT5tZXRhRGF0YSgp
OwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKQEAgLTc3LDEyICs3OCwyMyBAQCB2
b2lkIElEQkRhdGFiYXNlOjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQogewogICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisgICAg
bV9tZXRhRGF0YSA9IG1fYmFja2VuZC0+bWV0YURhdGEoKTsKIH0KIAogdm9pZCBJREJEYXRhYmFz
ZTo6Y2xlYXJWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogewogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb24sIG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
biA9IDA7CisgICAgbV9tZXRhRGF0YSA9IG1fYmFja2VuZC0+bWV0YURhdGEoKTsKK30KKworUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNv
bnN0Cit7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmb3IgKElEQkRhdGFiYXNlTWV0YURhdGE6Ok9iamVj
dFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YURhdGEub2JqZWN0U3RvcmVzLmJl
Z2luKCk7IGl0ICE9IG1fbWV0YURhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQorICAgICAg
ICBvYmplY3RTdG9yZU5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBvYmplY3RTdG9yZU5h
bWVzLT5zb3J0KCk7CisgICAgcmV0dXJuIG9iamVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQog
CiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zLCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTEyMiw3ICsxMzQsMTAgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28K
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLnJl
bGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVj
dFN0b3JlTWV0YURhdGEgbWV0YURhdGEobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7Cisg
ICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpj
cmVhdGUobWV0YURhdGEsIG9iamVjdFN0b3JlQmFja2VuZC5yZWxlYXNlKCksIG1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBtX21ldGFEYXRhLm9iamVjdFN0b3Jlcy5zZXQo
bmFtZSwgbWV0YURhdGEpOworCiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVj
dFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3Jl
LnJlbGVhc2UoKTsKIH0KQEAgLTEzNSw3ICsxNTAsMTAgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICB9CiAKICAgICBtX2JhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsIG1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgIGlmICghZWMpIHsKKyAgICAg
ICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRlZChuYW1lKTsK
KyAgICAgICAgbV9tZXRhRGF0YS5vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOworICAgIH0KIH0K
IAogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZl
cnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJz
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDY2NTYzNTJmMzYxODcxZTRjZmEzZDZmN2M1YjlkNzQ0
ODAyNWYyNzguLjBmYmM2MmRmNzA0ZTkwZWM3N2FlZmY1ZGUxNzE1MmE0ZTAyMDJjMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTU3LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24qKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURM
Ci0gICAgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQot
ICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT52ZXJzaW9uKCk7
IH0KLSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPm9iamVjdFN0b3JlTmFtZXMoKTsgfQorICAgIFN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YS5uYW1lOyB9CisgICAgU3RyaW5nIHZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX21ldGFEYXRhLnZlcnNpb247IH0KKyAgICBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIC8vIEZJWE1F
OiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgog
ICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3Jl
KG5hbWUsIERpY3Rpb25hcnkoKSwgZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdDsKIAogICAgIHZvaWQgb3BlbigpOworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YURh
dGEmIG1ldGFEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YTsgfQogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpAQCAtMTAzLDYgKzEwNSw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKIAorICAgIElE
QkRhdGFiYXNlTWV0YURhdGEgbV9tZXRhRGF0YTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzYjI5
NzMxNTgzOTI5NjEzZDFhMjJmZTkyZjg4NDlkODMyODJiMTZhLi4xZTM4ZjA2ZDFhYzk4YjM0NjQ4
YTBiMjgyNTRiZjA4NGQwODg4MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTM0LDYg
KzEzNCwxNCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6YmFja2luZ1N0b3JlKCkgY29uc3QKICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmU7CiB9
CiAKK0lEQkRhdGFiYXNlTWV0YURhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YURhdGEo
KSBjb25zdAoreworICAgIElEQkRhdGFiYXNlTWV0YURhdGEgbWV0YURhdGEobV9uYW1lLCBtX3Zl
cnNpb24pOworICAgIGZvciAoT2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9v
YmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisg
ICAgICAgIG1ldGFEYXRhLm9iamVjdFN0b3Jlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5t
ZXRhRGF0YSgpKTsKKyAgICByZXR1cm4gbWV0YURhdGE7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0
CiB7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCAyYTZmYjNiNzcyMTZlN2Mz
YzU2NjM5M2VkNmE1ZTU3ZTgxNTZkYmQ0Li41YjExMjE1NWJhMDM2NzA4ZjJmNmMyNjI0NGNmMDhj
M2I1NzY1MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAgICAg
dm9pZCBkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCisgICAgdmly
dHVhbCBJREJEYXRhYmFzZU1ldGFEYXRhIG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBT
dHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1YWwgU3RyaW5n
IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCBlMDcyYTBmMzk1OWQ3MGQ1MWE1MGMyNmIxZWIyMTUyMGM1
OTZlYjFmLi45YzNhMWMzNTY0MWI5MDEyZjBkYjU1OTg3YTMxZjRlNDg4NmNjMTE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFz
ZUNhbGxiYWNrczsKIGNsYXNzIElEQktleVBhdGg7CiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CitzdHJ1
Y3QgSURCRGF0YWJhc2VNZXRhRGF0YTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIApA
QCAtNTIsNiArNTMsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZQogcHVibGljOgogICAgIHZp
cnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSgpIHsgfQogCisgICAgdmlydHVhbCBJ
REJEYXRhYmFzZU1ldGFEYXRhIG1ldGFEYXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVO
YW1lcygpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmNwcAppbmRleCA1N2NkYjEyMTVhNDE1NzE4NmIzOWM2OWE2ZTcyMzk0NDJmN2QwNGE3
Li41MWQ5NmM2YTIxOTAwNjM3NTNlNDlmMjJmNDU4ZGZiZWQxZTk1MDdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC00MiwxMCArNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVm
YXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCSW5kZXg6OklEQkluZGV4KFBh
c3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9y
ZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFj
a2VuZChiYWNrZW5kKQorSURCSW5kZXg6OklEQkluZGV4KGNvbnN0IElEQkluZGV4TWV0YURhdGEm
IG1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwg
SURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CisgICAgOiBtX21ldGFEYXRhKG1ldGFEYXRhKQorICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAg
ICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFu
c2FjdGlvbikKKyAgICAsIG1fZGVsZXRlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5k
KTsKICAgICBBU1NFUlQobV9vYmplY3RTdG9yZSk7CkBAIC01OSw2ICs2MSwxMCBAQCBJREJJbmRl
eDo6fklEQkluZGV4KCkKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpvcGVuQ3Vyc29yIik7CisgICAgaWYg
KG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0
cmluZywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDUsNiArMTEx
LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleDo6Y291bnQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5z
YWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTEyNiw2ICsxMzYsMTAg
QEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5k
ZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5n
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yIik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KIAogICAgIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9E
aXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtMTczLDYgKzE4
NywxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRl
eDo6Z2V0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xODgsNiArMjA2LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmdldCIpOworICAgIGlmIChtX2Rl
bGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKCFrZXlSYW5nZSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0yMDUsNiArMjI3LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0S2V5Iik7CisgICAgaWYgKG1fZGVsZXRl
ZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5
cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMjAsNiArMjQ2LDEw
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFD
RSgiSURCSW5kZXg6OmdldEtleSIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKCFrZXlSYW5nZSkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAppbmRleCBhOTBhY2UwM2RhMDk2Mzlh
NTcwODhjNDE2M2RkMDdmZmUyN2UwMThiLi5kMmI2ZTNmZjgwNTcyNWRkNTYzNWNlYTMzN2RlYmEx
M2Y5ZmJmNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNp
bmNsdWRlICJJREJNZXRhRGF0YS5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQyLDE4ICs0NCwxOCBAQCBjbGFzcyBJREJPYmplY3RTdG9y
ZTsKIAogY2xhc3MgSURCSW5kZXggOiBwdWJsaWMgUmVmQ291bnRlZDxJREJJbmRleD4gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkluZGV4PiBjcmVhdGUoUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQkluZGV4PiBjcmVhdGUoY29uc3QgSURCSW5kZXhNZXRhRGF0YSYgbWV0YURhdGEsIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSog
b2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXgoYmFja2VuZCwgb2JqZWN0U3RvcmUsIHRyYW5z
YWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXgobWV0YURhdGEs
IGJhY2tlbmQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOwogICAgIH0KICAgICB+SURCSW5k
ZXgoKTsKIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURMCi0gICAgU3RyaW5nIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsgfQotICAgIElEQk9iamVjdFN0b3JlKiBvYmpl
Y3RTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmUuZ2V0KCk7IH0KLSAgICBQYXNz
UmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0
aCgpOyB9Ci0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnVuaXF1
ZSgpOyB9Ci0gICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5t
dWx0aUVudHJ5KCk7IH0KKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YURh
dGEubmFtZTsgfQorICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZTsgfQorICAgIFBhc3NSZWZQdHI8SURCQW55PiBr
ZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YS5rZXlQYXRoOyB9CisgICAgYm9vbCB1
bmlxdWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFEYXRhLnVuaXF1ZTsgfQorICAgIGJvb2wgbXVs
dGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YURhdGEubXVsdGlFbnRyeTsgfQogCiAgICAg
Ly8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5u
ZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBvcGVuQ3Vy
c29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4oMCksIGVjKTsgfQpAQCAtODAs
MTIgKzgyLDE2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGdldEtleShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2
b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CisKIHByaXZhdGU6Ci0gICAg
SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RT
dG9yZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRh
RGF0YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiwgSURCT2JqZWN0U3Rv
cmUqLCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5kZXhNZXRhRGF0YSBtX21ldGFEYXRh
OwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBtX3RyYW5zYWN0aW9uOworICAgIGJvb2wgbV9kZWxldGVkOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA2ZmMzNzMxN2NhYTdlNDYwNDE0
ODgwNjI5NDgzNGZlOGU2MDFkN2QxLi4xOTY2ZjE2NzY2NTBlMmQ2OTIxN2ExOGM0ZDJhZDUwYzdi
MWZiNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURC
S2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRhRGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKQEAgLTY5LDYg
KzcwLDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsK
IH0KIAorSURCSW5kZXhNZXRhRGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhRGF0YSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0YURhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1f
dW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVu
c2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6
OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVy
bmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmgKaW5kZXggMjBmMzVjNGYzZmEzOWFkMDRjMTUyYjQ3NGFjOGQxNzAz
YTA0NWNkZS4uYTBkNTBjZGI4NzhkYWJjNDhmMmJmZDEzNTMyZmRmMGU2MmYwMWE0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZGluZ0tleUFs
bG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0g
MCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KKyAgICB2
aXJ0dWFsIElEQkluZGV4TWV0YURhdGEgbWV0YURhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRoIGtl
eVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkg
eyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk1ldGFEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJNZXRhRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkMDlmZTAwY2I0MTQ5ODA2YzRmOWRjZTdkMDA4
YmJkYTFhMmY3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJNZXRhRGF0YS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJNZXRh
RGF0YV9oCisjZGVmaW5lIElEQk1ldGFEYXRhX2gKKworI2luY2x1ZGUgIklEQktleVBhdGguaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0
YURhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhRGF0YTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0
YURhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YURhdGEoKSB7IH0KKyAgICBJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgICAg
ICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pIHsgfQorICAgIFN0cmlu
ZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgSURCT2JqZWN0U3RvcmVNZXRhRGF0YT4gT2JqZWN0U3RvcmVNYXA7CisgICAgT2JqZWN0U3Rv
cmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YURhdGEg
eworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGEoKSB7IH0KKyAgICBJREJPYmplY3RTdG9yZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRo
KGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KSB7IH0KKyAg
ICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCBhdXRvSW5j
cmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCSW5kZXhNZXRhRGF0YT4g
SW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsKK307CisKK3N0cnVjdCBJREJJbmRleE1l
dGFEYXRhIHsKKyAgICBJREJJbmRleE1ldGFEYXRhKCkgeyB9CisgICAgSURCSW5kZXhNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGtl
eVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUodW5pcXVlKQorICAgICAgICAsIG11bHRp
RW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0aCBr
ZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJvb2wgbXVsdGlFbnRyeTsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCVHJh
Y2luZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKaW5kZXggNmZkN2Q1ZDYzYmQxMGU0YWM5YWE5YWMwMzMxNjIzOWQ3ZmZhZDI0
Ny4uZTg5YjliMzFkYjUwNDAwMDNmZThlYmUyNmU0ZWE5ZTNlN2E4YzQ5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklE
QkFueS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VF
eGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5oIgpA
QCAtNDQsOSArNDUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCT2Jq
ZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQot
ICAgIDogbV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQorSURCT2JqZWN0U3RvcmU6OklEQk9iamVj
dFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YURhdGEmIG1ldGFEYXRhLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YURhdGEobWV0YURhdGEpCisgICAgLCBt
X3ByZXZpb3VzTWV0YURhdGEobWV0YURhdGEpCisgICAgLCBtX2JhY2tlbmQoaWRiT2JqZWN0U3Rv
cmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9kZWxldGVkKGZh
bHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
KTsKQEAgLTU0LDM0ICs1OCwxNCBAQCBJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iagogICAgIHJlbGF4
QWRvcHRpb25SZXF1aXJlbWVudCgpOwogfQogCi1TdHJpbmcgSURCT2JqZWN0U3RvcmU6Om5hbWUo
KSBjb25zdAotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6Om5hbWUiKTsKLSAgICBy
ZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7Ci19Ci0KLVBhc3NSZWZQdHI8SURCQW55PiBJREJPYmpl
Y3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9y
ZTo6a2V5UGF0aCIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKLX0KLQogUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyIpOwotICAgIHJl
dHVybiBtX2JhY2tlbmQtPmluZGV4TmFtZXMoKTsKLX0KLQotSURCVHJhbnNhY3Rpb24qIElEQk9i
amVjdFN0b3JlOjp0cmFuc2FjdGlvbigpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZTo6dHJhbnNhY3Rpb24iKTsKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsK
LX0KLQotYm9vbCBJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCgpIGNvbnN0Ci17Ci0gICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCIpOwotICAgIHJldHVybiBt
X2JhY2tlbmQtPmF1dG9JbmNyZW1lbnQoKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5k
ZXhOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAoSURCT2JqZWN0U3Rv
cmVNZXRhRGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhRGF0YS5pbmRl
eGVzLmJlZ2luKCk7IGl0ICE9IG1fbWV0YURhdGEuaW5kZXhlcy5lbmQoKTsgKytpdCkKKyAgICAg
ICAgaW5kZXhOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgaW5kZXhOYW1lcy0+c29ydCgp
OworICAgIHJldHVybiBpbmRleE5hbWVzLnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykK
QEAgLTEwNCw2ICs4OCwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3Jl
OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmdldCIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKCFrZXkgfHwgKGtleS0+dHlwZSgp
ID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTExOCw2ICsxMDYsMTAgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIp
OworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAg
aWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAw
OwpAQCAtMTQyLDYgKzEzNCwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6
OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNjYsNiArMTYyLDEwIEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4
Myw2ICsxODMsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVs
ZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlmIChtX2Rl
bGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKCFrZXkgfHwgIWtl
eS0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIwMCw2ICsyMDQsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNsZWFyIik7CisgICAgaWYgKG1fZGVsZXRl
ZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlz
KSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTIyNiw2ICsy
MzQsMTEgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4
KGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjwKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7Cisg
ICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSB8fCBtX2RlbGV0ZWQpIHsK
KyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoIWtleVBhdGguaXNWYWxpZCgp
KSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9TWU5UQVhfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTI0NCwxNiArMjU3LDI0IEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktlCiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tl
bmQgPSBtX2JhY2tlbmQtPmNyZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlF
bnRyeSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgQVNTRVJUKCFpbmRleEJh
Y2tlbmQgIT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhh
dmUgZ290dGVuIGFuIGV4Y2VwdGlvbiBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KLSAgICBpZiAoIWlu
ZGV4QmFja2VuZCkKKyAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotICAgIFJlZlB0cjxJ
REJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4QmFja2VuZC5yZWxlYXNlKCks
IHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworCisgICAgSURCSW5kZXhNZXRhRGF0YSBtZXRh
RGF0YShuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOworICAgIFJlZlB0cjxJREJJ
bmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1ldGFEYXRhLCBpbmRleEJhY2tlbmQucmVs
ZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2luZGV4TWFwLnNldChu
YW1lLCBpbmRleCk7CisgICAgbV9tZXRhRGF0YS5pbmRleGVzLnNldChuYW1lLCBtZXRhRGF0YSk7
CisKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQkluZGV4
PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleCIpOworICAgIGlm
IChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKG1fdHJh
bnNhY3Rpb24tPmlzRmluaXNoZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjY1LDIyICsyODYs
NDYgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKIAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+aW5kZXgobmFtZSwgZWMpOwog
ICAgIEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4g
aW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2Ug
dmVyc2EuCi0gICAgaWYgKCFpbmRleEJhY2tlbmQpCisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIElEQk9iamVjdFN0b3JlTWV0YURhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVy
YXRvciBtZGl0ID0gbV9tZXRhRGF0YS5pbmRleGVzLmZpbmQobmFtZSk7CisgICAgLy8gRklYTUU6
IFRoaXMgY2FuIGNoYW5nZSBpbnRvIGFuIEFTU0VSVCBvbmNlIGh0dHA6Ly93ZWJraXQub3JnL2Iv
ODA1NDcgaXMgZml4ZWQuCisgICAgaWYgKG1kaXQgPT0gbV9tZXRhRGF0YS5pbmRleGVzLmVuZCgp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJ
bmRleDo6Y3JlYXRlKGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24u
Z2V0KCkpOworICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1k
aXQtPnNlY29uZCwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVybiBpbmRl
eC5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKCFtX3RyYW5zYWN0
aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSB8fCBtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgbV9iYWNrZW5kLT5kZWxldGVJbmRleChuYW1lLCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKKyAgICBpZiAoIWVjKSB7CisgICAgICAgIElEQkluZGV4TWFwOjpp
dGVyYXRvciBpdCA9IG1faW5kZXhNYXAuZmluZChuYW1lKTsKKyAgICAgICAgaWYgKGl0ICE9IG1f
aW5kZXhNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7
CisgICAgICAgICAgICBtX2luZGV4TWFwLnJlbW92ZShuYW1lKTsKKyAgICAgICAgfQorCisgICAg
ICAgIEFTU0VSVChtX21ldGFEYXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOworICAgICAgICBt
X21ldGFEYXRhLmluZGV4ZXMucmVtb3ZlKG5hbWUpOworICAgIH0KIH0KIAogUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgi
SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElE
QkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMyNyw2ICszNzIsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXgKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IHJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjpjb3VudCIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVh
dGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwog
ICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tl
bmQoKSwgZWMpOwogICAgIGlmIChlYykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggZTExZmJkMDgwZDJiZWQ5NzUxM2M3ODU3
NjEyNDkwOGMwMjA3YmRmYi4uMzk0MTA3YjkxNDgwYzlhMzM5NTFhZjMxNmEzODIwZDg5YzhkYjQx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRl
ICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFE
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCkBAIC00OSwx
OCArNTAsMTggQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0IElE
Qk9iamVjdFN0b3JlTWV0YURhdGEmIG1ldGFEYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJP
YmplY3RTdG9yZShtZXRhRGF0YSwgYmFja2VuZCwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAg
fklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVjdFN0
b3JlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+
IGtleVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YURhdGEubmFtZTsgfQorICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhRGF0YS5rZXlQYXRoOyB9CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzKCkgY29uc3Q7Ci0gICAgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKCkg
Y29uc3Q7Ci0gICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9u
OyB9CisgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhRGF0YS5h
dXRvSW5jcmVtZW50OyB9CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGQoY29udGV4dCwgdmFsdWUs
IDAsIGVjKTsgIH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBwdXQoY29udGV4dCwgdmFsdWUsIDAsIGVj
KTsgIH0KQEAgLTk0LDE0ICs5NSwxOSBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KICAgICB2
b2lkIHRyYW5zYWN0aW9uRmluaXNoZWQoKTsKKyAgICB2b2lkIHJlc2V0TWV0YURhdGEoKSB7IG1f
bWV0YURhdGEgPSBtX3ByZXZpb3VzTWV0YURhdGE7IH0KIAogcHJpdmF0ZToKLSAgICBJREJPYmpl
Y3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRy
YW5zYWN0aW9uKik7CisgICAgSURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRh
RGF0YSYsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJh
bnNhY3Rpb24qKTsKICAgICB2b2lkIHJlbW92ZVRyYW5zYWN0aW9uRnJvbVBlbmRpbmdMaXN0KCk7
CiAKKyAgICBJREJPYmplY3RTdG9yZU1ldGFEYXRhIG1fbWV0YURhdGE7CisgICAgSURCT2JqZWN0
U3RvcmVNZXRhRGF0YSBtX3ByZXZpb3VzTWV0YURhdGE7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gbV90cmFuc2FjdGlvbjsKKyAgICBib29sIG1fZGVsZXRlZDsKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleD4gPiBJREJJbmRleE1hcDsKICAgICBJREJJbmRl
eE1hcCBtX2luZGV4TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBhYzQzODg3
MDFmOTc0NDQ5MWI3ZGIxZWI5NTFiODk1ODgxZGUyZTc3Li5lZjcyMGE0YmE2MmU3YjVmYzExMjA4
NTJhMDA0MGJhNzQzM2ZhMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNzQs
NiArNzQsMTQgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbChJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG8KIHsKIH0KIAorSURCT2JqZWN0U3Rv
cmVNZXRhRGF0YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhRGF0YSgpIGNvbnN0Cit7
CisgICAgSURCT2JqZWN0U3RvcmVNZXRhRGF0YSBtZXRhRGF0YShtX25hbWUsIG1fa2V5UGF0aCwg
bV9hdXRvSW5jcmVtZW50KTsKKyAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAg
IG1ldGFEYXRhLmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YURhdGEoKSk7
CisgICAgcmV0dXJuIG1ldGFEYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggYTVkZTdlNWQyZDYyM2RkZTBmMDBmY2ZkNGU5YTZl
YjNmMDg4YzYzOS4uNDgyYWE4Mjc2M2IyNjA5YzY1NzkxNzY2NTM0MDQzMzQ3MjZmYmNlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsX2gKIAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRl
ICJJREJNZXRhRGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgpAQCAtNDAsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwog
Y2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURCT2JqZWN0
U3RvcmVNZXRhRGF0YTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1Ymxp
YyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNjEsNiArNjMs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBtX2lkID0g
aWQ7IH0KIAorICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVNZXRhRGF0YSBtZXRhRGF0YSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ICAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0
aDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKaW5kZXggZjVjNzQ0YjE1YTc3MmM3NWIwMzcyZWVjNGMyMGM5MjNlMmZkYThj
Mi4uMGNhODI4NzUxZTMzNGJlMTgyM2U0MzI1ZmYyZjc2Mzg0YWE3MTM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
MTUwLDI1ICsxNTAsMzcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rp
b246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICAgICAgcmV0dXJu
IGl0LT5zZWNvbmQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBvYmplY3RTdG9yZUJhY2tlbmQgPSBtX2JhY2tlbmQtPm9iamVjdFN0b3JlKG5hbWUsIGVjKTsK
LSAgICBpZiAoIW9iamVjdFN0b3JlQmFja2VuZCkgewotICAgICAgICBBU1NFUlQoZWMpOworICAg
IEFTU0VSVCghb2JqZWN0U3RvcmVCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQg
YSBzdG9yZSwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2VwdGlvbiBjb2RlLiBBbmQgdmlj
ZSB2ZXJzYS4KKyAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShv
YmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOworCisgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhRGF0
YSYgbWV0YURhdGEgPSBtX2RhdGFiYXNlLT5tZXRhRGF0YSgpOworICAgIElEQkRhdGFiYXNlTWV0
YURhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbWV0YURhdGEub2Jq
ZWN0U3RvcmVzLmZpbmQobmFtZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbWV0YURhdGEub2JqZWN0
U3RvcmVzLmVuZCgpKTsKKworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUg
PSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1kaXQtPnNlY29uZCwgb2JqZWN0U3RvcmVCYWNrZW5k
LCB0aGlzKTsKICAgICBvYmplY3RTdG9yZUNyZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwogICAg
IHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IG9iamVjdFN0b3JlKQordm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVD
cmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gcHJw
T2JqZWN0U3RvcmUpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAg
IFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBwcnBPYmplY3RTdG9yZTsKICAg
ICBtX29iamVjdFN0b3JlTWFwLnNldChuYW1lLCBvYmplY3RTdG9yZSk7CisgICAgbV9vYmplY3RT
dG9yZUNsZWFudXBTZXQuYWRkKG9iamVjdFN0b3JlKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQo
IW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7Ci0gICAgbV9vYmplY3RTdG9yZU1hcC5yZW1vdmUobmFt
ZSk7CisgICAgSURCT2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZU1h
cC5maW5kKG5hbWUpOworICAgIGlmIChpdCAhPSBtX29iamVjdFN0b3JlTWFwLmVuZCgpKSB7Cisg
ICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBpdC0+c2Vjb25kOwor
ICAgICAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKKyAgICAgICAgb2JqZWN0U3Rv
cmUtPm1hcmtEZWxldGVkKCk7CisgICAgICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFkZChv
YmplY3RTdG9yZSk7CisgICAgfQogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjphYm9ydCgpCkBA
IC0yMzAsOCArMjQyLDExIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQogICAgICAg
ICByZXF1ZXN0LT5hYm9ydCgpOwogICAgIH0KIAotICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNh
Y3Rpb246OlZFUlNJT05fQ0hBTkdFKQorICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246
OlZFUlNJT05fQ0hBTkdFKSB7CiAgICAgICAgIG1fZGF0YWJhc2UtPmNsZWFyVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKHRoaXMpOworICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlU2V0OjppdGVy
YXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0
U3RvcmVDbGVhbnVwU2V0LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgKCppdCktPnJlc2V0TWV0
YURhdGEoKTsKKyAgICB9CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogCiAgICAgaWYgKG1fY29u
dGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDFjZWJlOWMx
OTNkOTI3YmMxNTk2MjY3ZWI3MzU2OGI3MWZiNTllNzIuLmNhNjQzZTU2YWNjNWVkYWQ1ODg0MDQ2
MzU4ZGViZmU0MmNmYWFjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJJREJNZXRhRGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTY4LDYgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5kKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0ZpbmlzaGVkKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZlcnNpb25DaGFuZ2UoKSBjb25z
dCB7IHJldHVybiBtX21vZGUgPT0gVkVSU0lPTl9DSEFOR0U7IH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgbW9kZSgpIGNvbnN0OwogICAgIElEQkRhdGFiYXNlKiBkYigpIGNvbnN0OwpAQCAtMTQwLDYg
KzE0Miw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlTWFwOwogICAgIElEQk9iamVjdFN0b3JlTWFw
IG1fb2JqZWN0U3RvcmVNYXA7CiAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPElEQk9iamVj
dFN0b3JlPiA+IElEQk9iamVjdFN0b3JlU2V0OworICAgIElEQk9iamVjdFN0b3JlU2V0IG1fb2Jq
ZWN0U3RvcmVDbGVhbnVwU2V0OworCiAgICAgSGFzaFNldDxJREJDdXJzb3IqPiBtX29wZW5DdXJz
b3JzOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDk5MjcwMjcyMWU2YjEwZWU1MTE1YmRjYzVhNDM1ZGM1OThhNTFiOGYuLmRhM2M0
ZjNjNTY1NmVlYWY1NTE2MDAyMWUwYjg1NDUzZjEwYzZlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTE0ODQsNiArMTQ4NCw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJN
ZXRhRGF0YS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA5OTIwNGI4ODZhYjdlYzFj
ZjRkMjRhNTkzY2NkY2QwMjdkNTQ5OTAxLi41MmM2MTE4YmVjMTFkZDNmY2JlN2Q2MzNmZWVjYjU4
MTQ4ZDEyZjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xODEsNiArMTgxLDcg
QEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktleS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYklEQktleVBhdGguaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJ
REJLZXlSYW5nZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQk1ldGFEYXRhLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgnLApAQCAtNTU4LDYgKzU1OSw3IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXkuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYklEQktleVBhdGguY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleVJh
bmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJNZXRhRGF0YS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGIzOTg1MzQxNjU1NDNhMTk3YTYxNzk3ZDU0
NzQ5ZGE4NWUzYTM1NmUuLjY5NmYxNmM0N2NlMmNiNGZjOWU2ODQ5ZjBmNDNhODBiZjJkY2Q4NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1
ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJXZWJJREJNZXRhRGF0YS5oIgogI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ0
LDYgKzQ1LDExIEBAIGNsYXNzIFdlYklEQkRhdGFiYXNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJJREJEYXRhYmFzZSgpIHsgfQogCisgICAgdmlydHVhbCBXZWJJREJEYXRhYmFzZU1ldGFE
YXRhIG1ldGFEYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQkRhdGFiYXNlTWV0YURhdGE6OmNyZWF0ZSgp
OworICAgIH0KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJNZXRhRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlZWU0YjcxNTgyNTg0YjU4
MjVjMmU3ZDVkYTM1YzNmOTA2NmYwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhRGF0YS5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJJREJNZXRhRGF0YV9oCisjZGVmaW5lIFdlYklEQk1ldGFEYXRhX2gKKwor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBy
aXZhdGVPd25QdHIuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IElE
QkRhdGFiYXNlTWV0YURhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhRGF0YTsKK3N0cnVjdCBJREJP
YmplY3RTdG9yZU1ldGFEYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
SURCSW5kZXhNZXRhRGF0YTsKK2NsYXNzIFdlYklEQktleVBhdGg7CitjbGFzcyBXZWJJREJPYmpl
Y3RTdG9yZU1ldGFEYXRhOworCitjbGFzcyBXZWJJREJEYXRhYmFzZU1ldGFEYXRhIHsKK3B1Ymxp
YzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJEYXRhYmFzZU1ldGFEYXRhIGNyZWF0
ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQkRhdGFiYXNlTWV0YURhdGEgY3Jl
YXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBjb25z
dCBXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YT4mIG9iamVjdF9zdG9yZXMpOwor
ICAgIFdFQktJVF9FWFBPUlQgV2ViSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBXZWJJREJEYXRh
YmFzZU1ldGFEYXRhJik7CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBuYW1lKCkgY29u
c3Q7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgV2ViVmVjdG9yPFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE+IG9iamVjdFN0
b3JlcygpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSURCRGF0
YWJhc2VNZXRhRGF0YSgpOworICAgIFdlYklEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgV2ViQ29y
ZTo6SURCRGF0YWJhc2VNZXRhRGF0YSYpOworICAgIH5XZWJJREJEYXRhYmFzZU1ldGFEYXRhKCk7
CisgICAgV2ViSURCRGF0YWJhc2VNZXRhRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OklE
QkRhdGFiYXNlTWV0YURhdGEmKTsKKyAgICBvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJEYXRh
YmFzZU1ldGFEYXRhJigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0
ZU93blB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFEYXRhPiBtX3ByaXZhdGU7Cit9OworCitj
bGFzcyBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhIGNyZWF0ZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0
IFdlYlZlY3RvcjxXZWJJREJJbmRleE1ldGFEYXRhPiYgaW5kZXhlcyk7CisgICAgV0VCS0lUX0VY
UE9SVCBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKGNvbnN0IFdlYklEQk9iamVjdFN0b3JlTWV0
YURhdGEmKTsKKworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAg
ICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0OworICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBX
ZWJWZWN0b3I8V2ViSURCSW5kZXhNZXRhRGF0YT4gaW5kZXhlcygpIGNvbnN0OworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSgpOworICAg
IFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGEoY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVN
ZXRhRGF0YSYpOworICAgIH5XZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKCk7CisgICAgV2ViSURC
T2JqZWN0U3RvcmVNZXRhRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YURhdGEmKTsKKyAgICBvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZU1ldGFEYXRhJigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2ViUHJpdmF0ZU93
blB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFEYXRhPiBtX3ByaXZhdGU7Cit9OworCitj
bGFzcyBXZWJJREJJbmRleE1ldGFEYXRhIHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBXZWJJREJJbmRleE1ldGFEYXRhIGNyZWF0ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKKyAgICBX
RUJLSVRfRVhQT1JUIFdlYklEQkluZGV4TWV0YURhdGEoY29uc3QgV2ViSURCSW5kZXhNZXRhRGF0
YSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7CisgICAgV0VCS0lUX0VY
UE9SVCBib29sIHVuaXF1ZSgpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgYm9vbCBtdWx0aUVu
dHJ5KCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJJbmRl
eE1ldGFEYXRhKCk7CisgICAgV2ViSURCSW5kZXhNZXRhRGF0YShjb25zdCBXZWJDb3JlOjpJREJJ
bmRleE1ldGFEYXRhJik7CisgICAgfldlYklEQkluZGV4TWV0YURhdGEoKTsKKyAgICBXZWJJREJJ
bmRleE1ldGFEYXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YSYp
OworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YURhdGEmKCkgY29uc3Q7
CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlT3duUHRyPFdlYkNvcmU6OklEQklu
ZGV4TWV0YURhdGE+IG1fcHJpdmF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViSURCS2V5UGF0aF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNmU1MzU0OTlhMzhjNGE5
MzUwOWE2ZTRmNTU2Y2Y5OGFjOGYyMDA3My4uYjM1MGU3NmQ5MDAxNTgyMDc0NzdiYmViODlkNjU2
MzU0OTg1ZWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQk1ldGFEYXRhLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKQEAgLTYwLDYgKzYx
LDExIEBAIElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp+SURCRGF0YWJhc2VCYWNrZW5kUHJveHko
KQogewogfQogCitJREJEYXRhYmFzZU1ldGFEYXRhIElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpt
ZXRhRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm1ldGFEYXRh
KCk7Cit9CisKIFN0cmluZyBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bmFtZSgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IGI3OGFj
Njk5MmNkY2ZmMTM4N2E5ZWMwOGIzODY4ZWI2Y2ZjNDMzOTIuLjJjNjA4OTEyNTY5MDg0OGRlMDRh
YWUxOThlNGY4YTZhZDdmNjA0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgfklE
QkRhdGFiYXNlQmFja2VuZFByb3h5KCk7CiAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YURhdGEgbWV0YURhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcAppbmRleCA0YmU0M2RjMTRkODE3ZDk1OWFlZjU4YTE2YWVjZjQ4NWJjYjViNmJhLi43NWE3
YTgyZjQxZmFmNTA5Y2IxODljNDhlZWZmYzNlOTA0MzcxOGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTMyLDkgKzMyLDEx
IEBACiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
LmgiCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRl
ICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFEYXRhLmgi
CiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJh
bnNhY3Rpb25JbXBsLmgiCiAKQEAgLTUxLDYgKzUzLDExIEBAIFdlYklEQkRhdGFiYXNlSW1wbDo6
fldlYklEQkRhdGFiYXNlSW1wbCgpCiB7CiB9CiAKK1dlYklEQkRhdGFiYXNlTWV0YURhdGEgV2Vi
SURCRGF0YWJhc2VJbXBsOjptZXRhRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJh
c2VCYWNrZW5kLT5tZXRhRGF0YSgpOworfQorCiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBs
OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5k
ZXggOTY1NzFiYmU5YzFkOTZjYmQzZjljN2QzYWQ4MzE3OWI5NjE5M2RkOS4uYjAxYWIwOTJjNjM4
NWE5NDlhN2ZkZGVjNWEyYTQ1MzE2MWNlZmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrczsKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YURhdGE7CiBjbGFz
cyBXZWJJREJPYmplY3RTdG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldl
YklEQkRhdGFiYXNlSW1wbCgpOwogCisgICAgdmlydHVhbCBXZWJJREJEYXRhYmFzZU1ldGFEYXRh
IG1ldGFEYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRP
TVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCTWV0YURhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjYWE5NWRkZTQyZGVl
YzExYjY0ODEwMjQ1MTkzYWE1MTE5OGVlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhRGF0YS5jcHAKQEAgLTAsMCArMSwyMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YURhdGEuaCIKKwor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCTWV0YURhdGEuaCIK
KyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5n
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YSBX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpjcmVhdGUoKQoreworICAgIHJldHVybiBXZWJJREJEYXRh
YmFzZU1ldGFEYXRhKElEQkRhdGFiYXNlTWV0YURhdGEoKSk7Cit9CisKK1dlYklEQkRhdGFiYXNl
TWV0YURhdGEgV2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBjb25zdCBXZWJWZWN0b3I8V2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YT4mIG9iamVjdFN0b3JlcykKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFE
YXRhIG1ldGFEYXRhKG5hbWUsIHZlcnNpb24pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U3RvcmVzLnNpemUoKTsgKytpKQorICAgICAgICBtZXRhRGF0YS5vYmplY3RTdG9yZXMu
c2V0KG9iamVjdFN0b3Jlc1tpXS5uYW1lKCksIG9iamVjdFN0b3Jlc1tpXSk7CisgICAgcmV0dXJu
IFdlYklEQkRhdGFiYXNlTWV0YURhdGEobWV0YURhdGEpOworfQorCitXZWJJREJEYXRhYmFzZU1l
dGFEYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFEYXRhKCkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURC
RGF0YWJhc2VNZXRhRGF0YSgpKQoreworfQorCitXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpXZWJJ
REJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFdlYklEQkRhdGFiYXNlTWV0YURhdGEmIG90aGVyKQor
ICAgIDogbV9wcml2YXRlKG5ldyBJREJEYXRhYmFzZU1ldGFEYXRhKG90aGVyKSkKK3sKK30KKwor
V2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6fldlYklEQkRhdGFiYXNlTWV0YURhdGEoKQoreworICAg
IG1fcHJpdmF0ZS5yZXNldCgwKTsKK30KKworV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNlTWV0YURh
dGE6Om5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPm5hbWU7Cit9CisKK1dl
YlN0cmluZyBXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjp2ZXJzaW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcml2YXRlLT52ZXJzaW9uOworfQorCitXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3Rv
cmVNZXRhRGF0YT4gV2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6b2JqZWN0U3RvcmVzKCkgY29uc3QK
K3sKKyAgICBzaXplX3QgY291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcHJpdmF0ZS0+b2Jq
ZWN0U3RvcmVzLnNpemUoKSk7CisgICAgV2ViVmVjdG9yPFdlYklEQk9iamVjdFN0b3JlTWV0YURh
dGE+IG9iamVjdFN0b3Jlcyhjb3VudCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoSURC
RGF0YWJhc2VNZXRhRGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9w
cml2YXRlLT5vYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9wcml2YXRlLT5vYmplY3RTdG9y
ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG9iamVjdFN0b3Jlc1tpKytdID0gaXQtPnNlY29uZDsK
KyAgICByZXR1cm4gb2JqZWN0U3RvcmVzOworfQorCitXZWJJREJEYXRhYmFzZU1ldGFEYXRhOjpX
ZWJJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YURhdGEm
IG1ldGFkYXRhKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJEYXRhYmFzZU1ldGFEYXRhKG1ldGFk
YXRhKSkKK3sKK30KKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YSYgV2ViSURCRGF0YWJhc2VNZXRh
RGF0YTo6b3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YURhdGEmIG1ldGFk
YXRhKQoreworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURCRGF0YWJhc2VNZXRhRGF0YShtZXRh
ZGF0YSkpOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViSURCRGF0YWJhc2VNZXRhRGF0YTo6
b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhRGF0YSYoKSBjb25zdAorewor
ICAgIHJldHVybiAqKG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK1dlYklEQk9iamVjdFN0b3JlTWV0
YURhdGEgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBj
b25zdCBXZWJWZWN0b3I8V2ViSURCSW5kZXhNZXRhRGF0YT4mIGluZGV4ZXMpCit7CisgICAgSURC
T2JqZWN0U3RvcmVNZXRhRGF0YSBtZXRhRGF0YShuYW1lLCBXZWJJREJLZXlQYXRoKGtleVBhdGgp
LCBhdXRvSW5jcmVtZW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZGV4ZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1ldGFEYXRhLmluZGV4ZXMuc2V0KGluZGV4ZXNbaV0ubmFtZSgp
LCBpbmRleGVzW2ldKTsKKyAgICByZXR1cm4gV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YShtZXRh
RGF0YSk7Cit9CisKK1dlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OldlYklEQk9iamVjdFN0b3Jl
TWV0YURhdGEoKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJPYmplY3RTdG9yZU1ldGFEYXRhKCkp
Cit7Cit9CisKK1dlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OldlYklEQk9iamVjdFN0b3JlTWV0
YURhdGEoY29uc3QgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSYgb3RoZXIpCisgICAgOiBtX3By
aXZhdGUobmV3IElEQk9iamVjdFN0b3JlTWV0YURhdGEob3RoZXIpKQoreworfQorCitXZWJJREJP
YmplY3RTdG9yZU1ldGFEYXRhOjp+V2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YSgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KDApOworfQorCitXZWJTdHJpbmcgV2ViSURCT2JqZWN0U3RvcmVNZXRh
RGF0YTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmFtZTsKK30KKwor
V2ViSURCS2V5UGF0aCBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjprZXlQYXRoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2ViSURCS2V5UGF0aChtX3ByaXZhdGUtPmtleVBhdGgpOworfQorCiti
b29sIFdlYklEQk9iamVjdFN0b3JlTWV0YURhdGE6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPmF1dG9JbmNyZW1lbnQ7Cit9CisKK1dlYlZlY3RvcjxXZWJJ
REJJbmRleE1ldGFEYXRhPiBXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhOjppbmRleGVzKCkgY29u
c3QKK3sKKyAgICBzaXplX3QgY291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fcHJpdmF0ZS0+
aW5kZXhlcy5zaXplKCkpOworICAgIFdlYlZlY3RvcjxXZWJJREJJbmRleE1ldGFEYXRhPiBpbmRl
eGVzKGNvdW50KTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1l
dGFEYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3ByaXZhdGUtPmluZGV4ZXMu
YmVnaW4oKTsgaXQgIT0gbV9wcml2YXRlLT5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBp
bmRleGVzW2krK10gPSBpdC0+c2Vjb25kOworICAgIHJldHVybiBpbmRleGVzOworfQorCitXZWJJ
REJPYmplY3RTdG9yZU1ldGFEYXRhOjpXZWJJREJPYmplY3RTdG9yZU1ldGFEYXRhKGNvbnN0IFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGEmIG1ldGFkYXRhKQorICAgIDogbV9wcml2YXRl
KG5ldyBJREJPYmplY3RTdG9yZU1ldGFEYXRhKG1ldGFkYXRhKSkKK3sKK30KKworV2ViSURCT2Jq
ZWN0U3RvcmVNZXRhRGF0YSYgV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3I9KGNv
bnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YURhdGEmIG1ldGFkYXRhKQoreworICAgIG1f
cHJpdmF0ZS5yZXNldChuZXcgSURCT2JqZWN0U3RvcmVNZXRhRGF0YShtZXRhZGF0YSkpOworICAg
IHJldHVybiAqdGhpczsKK30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRhRGF0YTo6b3BlcmF0b3Ig
Y29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhRGF0YSYoKSBjb25zdAoreworICAgIHJl
dHVybiAqKG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK1dlYklEQkluZGV4TWV0YURhdGEgV2ViSURC
SW5kZXhNZXRhRGF0YTo6Y3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKK3sKKyAgICBy
ZXR1cm4gSURCSW5kZXhNZXRhRGF0YShuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkp
OworfQorCitXZWJJREJJbmRleE1ldGFEYXRhOjpXZWJJREJJbmRleE1ldGFEYXRhKCkKKyAgICA6
IG1fcHJpdmF0ZShuZXcgSURCSW5kZXhNZXRhRGF0YSgpKQoreworfQorCitXZWJJREJJbmRleE1l
dGFEYXRhOjpXZWJJREJJbmRleE1ldGFEYXRhKGNvbnN0IFdlYklEQkluZGV4TWV0YURhdGEmIG90
aGVyKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJJbmRleE1ldGFEYXRhKG90aGVyKSkKK3sKK30K
KworV2ViSURCSW5kZXhNZXRhRGF0YTo6fldlYklEQkluZGV4TWV0YURhdGEoKQoreworICAgIG1f
cHJpdmF0ZS5yZXNldCgwKTsKK30KKworV2ViU3RyaW5nIFdlYklEQkluZGV4TWV0YURhdGE6Om5h
bWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPm5hbWU7Cit9CisKK1dlYklEQktl
eVBhdGggV2ViSURCSW5kZXhNZXRhRGF0YTo6a2V5UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFdlYklEQktleVBhdGgobV9wcml2YXRlLT5rZXlQYXRoKTsKK30KKworYm9vbCBXZWJJREJJbmRl
eE1ldGFEYXRhOjp1bmlxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPnVuaXF1
ZTsKK30KKworYm9vbCBXZWJJREJJbmRleE1ldGFEYXRhOjptdWx0aUVudHJ5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wcml2YXRlLT5tdWx0aUVudHJ5OworfQorCisKK1dlYklEQkluZGV4TWV0
YURhdGE6OldlYklEQkluZGV4TWV0YURhdGEoY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0
YSYgbWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkluZGV4TWV0YURhdGEobWV0YWRh
dGEpKQoreworfQorCitXZWJJREJJbmRleE1ldGFEYXRhJiBXZWJJREJJbmRleE1ldGFEYXRhOjpv
cGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhRGF0YSYgbWV0YWRhdGEpCit7Cisg
ICAgbV9wcml2YXRlLnJlc2V0KG5ldyBJREJJbmRleE1ldGFEYXRhKG1ldGFkYXRhKSk7CisgICAg
cmV0dXJuICp0aGlzOworfQorCitXZWJJREJJbmRleE1ldGFEYXRhOjpvcGVyYXRvciBjb25zdCBX
ZWJDb3JlOjpJREJJbmRleE1ldGFEYXRhJigpIGNvbnN0Cit7CisgICAgcmV0dXJuICoobV9wcml2
YXRlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4ZjM2NzRlOWY3YTg4YTc0OTlkMmU5N2ZiZTIy
NDE3MTczYjNjMGFlLi5hYTg2YzFjOTBmYmFkZjlmZDg2MTg3YTM1NDczNzUxYjNhYjAzZWJjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDYtMDcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZy
b250IGVuZCB0byBhdm9pZCBJUEMgcm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVj
dHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGVkLW9iamVjdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbWV0
YWRhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
ZXRhZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxh
L2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWw6IFRoaXMgdGVz
dCB3YXMKKyAgICAgICAgY3JlYXRpbmcgYSB0cmFuc2FjdGlvbiBpbnNpZGUgdGhlIHNldFZlcnNp
b24gY2FsbGJhY2sgYW5kIGFzc3VtaW5nIHRoZQorICAgICAgICBzZXRWZXJzaW9uJ3Mgc2NoZW1h
IGNoYW5nZXMgd2VyZSBhbHJlYWR5IHByZXNlbnQuIFRoaXMgd2lsbCBiZSBwcmV2ZW50ZWQKKyAg
ICAgICAgYnkgYSBmdXR1cmUgY2hhbmdlICh3ZWJraXQub3JnL2IvODA1NDcpIGJ1dCBpdCB0cmlw
cyB1cCB0aGlzIGNoYW5nZS4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGVsZXRlZC1vYmplY3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAob3Bl
bkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVuRGF0YWJhc2Up
OgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qczogQWRk
ZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vz
cy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGZpcnN0T3Bl
bi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9w
ZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RPcGVuKToKKyAgICAgICAgKHNl
Y29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21w
bGV0ZSk6CisgICAgICAgIChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAoc2Vjb25kT3Blbik6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVz
dC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuLnJlcXVl
c3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRoaXJkT3Blbik6CisgICAgICAgIChmb3VydGhPcGVu
LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgor
ICAgICAgICAoZm91cnRoT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0
aE9wZW4pOgorICAgICAgICAoY2hlY2tTdGF0ZSk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qczogT3BlcmF0aW9ucyBvbgorICAgICAg
ICBhIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIGFyZSBub3cgcHJldmVudGVkIHBlciBzcGVjLgorICAg
ICAgICAoYWRkUmVtb3ZlSURCT2JqZWN0cyk6CisgICAgICAgIChhZGRSZW1vdmVBZGRJREJPYmpl
Y3RzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhw
ZWN0ZWQudHh0OgorCiAyMDEyLTA2LTA3ICBSYXltZXMgS2hvdXJ5ICA8cmF5bWVzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBJbmNvcnJlY3QgcmVjdC1iYXNlZCBoaXQtdGVzdCByZXN1bHQgZm9y
IGN1bGxlZC1pbmxpbmUgZWxlbWVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlm
NjZhZmUzYTA4YWZiNDkxN2FkMzM2NDkzNTgzMmNjMWUyMTI1OTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsODcgQEAKK1Rlc3QgdGhhdCBJbmRleGVkREIgb2JqZWN0cyB0aGF0IGhh
dmUgYmVlbiBkZWxldGVkIHRocm93IGV4Y2VwdGlvbnMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhl
ZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5k
ZXhlZERCOworCitkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lCityZXF1ZXN0ID0gaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKKworb3BlbkRhdGFiYXNlKCk6CityZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbiA9IHJlcXVlc3QucmVzdWx0City
ZXF1ZXN0ID0gY29ubmVjdGlvbi5zZXRWZXJzaW9uKCcxJykKKworZGVsZXRlZFN0b3JlID0gY29u
bmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykKK3N0b3JlID0gY29ubmVj
dGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorZGVsZXRlZEluZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcsICdwYXRoJykKKworY29ubmVjdGlvbi5kZWxldGVPYmpl
Y3RTdG9yZSgnZGVsZXRlZFN0b3JlJykKK3N0b3JlLmRlbGV0ZUluZGV4KCdkZWxldGVkSW5kZXgn
KQorCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLnB1dCgwLCAwKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5hZGQoMCwgMCkKK1BBU1MgRXhjZXB0aW9uIHdh
cyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQ
QVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBkZWxldGVkU3RvcmUuZGVsZXRlKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFT
UyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAn
SW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3Jl
LmdldCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9y
JworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5jbGVhcigpCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLm9wZW5DdXJzb3IoKQorUEFTUyBFeGNlcHRpb24gd2Fz
IHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BB
U1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9t
IGRlbGV0ZWRTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdwYXRoJykKK1BBU1MgRXhjZXB0aW9u
IHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJS
CitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24g
ZnJvbSBkZWxldGVkU3RvcmUuaW5kZXgoJ25hbWUnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93
bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5h
bWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0
ZWRTdG9yZS5kZWxldGVJbmRleCgnbmFtZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBp
cyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0
b3JlLmNvdW50KCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVF
cnJvcicKKworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRJbmRleC5vcGVuQ3Vyc29y
KCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkSW5kZXgub3BlbktleUN1cnNvcigpCitQQVNT
IEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3Rpbmcg
ZXhjZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4LmdldCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRo
cm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1Mg
ZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRl
bGV0ZWRJbmRleC5nZXRLZXkoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZh
bGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkSW5kZXguY291
bnQoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy5odG1s
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzkzZjUyZjUwOWM1NDBjNGI3MGNiYjQ4YTIxOWIzZmE4ZDFhNzFlOAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0
cy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZWQtb2JqZWN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM2ZDQ3NWFhNDI3YmFjZmFmZjEz
NDdhMzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODggQEAKK1Rlc3Qg
SW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZworCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorCitmaXJzdE9w
ZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0aW9uMSA9IHJl
cXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScpCit0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0b3JlMSA9IGNvbm5lY3Rpb24xLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjFzdG9yZTEuY3JlYXRlSW5kZXgoJ2lu
ZGV4MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29u
bmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0
b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91
bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24xLmNsb3NlKCkKKworc2Vjb25k
T3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24yID0g
cmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMi5zZXRWZXJzaW9uKCcyJykKK3Ry
YW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZTInKQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nv
bm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpCitQQVNTIGNvbm5l
Y3Rpb24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMg
MgorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3Nl
Citjb25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBj
b25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5l
Y3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKQorY29ubmVjdGlvbjNzdG9yZTEgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4
KCdpbmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24zLnZlcnNpb24gaXMgIjMiCitQQVNT
IGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlv
bjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMg
c2hvdWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFucy5hYm9ydCgpCitDb25uZWN0aW9uJ3Mg
cHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24zLmNs
b3NlKCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkK
K2Nvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uNC5zZXRW
ZXJzaW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb240LmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0
aCcpCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNvbm5lY3Rpb240Lm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhO
YW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBz
aG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9zZSgpCisKK2NoZWNrU3RhdGUoKToKK1BB
U1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVj
dGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25uZWN0aW9uMnN0b3Jl
MS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjMudmVyc2lvbiBpcyAi
MiIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBj
b25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlv
bjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAzCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDJj
ZmU1OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUyZTNmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApAQCAtMCwwICsxLDEw
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9t
ZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1k
dXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96
aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKaW5kZXggYjc4MDVmMWZh
YTQ1YTdhOWQ4ZGRlMjk2NmI3YWVjN2YzYmVjODMxNy4uNGEwYjgyMmVjNzdiMDA3NWE1NjgyM2U0
OGI0MjUyZWZiZjRhYzg5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0
ZS1leHBlY3RlZC50eHQKQEAgLTE2LDcgKzE2LDcgQEAgUEFTUyBJREJLZXlSYW5nZSA9PSBudWxs
IGlzIGZhbHNlCiBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKIG9wZW5TdWNjZXNz
KCk6CiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLXJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcx
JykKK3NldFZlcnNpb25SZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCiBEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZShvYmplY3RT
dG9yZU5hbWUpOwogRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVjdCBzdG9yZS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgt
cHJldi1uby1kdXBsaWNhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
emlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAppbmRleCA4YTk2Mzg3YmRlYTg2OWYy
MmQwMTNiM2FiZTZhZmYyMjFkMTZlY2FmLi5iZTliZWI3M2U3NGYwM2FjNzM1NDU5NmI0ZjliNTJh
OWM5MmYyYTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3pp
bGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1sCkBAIC03Nyw5
ICs3Nyw5IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICAgICAgeyBrZXk6ICIyMzctMjMt
Nzc0MCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6IDExMCB9IH0s
CiAgICAgXTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gZGIuc2V0VmVy
c2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9i
amVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHNldFZlcnNpb25SZXF1ZXN0ID0gZXZhbEFuZExvZygic2V0VmVyc2lvblJlcXVlc3Qg
PSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXRWZXJzaW9uUmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHNldFZlcnNpb25SZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24gY3JlYXRlQW5k
UG9wdWxhdGVPYmplY3RTdG9yZSgpCkBAIC0xMDksOCArMTA5LDcgQEAgZnVuY3Rpb24gY3JlYXRl
SW5kZXhlcygpCiAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJbmRleChpbmRl
eERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtpXS5vcHRpb25z
KTsiKTsKICAgICB9CiAKLQotICAgIHRlc3RQcmV2KCk7CisgICAgc2V0VmVyc2lvblJlcXVlc3Qu
cmVzdWx0Lm9uY29tcGxldGUgPSB0ZXN0UHJldjsKIH0KIAogZnVuY3Rpb24gdGVzdFByZXYoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0
ZWQtb2JqZWN0cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
ZWxldGVkLW9iamVjdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk3YTA1YWJmY2M0MWI3MmRiZWRkYTVhMTIz
NWEyY2NlZDA5NTAyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYg
KHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVk
LmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgSW5kZXhlZERCIG9iamVjdHMgdGhh
dCBoYXZlIGJlZW4gZGVsZXRlZCB0aHJvdyBleGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3Qo
KQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZXZhbEFuZExvZygiZGJuYW1l
ID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkRh
dGFiYXNlOworfQorCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsK
KyAgICBkZWJ1Zygib3BlbkRhdGFiYXNlKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24uc2V0VmVyc2lvbignMScpIik7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdDsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygiZGVsZXRlZFN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnZGVs
ZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0gY29ubmVjdGlv
bi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
ZGVsZXRlZEluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcsICdwYXRoJyki
KTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbi5kZWxldGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdkZWxldGVkSW5kZXgnKSIpOworCisgICAg
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
ZWxldGVkU3RvcmUucHV0KDAsIDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIs
ICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkZWxldGVkU3RvcmUuYWRkKDAsIDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0
RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZGVsZXRlKDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZ2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuY2xlYXIoKSIsICJET01FeGNlcHRpb24u
SU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLm9wZW5DdXJzb3IoKSIsICJET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAg
ICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmNyZWF0ZUluZGV4
KCduYW1lJywgJ3BhdGgnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0lu
dmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
ZGVsZXRlZFN0b3JlLmluZGV4KCduYW1lJykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVf
RVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RF
eGNlcHRpb24oImRlbGV0ZWRTdG9yZS5kZWxldGVJbmRleCgnbmFtZScpIiwgIkRPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuY291bnQoKSIsICJET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworCisgICAg
ICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
ZWxldGVkSW5kZXgub3BlbkN1cnNvcigpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VS
UiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbktleUN1cnNvcigpIiwgIkRPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguZ2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBl
dmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguZ2V0S2V5KDApIiwgIkRPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguY291bnQoKSIsICJET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworCisg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworICAgICAgICB9OworICAg
IH07Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9tZXRhZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmEx
YzJlYzNlZWNmMDAwN2VlYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAo
dGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQu
anMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRh
IG11dGF0aW9uL3NuYXBzaG90dGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1v
dmVWZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWUiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0
ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVu
Y3Rpb24gZmlyc3RPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3Bl
bigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUp
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjEgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJl
c3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25u
ZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7
CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lv
biIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3Rv
cmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgc2Vj
b25kT3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5j
dGlvbiBzZWNvbmRPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZE9w
ZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1l
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5y
ZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZTInKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJz
dG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7
CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lv
biIsICIyIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3Rv
cmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgdGhp
cmRPcGVuKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0
aW9uIHRoaXJkT3BlbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4o
KToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb24zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGNvbm5lY3Rpb24zLnNldFZlcnNpb24oJzMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1
bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTMnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9y
ZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIs
ICIzIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUx
LmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25hYm9y
dCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgZm91
cnRoT3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9u
J3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitm
dW5jdGlvbiBmb3VydGhPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0
aE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJu
YW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24oJzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVz
dC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTQnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlv
bjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcp
Iik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVy
c2lvbiIsICI0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240
c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25h
Ym9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21w
bGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3Mg
cHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAg
Y2hlY2tTdGF0ZSgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitm
dW5jdGlvbiBjaGVja1N0YXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNr
U3RhdGUoKToiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVy
c2lvbiIsICIxIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMu
bGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1l
cy5sZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rp
b24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVj
dGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIyIik7Cisg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsK
KyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIp
OworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlv
bjQudmVyc2lvbiIsICI0Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5k
ZXhOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwppbmRleCA4ZmE3MDE2
MmI4MWI5ZjFlN2EyNmExMTQ1YTQwODRhZDdkMDQ4NGZkLi4zYjNiNzU0YzllYjE5ZmU0OGVlMGEy
OTk5YzU5YmNmMDFjZTcxNTVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTQ4LDcg
KzQ4LDcgQEAgZnVuY3Rpb24gYWRkUmVtb3ZlSURCT2JqZWN0cygpCiAgICAgdmFyIGluZGV4ID0g
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIp
OwogCiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7
Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7CisgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7
CiAKICAgICB0cmFucy5hYm9ydCgpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBmdW5jdGlvbiBhZGRS
ZW1vdmVBZGRJREJPYmplY3RzKCkKICAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9
IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CiAKICAgICBldmFsQW5kTG9n
KCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKLSAgICBldmFsQW5kTG9nKCJz
dG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiLCAiRE9NRXhjZXB0aW9uLklOVkFM
SURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKIAogICAgIHZhciBzdG9yZSA9
IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51
bGwpIik7CiAgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXgg
NWZjMjUxNTU1ZTdjZjkwZjU1ZDJlZGNiNTVmZDY1NDAyZDMyY2NiZS4uNTkyMDZkOWFiMjgwNWUz
NzM2ZDY4YjEyZmY0NjM5Y2JhZjgyMWZjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CkBA
IC0yMCw3ICsyMCwxMCBAQCBQQVNTIHRyYW5zIGlzIG5vbi1udWxsLgogc3RvcmUgPSBkYi5jcmVh
dGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5k
ZXgoJ2luZGV4RmFpbCcsICd4JykKIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKQot
c3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
c3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3du
LgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFt
ZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCiAKIHRlc3RTZXRWZXJzaW9uQWJvcnQyKCk6CiBQQVNT
IHNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyBpcyBbXQpAQCAtMzMsNyArMzYsMTAgQEAgUEFTUyB0
cmFucyBpcyBub24tbnVsbC4KIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFp
bCcsIG51bGwpCiBpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpCiBk
Yi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykKLXN0b3JlLmRlbGV0ZUluZGV4KCdpbmRl
eEZhaWwnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmRlbGV0ZUluZGV4KCdpbmRl
eEZhaWwnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9y
Jwogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkKIGluZGV4
ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146616</attachid>
            <date>2012-06-08 11:28:46 -0700</date>
            <delta_ts>2012-06-12 11:50:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120608112845.patch</filename>
            <type>text/plain</type>
            <size>88628</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5ODE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlMzY5ZWZiODM1NjQ5
NzZmYjAwNDU4NDc2ZTkzYWIyMWMxY2FmYS4uNTBjMGYxOWExMjU3NzU4MzVhZDU1NGQwMTlhMGNj
N2E2OTBlMWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wNi0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25h
cHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFn
ZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbGVhclZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAgIChJREJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OklE
QkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpt
YXJrRGVsZXRlZCk6CisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJJbmRl
eEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChJREJEYXRhYmFzZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OklEQk9i
amVjdFN0b3JlTWV0YWRhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRleE1ldGFkYXRhKToKKyAg
ICAgICAgKElEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjptYXJrRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhZGF0YSk6CisgICAgICAgIChJREJPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKElEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMDggIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gcjEx
OTgwMjogUmVtb3ZlIHVubmVjZXNzYXJ5IEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKSBmcm9t
IERvY3VtZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWU3YTE5ZGQ4MDM3Nzc2
ZmM1NzliNmI3N2NlYzIxMzVkNGIwNDM5ZS4uYmMzYTY5MWUxNTA1ZmQ2Y2ZjOGEyNWY1NmUwZmM3
MDlkOTgwNDAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAxMi0wNi0wNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyBy
b3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjptZXRhZGF0YSk6CisgICAgICAgICogcHVibGlj
L1dlYklEQk1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChXZWJJ
REJPYmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYklEQkluZGV4TWV0YWRhdGEpOgor
ICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICog
c3JjL1dlYklEQk1ldGFkYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6fldlYklEQkRhdGFiYXNlTWV0
YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpuYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6dmVyc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9iamVjdFN0b3Jlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9wZXJhdG9yPSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6
OklEQkRhdGFiYXNlTWV0YWRhdGEmKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQk9iamVjdFN0b3JlTWV0YWRhdGE6On5XZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6bmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OmtleVBhdGgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhOjphdXRvSW5jcmVtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6aW5kZXhlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6Om9wZXJhdG9yPSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5k
ZXhNZXRhZGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0
YTo6V2ViSURCSW5kZXhNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0
YWRhdGE6On5XZWJJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5k
ZXhNZXRhZGF0YTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRhdGE6
OmtleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjp1bmlxdWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjptdWx0aUVudHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURC
SW5kZXhNZXRhZGF0YSYpOgorCiAyMDEyLTA2LTA4ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlLWVuYWJsZSBTSEFSRURfV09SS0VS
UyBmb3IgQW5kcm9pZCB1bnRpbCBhIGJ1aWxkIGZpeCBoYXMgYmVlbiByZXNvbHZlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAy
ZjJiNzJhM2JhODhmZmZhMjAzZWJmZTU4MTY4YzdmNzNjYWI5MWUwLi4zM2VhMmVmNGY4OWU4ZmVl
MzJmMjRkNDQwNTU3ZjVhZTI2MWFiYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC02NSw2ICs2NSw3IEBAIElEQkRhdGFiYXNl
OjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBi
ZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7
CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3Jl
YXRlKHRoaXMpOworICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAK
IElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQpAQCAtNzcsMTIgKzc4LDIzIEBAIHZvaWQgSURC
RGF0YWJhc2U6OnNldFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAg
ICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjsKKyAgICBtX21ldGFk
YXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlOjpjbGVh
clZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7
CiAgICAgQVNTRVJUX1VOVVNFRCh0cmFuc2FjdGlvbiwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24gPT0gdHJhbnNhY3Rpb24pOwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gMDsK
KyAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOworfQorCitQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKK3sK
KyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xp
c3Q6OmNyZWF0ZSgpOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsg
aXQgIT0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG9iamVj
dFN0b3JlTmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOworICAgIG9iamVjdFN0b3JlTmFtZXMtPnNv
cnQoKTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7CiB9CiAKIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpAQCAtMTIyLDcgKzEzNCwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJE
YXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgp
LCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZSht
ZXRhZGF0YSwgb2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24uZ2V0KCkpOworICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChuYW1lLCBt
ZXRhZGF0YSk7CisKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVD
cmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFz
ZSgpOwogfQpAQCAtMTM1LDcgKzE1MCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAog
ICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LT5vYmplY3RTdG9yZURlbGV0ZWQobmFtZSk7CisgICAgaWYgKCFlYykgeworICAgICAgICBtX3Zl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgICAg
ICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNz
UmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmgKaW5kZXggNjY1NjM1MmYzNjE4NzFlNGNmYTNkNmY3YzViOWQ3NDQ4MDI1ZjI3
OC4uZTBkMDVlZDkyYmM3YmY5ZmQ4YTE2MmIwOWYyMmJjZWUzYjZkNmZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAt
NTcsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiopOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBT
dHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAgU3Ry
aW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsgfQotICAg
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVOYW1lcygpOyB9CisgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsgfQorICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRyeSB0
byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwg
RGljdGlvbmFyeSgpLCBlYyk7IH0KQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
OwogCiAgICAgdm9pZCBvcGVuKCk7CisgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0
YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiBldmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIEV2ZW50VGFyZ2V0Ojpk
aXNwYXRjaEV2ZW50KGV2ZW50LCBlYyk7IH0KICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50Pik7CkBAIC0xMDMsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpOwogCisgICAgSURCRGF0YWJh
c2VNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDk5ODBjMDJhNWQz
NTYxMTQzYjY5YTI1YWQ0ZmEyY2ViMzIyNTkwNzcuLjRjZjFkYzgyNjkxZDdhZjAwNmIwOGRiN2Iy
Y2IwMzRkM2NjMWFhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzQsNiArMTM0LDE0
IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpi
YWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZTsKIH0KIAorSURC
RGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0
Cit7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVyc2lvbik7
CisgICAgZm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0
b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAg
bWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRh
KCkpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6
OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDJhNmZiM2I3NzIxNmU3YzNjNTY2Mzkz
ZWQ2YTVlNTdlODE1NmRiZDQuLjY4NjYyMTM5NmFmMzU1ODkyN2NlNDZlNzlhMmZjOTdkM2JlNzg4
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRl
bGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKKyAgICB2aXJ0dWFsIElE
QkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IGUwNzJhMGYzOTU5ZDcwZDUxYTUwYzI2YjFlYjIxNTIwYzU5NmViMWYu
LjBlNzk4MTFmNTAxZDZkNTU0OTlhMGZlN2UyNjMwYzljZmYyZDhhZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJh
Y2tzOwogY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKK3N0cnVjdCBJREJE
YXRhYmFzZU1ldGFkYXRhOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC01Miw2
ICs1Myw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZUJhY2tlCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFi
YXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFt
ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkg
Y29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
Y3BwCmluZGV4IDU3Y2RiMTIxNWE0MTU3MTg2YjM5YzY5YTZlNzIzOTQ0MmY3ZDA0YTcuLmQ2OGE0
MDZjOWJiYzNhNTBjOWM2NDVjMzZmZTFlNWMyMDQwYWExZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTQyLDEwICs0MiwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGly
ZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJJbmRleDo6SURCSW5kZXgoUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmpl
Y3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGJh
Y2tlbmQpCitJREJJbmRleDo6SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRh
dGEsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmpl
Y3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6
IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1f
b2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQorICAgICwgbV9kZWxldGVkKGZhbHNlKQogewogICAgIEFTU0VSVChtX2JhY2tlbmQpOwogICAg
IEFTU0VSVChtX29iamVjdFN0b3JlKTsKQEAgLTU5LDYgKzYxLDEwIEBAIElEQkluZGV4Ojp+SURC
SW5kZXgoKQogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKKyAgICBpZiAobV9kZWxl
dGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIHVuc2lnbmVkIHNob3J0IGRp
cmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rpb24oZGlyZWN0aW9uU3RyaW5nLCBl
Yyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNSw2ICsxMTEsMTAgQEAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXMKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkluZGV4Ojpjb3VudCIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkp
OwogICAgIG1fYmFja2VuZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMTI2LDYgKzEzNiwxMCBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3Ii
KTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAg
ICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlv
bihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCkBAIC0xNzMsNiArMTg3LDEwIEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6
OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXQi
KTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAg
IGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4g
MDsKQEAgLTE4OCw2ICsyMDYsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4g
MDsKQEAgLTIwNSw2ICsyMjcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXRLZXkiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09
IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIyMCw2ICsyNDYsMTAgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWYKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Omdl
dEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJ
bmRleDo6Z2V0S2V5Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGE5MGFjZTAzZGEwOTYzOWE1NzA4OGM0
MTYzZGQwN2ZmZTI3ZTAxOGIuLmUzYTZiNDU1MDliOTkwZjVjMjYxNTVlOTAyZDgxYzg2NTE0MmE2
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAt
MzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUg
IklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJ
REJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtNDIsMTggKzQ0LDE4IEBAIGNsYXNzIElEQk9iamVjdFN0b3JlOwogCiBj
bGFzcyBJREJJbmRleCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkluZGV4PiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJ
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RT
dG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJJbmRleChiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChtZXRhZGF0YSwgYmFja2Vu
ZCwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJJbmRleCgpOwog
CiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZS5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8
SURCQW55PiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7IH0K
LSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7IH0K
LSAgICBib29sIG11bHRpRW50cnkoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm11bHRpRW50
cnkoKTsgfQorICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1l
OyB9CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCB7
IHJldHVybiBtX29iamVjdFN0b3JlOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgo
KSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhN
RTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4K
ICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29u
dGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04MCwxMiArODIs
MTYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgbWFy
a0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKLSAgICBJREJJbmRl
eChQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwg
SURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJJbmRleChjb25zdCBJREJJbmRleE1ldGFkYXRhJiwg
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RTdG9yZSosIElE
QlRyYW5zYWN0aW9uKik7CiAKKyAgICBJREJJbmRleE1ldGFkYXRhIG1fbWV0YWRhdGE7CiAgICAg
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gbV9vYmplY3RTdG9yZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IG1fdHJhbnNhY3Rpb247CisgICAgYm9vbCBtX2RlbGV0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDZmYzM3MzE3Y2FhN2U0NjA0MTQ4ODA2Mjk0
ODM0ZmU4ZTYwMWQ3ZDEuLjcyMWM3NTBjMTc2NDI4ZDU1MThlZDRkMTdjNDk5NTBiMTAzOTllMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5n
ZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKIApAQCAtNjksNiArNzAsMTEg
QEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6fklEQkluZGV4QmFja2VuZEltcGwoKQogewogfQogCitJ
REJJbmRleE1ldGFkYXRhIElEQkluZGV4QmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gSURCSW5kZXhNZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV91bmlxdWUs
IG1fbXVsdGlFbnRyeSk7Cit9CisKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
ckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFj
a2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQg
c2hvcnQgdW50eXBlZERpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29y
VHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7CiAg
ICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaAppbmRleCAyMGYzNWM0ZjNmYTM5YWQwNGMxNTJiNDc0YWM4ZDE3MDNhMDQ1Y2Rl
Li5hMWFkNjE0Y2FmNDM2NzAxOTgwMjI0MzA3NjNhMGQyNDVmOWIzMzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktl
eVBhdGguaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgYWRkaW5nS2V5QWxsb3dlZChj
b25zdCBJREJLZXkqIGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHByaW1hcnlLZXkgPSAwKTsKIAog
ICAgIC8vIEltcGxlbWVudHMgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLgorICAgIHZpcnR1YWwg
SURCSW5kZXhNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWUoKSB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgp
IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIHZpcnR1YWwgYm9vbCB1bmlxdWUoKSB7IHJldHVy
biBtX3VuaXF1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1l
dGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiZWY3M2JjZTVkMDMxZjFhYjQ3ZWQzMWJhOGEyM2JkODE2
NjhmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk1ldGFkYXRhLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk1ldGFkYXRhX2gK
KyNkZWZpbmUgSURCTWV0YWRhdGFfaAorCisjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsK
K3N0cnVjdCBJREJJbmRleE1ldGFkYXRhOworCitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7
CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSgpIHsgfQorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCisgICAgICAgIDogbmFt
ZShuYW1lKQorICAgICAgICAsIHZlcnNpb24odmVyc2lvbikgeyB9CisgICAgU3RyaW5nIG5hbWU7
CisgICAgU3RyaW5nIHZlcnNpb247CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhPiBPYmplY3RTdG9yZU1hcDsKKyAgICBPYmplY3RTdG9yZU1hcCBv
YmplY3RTdG9yZXM7Cit9OworCitzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSB7CisgICAg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSgpIHsgfQorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9J
bmNyZW1lbnQpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0
aCkKKyAgICAgICAgLCBhdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpIHsgfQorICAgIFN0cmlu
ZyBuYW1lOworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBib29sIGF1dG9JbmNyZW1lbnQ7
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJJbmRleE1ldGFkYXRhPiBJbmRleE1h
cDsKKyAgICBJbmRleE1hcCBpbmRleGVzOworfTsKKworc3RydWN0IElEQkluZGV4TWV0YWRhdGEg
eworICAgIElEQkluZGV4TWV0YWRhdGEoKSB7IH0KKyAgICBJREJJbmRleE1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGlFbnRyeSkKKyAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwga2V5UGF0aChr
ZXlQYXRoKQorICAgICAgICAsIHVuaXF1ZSh1bmlxdWUpCisgICAgICAgICwgbXVsdGlFbnRyeSht
dWx0aUVudHJ5KSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7
CisgICAgYm9vbCB1bmlxdWU7CisgICAgYm9vbCBtdWx0aUVudHJ5OworfTsKKworfQorCisjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJUcmFjaW5nX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCAxMDlhNzUxNWY4NzU4M2EyNzZhNTIyMmVjMGJlYmI5Y2I0OTYzMWYwLi4wMTkx
OTU5M2Y1MDViYjBiNDg0NGQzMTdjZGM4YTVkNTNlOTVhOTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQW55Lmgi
CisjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlv
bi5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCkBAIC00NCw5
ICs0NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBz
aG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJPYmplY3RTdG9y
ZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IGlkYk9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCi0gICAgOiBt
X2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCitJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKKyAgICAsIG1fcHJldmlv
dXNNZXRhZGF0YShtZXRhZGF0YSkKKyAgICAsIG1fYmFja2VuZChpZGJPYmplY3RTdG9yZSkKICAg
ICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24pOwpAQCAt
NTQsMzQgKzU4LDE0IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqCiAgICAgcmVsYXhBZG9wdGlv
blJlcXVpcmVtZW50KCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0
Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6bmFtZSIpOwotICAgIHJldHVybiBt
X2JhY2tlbmQtPm5hbWUoKTsKLX0KLQotUGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0b3Jl
OjprZXlQYXRoKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjprZXlQ
YXRoIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwotfQotCiBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1f
YmFja2VuZC0+aW5kZXhOYW1lcygpOwotfQotCi1JREJUcmFuc2FjdGlvbiogSURCT2JqZWN0U3Rv
cmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3Jl
Ojp0cmFuc2FjdGlvbiIpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwotfQotCi1i
b29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKLXsKLSAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2Vu
ZC0+YXV0b0luY3JlbWVudCgpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuYmVn
aW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBpbmRl
eE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7CisgICAg
cmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTA0
LDYgKzg4LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleSB8fCAoa2V5LT50eXBlKCkgPT0gSURC
S2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE4LDYgKzEwNiwxMCBAQCBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CisgICAg
aWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoa2V5
ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
NDIsNiArMTM0LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFk
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlOjpwdXQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxp
ZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTE2Niw2ICsxNjIsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlOjpkZWxldGUiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2UpIHsKICAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTgzLDYgKzE4
MywxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAgaWYgKG1fZGVsZXRlZCkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleSB8fCAha2V5LT5pc1Zh
bGlkKCkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjAwLDYgKzIwNCwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjbwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7Cisg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0
ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3Ry
YW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNsZWFyKHJlcXVlc3QsIG1fdHJhbnNh
Y3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMjI2LDYgKzIzNCwxMSBA
QCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPAogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKKyAgICBpZiAo
IW1fdHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgeworICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICgha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1NZTlRBWF9FUlI7CiAgICAgICAg
IHJldHVybiAwOwpAQCAtMjQ0LDE2ICsyNTcsMjQgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2UK
IAogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1f
YmFja2VuZC0+Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBt
X3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAh
PSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0
ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgotICAgIGlmICghaW5kZXhCYWNr
ZW5kKQorICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVmUHRyPElEQkluZGV4
PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUoaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywg
bV90cmFuc2FjdGlvbi5nZXQoKSk7CisKKyAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKG5h
bWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRyPElEQkluZGV4PiBp
bmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCks
IHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0KG5hbWUsIGlu
ZGV4KTsKKyAgICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKKwogICAg
IHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9i
amVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmluZGV4Iik7CisgICAgaWYgKG1fZGVs
ZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlv
bi0+aXNGaW5pc2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9JTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNjUsMjIgKzI4Niw0
NiBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5pbmRleChuYW1lLCBlYyk7CiAg
ICAgQVNTRVJUKCFpbmRleEJhY2tlbmQgIT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBhbiBp
bmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2VwdGlvbiBjb2RlLiBBbmQgdmljZSB2
ZXJzYS4KLSAgICBpZiAoIWluZGV4QmFja2VuZCkKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
biAwOworCisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJh
dG9yIG1kaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuZmluZChuYW1lKTsKKyAgICAvLyBGSVhNRTog
VGhpcyBjYW4gY2hhbmdlIGludG8gYW4gQVNTRVJUIG9uY2UgaHR0cDovL3dlYmtpdC5vcmcvYi84
MDU0NyBpcyBmaXhlZC4KKyAgICBpZiAobWRpdCA9PSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCkp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQklu
ZGV4OjpjcmVhdGUoaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CisgICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWRp
dC0+c2Vjb25kLCBpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdl
dCgpKTsKICAgICBtX2luZGV4TWFwLnNldChuYW1lLCBpbmRleCk7CiAgICAgcmV0dXJuIGluZGV4
LnJlbGVhc2UoKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3Qg
U3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBtX2JhY2tlbmQtPmRlbGV0ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24t
PmJhY2tlbmQoKSwgZWMpOworICAgIGlmICghZWMpIHsKKyAgICAgICAgSURCSW5kZXhNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9pbmRleE1hcC5maW5kKG5hbWUpOworICAgICAgICBpZiAoaXQgIT0gbV9p
bmRleE1hcC5lbmQoKSkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+bWFya0RlbGV0ZWQoKTsK
KyAgICAgICAgICAgIG1faW5kZXhNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSk7CisgICAgICAgIG1f
bWV0YWRhdGEuaW5kZXhlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURC
Q3Vyc29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzI3LDYgKzM3MiwxMCBAQCBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3Rv
cmU6OmNvdW50Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0
ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2Vu
ZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBlMTFmYmQwODBkMmJlZDk3NTEzYzc4NTc2
MTI0OTA4YzAyMDdiZGZiLi42ZDk4MWExYzBkNzM0NjQ4YTM0M2E4MTFlODJlM2VhNGJmODMxOTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUg
IklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRh
dGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKQEAgLTQ5LDE4
ICs1MCwxOCBAQCBjbGFzcyBJREJBbnk7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlIDogcHVibGlj
IFJlZkNvdW50ZWQ8SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKGlkYk9iamVj
dFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9i
amVjdFN0b3JlKG1ldGFkYXRhLCBiYWNrZW5kLCB0cmFuc2FjdGlvbikpOwogICAgIH0KICAgICB+
SURCT2JqZWN0U3RvcmUoKSB7IH0KIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURCT2JqZWN0U3Rv
cmUgSURMCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPElEQkFueT4g
a2V5UGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
ZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGluZGV4TmFtZXMoKSBjb25zdDsKLSAgICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oKSBj
b25zdDsKLSAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb247
IH0KKyAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmF1
dG9JbmNyZW1lbnQ7IH0KIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZChjb250ZXh0LCB2YWx1ZSwg
MCwgZWMpOyAgfQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1dChjb250ZXh0LCB2YWx1ZSwgMCwgZWMp
OyAgfQpAQCAtOTQsMTQgKzk1LDE5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYp
OwogCisgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZv
aWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhZGF0YSgpIHsgbV9t
ZXRhZGF0YSA9IG1fcHJldmlvdXNNZXRhZGF0YTsgfQogCiBwcml2YXRlOgotICAgIElEQk9iamVj
dFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJh
bnNhY3Rpb24qKTsKKyAgICBJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFu
c2FjdGlvbiopOwogICAgIHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25Gcm9tUGVuZGluZ0xpc3QoKTsK
IAorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBJREJPYmplY3RT
dG9yZU1ldGFkYXRhIG1fcHJldmlvdXNNZXRhZGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9u
PiBtX3RyYW5zYWN0aW9uOworICAgIGJvb2wgbV9kZWxldGVkOwogCiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPElEQkluZGV4PiA+IElEQkluZGV4TWFwOwogICAgIElEQkluZGV4
TWFwIG1faW5kZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDFiMzk2MzA2
MDEzNDk2MjgxMGNjODg0MDcxMTljMDc5NmUxZWZjNGQuLjhjZDYzMDAwMTJmNzJhNjBjNDQwMDY5
M2NmOWRlYTA0MGJkYTA5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC03NCw2
ICs3NCwxNCBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0bwogewogfQogCitJREJPYmplY3RTdG9y
ZU1ldGFkYXRhIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sK
KyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBt
X2F1dG9JbmNyZW1lbnQpOworICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkKKyAgICAgICAg
bWV0YWRhdGEuaW5kZXhlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRhZGF0YSgpKTsK
KyAgICByZXR1cm4gbWV0YWRhdGE7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBhNWRlN2U1ZDJkNjIzZGRlMGYwMGZjZmQ0ZTlhNmVi
M2YwODhjNjM5Li5jZGJmYWZlOTA0MzliMjc0ODQ4YjQ3OTQ1YTAyNzAwM2Q2MDljMGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGxfaAogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUg
IklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CkBAIC00MCw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiBj
bGFzcyBJREJJbmRleEJhY2tlbmRJbXBsOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK3N0cnVjdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsIDogcHVibGlj
IElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CkBAIC02MSw2ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZXRJZChpbnQ2NF90IGlkKSB7IG1faWQgPSBp
ZDsgfQogCisgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
ICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRo
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCBhM2JjNjJjYWY4Njg1OWUzNDE4NmU0ZTMxZTY2NTk2NWIxNWM2ZTM3
Li40NDAxMDYwYzkxMDIxZWI3MmY4MzcwYzM1NmI5OGEyODQ0NWIyY2NjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0x
NTAsMjUgKzE1MCwzNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlv
bjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogICAgICAgICByZXR1cm4g
aXQtPnNlY29uZDsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
IG9iamVjdFN0b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+b2JqZWN0U3RvcmUobmFtZSwgZWMpOwot
ICAgIGlmICghb2JqZWN0U3RvcmVCYWNrZW5kKSB7Ci0gICAgICAgIEFTU0VSVChlYyk7CisgICAg
QVNTRVJUKCFvYmplY3RTdG9yZUJhY2tlbmQgIT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBh
IHN0b3JlLCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNl
IHZlcnNhLgorICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFJlZlB0
cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9i
amVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CisKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSA9IG1fZGF0YWJhc2UtPm1ldGFkYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRh
ZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQgPSBtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAhPSBtZXRhZGF0YS5vYmplY3RT
dG9yZXMuZW5kKCkpOworCisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWRpdC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQs
IHRoaXMpOwogICAgIG9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAg
cmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNy
ZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBP
YmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAg
IG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5hbWUsIG9iamVjdFN0b3JlKTsKKyAgICBtX29iamVjdFN0
b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCgh
bV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKLSAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1l
KTsKKyAgICBJREJPYmplY3RTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlTWFw
LmZpbmQobmFtZSk7CisgICAgaWYgKGl0ICE9IG1fb2JqZWN0U3RvcmVNYXAuZW5kKCkpIHsKKyAg
ICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IGl0LT5zZWNvbmQ7Cisg
ICAgICAgIG1fb2JqZWN0U3RvcmVNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICBvYmplY3RTdG9y
ZS0+bWFya0RlbGV0ZWQoKTsKKyAgICAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYWRkKG9i
amVjdFN0b3JlKTsKKyAgICB9CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KCkKQEAg
LTIzMCw4ICsyNDIsMTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAgICAgICAg
IHJlcXVlc3QtPmFib3J0KCk7CiAgICAgfQogCi0gICAgaWYgKG1fbW9kZSA9PSBJREJUcmFuc2Fj
dGlvbjo6VkVSU0lPTl9DSEFOR0UpCisgICAgaWYgKG1fbW9kZSA9PSBJREJUcmFuc2FjdGlvbjo6
VkVSU0lPTl9DSEFOR0UpIHsKICAgICAgICAgbV9kYXRhYmFzZS0+Y2xlYXJWZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24odGhpcyk7CisgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVTZXQ6Oml0ZXJh
dG9yIGl0ID0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RT
dG9yZUNsZWFudXBTZXQuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+cmVzZXRNZXRh
ZGF0YSgpOworICAgIH0KICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAKICAgICBpZiAobV9jb250
ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggMWNlYmU5YzE5
M2Q5MjdiYzE1OTYyNjdlYjczNTY4YjcxZmI1OWU3Mi4uNWYyYjc3NGY2ZDNjOTAzNzA2YTA3OWY4
MjNiNWU0ZmQ5OTJkYWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnRM
aXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNjgsNiArNjksNyBAQCBwdWJsaWM6CiAKICAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKICAgICBi
b29sIGlzRmluaXNoZWQoKSBjb25zdDsKKyAgICBib29sIGlzVmVyc2lvbkNoYW5nZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kZSA9PSBWRVJTSU9OX0NIQU5HRTsgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBtb2RlKCkgY29uc3Q7CiAgICAgSURCRGF0YWJhc2UqIGRiKCkgY29uc3Q7CkBAIC0xNDAsNiAr
MTQyLDkgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURC
T2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVNYXA7CiAgICAgSURCT2JqZWN0U3RvcmVNYXAg
bV9vYmplY3RTdG9yZU1hcDsKIAorICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SURCT2JqZWN0
U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVTZXQ7CisgICAgSURCT2JqZWN0U3RvcmVTZXQgbV9vYmpl
Y3RTdG9yZUNsZWFudXBTZXQ7CisKICAgICBIYXNoU2V0PElEQkN1cnNvcio+IG1fb3BlbkN1cnNv
cnM7CiAKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggYjNlNjYyN2VjZDI0NGY0ZDdjNzM3NGUyYzRkNjg3NDg3NWEzNDQ5Zi4uM2ExMTE3
MDFjNTcwM2I4Yzg2YjZmMWZiNGQ0NGU2YjM5MTRiZjgzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTQ4NCw2ICsxNDg0LDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQ29kaW5nLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJC
YWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk1l
dGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDk5MjA0Yjg4NmFiN2VjMWNm
NGQyNGE1OTNjY2RjZDAyN2Q1NDk5MDEuLmEzOWVhZTZjZmUzNDk3ODBiZGIzMTUwNDNjNDRhMzNi
YzNiNDFhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE4MSw2ICsxODEsNyBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViSURCS2V5UGF0aC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklE
QktleVJhbmdlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCTWV0YWRhdGEuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcsCkBAIC01NTgsNiArNTU5LDcgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UmFu
Z2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk1ldGFkYXRhLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggYjM5ODUzNDE2NTU0M2ExOTdhNjE3OTdkNTQ3
NDlkYTg1ZTNhMzU2ZS4uZThlNjQ5N2I3NThjNjA2MjZiMDEwMmQ5NjZhZGRiN2ZmMmZjZTMyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVk
ZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDQs
NiArNDUsMTEgQEAgY2xhc3MgV2ViSURCRGF0YWJhc2UgewogcHVibGljOgogICAgIHZpcnR1YWwg
fldlYklEQkRhdGFiYXNlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIFdlYklEQkRhdGFiYXNlTWV0YWRh
dGEgbWV0YWRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gV2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6Y3JlYXRlKCk7
CisgICAgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDVhMDZmZWY1N2NiMDQ2OGQ1
YWRkZGY5ODFiMmU4ZmFjMjcyMmFkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYklEQk1ldGFkYXRhX2gKKyNkZWZpbmUgV2ViSURCTWV0YWRhdGFfaAorCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJp
dmF0ZU93blB0ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURC
RGF0YWJhc2VNZXRhZGF0YTsKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGE7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJ
REJJbmRleE1ldGFkYXRhOworY2xhc3MgV2ViSURCS2V5UGF0aDsKK2NsYXNzIFdlYklEQk9iamVj
dFN0b3JlTWV0YWRhdGE7CisKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YWRhdGEgeworcHVibGlj
OgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQkRhdGFiYXNlTWV0YWRhdGEgY3JlYXRl
KCk7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCRGF0YWJhc2VNZXRhZGF0YSBjcmVh
dGUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIGNvbnN0
IFdlYlZlY3RvcjxXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhPiYgb2JqZWN0X3N0b3Jlcyk7Cisg
ICAgV0VCS0lUX0VYUE9SVCBXZWJJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFdlYklEQkRhdGFi
YXNlTWV0YWRhdGEmKTsKKworICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG5hbWUoKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCBXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gb2JqZWN0U3Rv
cmVzKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJEYXRh
YmFzZU1ldGFkYXRhKCk7CisgICAgV2ViSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBXZWJDb3Jl
OjpJREJEYXRhYmFzZU1ldGFkYXRhJik7CisgICAgfldlYklEQkRhdGFiYXNlTWV0YWRhdGEoKTsK
KyAgICBXZWJJREJEYXRhYmFzZU1ldGFkYXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURC
RGF0YWJhc2VNZXRhZGF0YSYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGEmKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRl
T3duUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGE+IG1fcHJpdmF0ZTsKK307CisKK2Ns
YXNzIFdlYklEQk9iamVjdFN0b3JlTWV0YWRhdGEgeworcHVibGljOgorICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYklEQk9iamVjdFN0b3JlTWV0YWRhdGEgY3JlYXRlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3Qg
V2ViVmVjdG9yPFdlYklEQkluZGV4TWV0YWRhdGE+JiBpbmRleGVzKTsKKyAgICBXRUJLSVRfRVhQ
T1JUIFdlYklEQk9iamVjdFN0b3JlTWV0YWRhdGEoY29uc3QgV2ViSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSYpOworCisgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OworICAg
IFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3Q7CisgICAgV0VCS0lU
X0VYUE9SVCBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIFdl
YlZlY3RvcjxXZWJJREJJbmRleE1ldGFkYXRhPiBpbmRleGVzKCkgY29uc3Q7CisKKyNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhKCk7CisgICAg
V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1l
dGFkYXRhJik7CisgICAgfldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGEoKTsKKyAgICBXZWJJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYpOworICAgIG9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBXZWJQcml2YXRlT3du
UHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGE+IG1fcHJpdmF0ZTsKK307CisKK2Ns
YXNzIFdlYklEQkluZGV4TWV0YWRhdGEgeworcHVibGljOgorICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklEQkluZGV4TWV0YWRhdGEgY3JlYXRlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOworICAgIFdF
QktJVF9FWFBPUlQgV2ViSURCSW5kZXhNZXRhZGF0YShjb25zdCBXZWJJREJJbmRleE1ldGFkYXRh
Jik7CisKKyAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCBXZWJJREJLZXlQYXRoIGtleVBhdGgoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgdW5pcXVlKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIG11bHRpRW50
cnkoKSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYklEQkluZGV4
TWV0YWRhdGEoKTsKKyAgICBXZWJJREJJbmRleE1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQklu
ZGV4TWV0YWRhdGEmKTsKKyAgICB+V2ViSURCSW5kZXhNZXRhZGF0YSgpOworICAgIFdlYklEQklu
ZGV4TWV0YWRhdGEmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhJik7
CisgICAgb3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYoKSBjb25zdDsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYlByaXZhdGVPd25QdHI8V2ViQ29yZTo6SURCSW5k
ZXhNZXRhZGF0YT4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJJREJLZXlQYXRoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA2ZTUzNTQ5OWEzOGM0YTkz
NTA5YTZlNGY1NTZjZjk4YWM4ZjIwMDczLi5lYjY2MDFiZDI0NDM4YzUwZWRmNTFhZmRmZGY3MDcy
ZGZmYzM2NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEs
MTEgQEAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgp
CiB7CiB9CiAKK0lEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1l
dGFkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YWRhdGEo
KTsKK30KKwogU3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggYjc4YWM2
OTkyY2RjZmYxMzg3YTllYzA4YjM4NjhlYjZjZmM0MzM5Mi4uZDQ3NTY5NjliNGQyYzQyNGQ1ZmZh
MmVhM2ZhZjBhOTljNzhkYTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURC
RGF0YWJhc2VCYWNrZW5kUHJveHkoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
Y3BwCmluZGV4IDRiZTQzZGMxNGQ4MTdkOTU5YWVmNThhMTZhZWNmNDg1YmNiNWI2YmEuLmY3Yzg3
M2FmNWYzYjI3ZWUyNWYxNzUxNzkzMmFiYjE3YTViNWUwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEg
QEAKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHku
aCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFu
c2FjdGlvbkltcGwuaCIKIApAQCAtNTEsNiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+
V2ViSURCRGF0YWJhc2VJbXBsKCkKIHsKIH0KIAorV2ViSURCRGF0YWJhc2VNZXRhZGF0YSBXZWJJ
REJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kYXRhYmFz
ZUJhY2tlbmQtPm1ldGFkYXRhKCk7Cit9CisKIFdlYlN0cmluZyBXZWJJREJEYXRhYmFzZUltcGw6
Om5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bmFtZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRl
eCA5NjU3MWJiZTljMWQ5NmNiZDNmOWM3ZDNhZDgzMTc5Yjk2MTkzZGQ5Li44OGJjZDllYThhYmUx
NmE1NjhlYjI0YzI2NWFlMzIxMTZiNzczMDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIGNsYXNzIFdlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgV2ViSURCRGF0YWJhc2VNZXRhZGF0YTsKIGNsYXNz
IFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAgLTQ5LDYg
KzUwLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB+V2Vi
SURCRGF0YWJhc2VJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIFdlYklEQkRhdGFiYXNlTWV0YWRhdGEg
bWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViRE9N
U3RyaW5nTGlzdCBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE5NjRlZTAyOTQyMWEw
OTA2YTRiZjc3MDRiYzFhNDQ5NTA5MWQwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcApAQCAtMCwwICsxLDIyNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJREJNZXRhZGF0YS5oIgorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgor
I2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJREJEYXRhYmFzZU1ldGFkYXRhIFdl
YklEQkRhdGFiYXNlTWV0YWRhdGE6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIFdlYklEQkRhdGFi
YXNlTWV0YWRhdGEoSURCRGF0YWJhc2VNZXRhZGF0YSgpKTsKK30KKworV2ViSURCRGF0YWJhc2VN
ZXRhZGF0YSBXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIGNvbnN0IFdlYlZlY3RvcjxXZWJJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhPiYgb2JqZWN0U3RvcmVzKQoreworICAgIElEQkRhdGFiYXNlTWV0YWRh
dGEgbWV0YWRhdGEobmFtZSwgdmVyc2lvbik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBv
YmplY3RTdG9yZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5z
ZXQob2JqZWN0U3RvcmVzW2ldLm5hbWUoKSwgb2JqZWN0U3RvcmVzW2ldKTsKKyAgICByZXR1cm4g
V2ViSURCRGF0YWJhc2VNZXRhZGF0YShtZXRhZGF0YSk7Cit9CisKK1dlYklEQkRhdGFiYXNlTWV0
YWRhdGE6OldlYklEQkRhdGFiYXNlTWV0YWRhdGEoKQorICAgIDogbV9wcml2YXRlKG5ldyBJREJE
YXRhYmFzZU1ldGFkYXRhKCkpCit7Cit9CisKK1dlYklEQkRhdGFiYXNlTWV0YWRhdGE6OldlYklE
QkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgV2ViSURCRGF0YWJhc2VNZXRhZGF0YSYgb3RoZXIpCisg
ICAgOiBtX3ByaXZhdGUobmV3IElEQkRhdGFiYXNlTWV0YWRhdGEob3RoZXIpKQoreworfQorCitX
ZWJJREJEYXRhYmFzZU1ldGFkYXRhOjp+V2ViSURCRGF0YWJhc2VNZXRhZGF0YSgpCit7CisgICAg
bV9wcml2YXRlLnJlc2V0KDApOworfQorCitXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VNZXRhZGF0
YTo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmFtZTsKK30KKworV2Vi
U3RyaW5nIFdlYklEQkRhdGFiYXNlTWV0YWRhdGE6OnZlcnNpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3ByaXZhdGUtPnZlcnNpb247Cit9CisKK1dlYlZlY3RvcjxXZWJJREJPYmplY3RTdG9y
ZU1ldGFkYXRhPiBXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpvYmplY3RTdG9yZXMoKSBjb25zdAor
eworICAgIHNpemVfdCBjb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4obV9wcml2YXRlLT5vYmpl
Y3RTdG9yZXMuc2l6ZSgpKTsKKyAgICBXZWJWZWN0b3I8V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0
YT4gb2JqZWN0U3RvcmVzKGNvdW50KTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChJREJE
YXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3By
aXZhdGUtPm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX3ByaXZhdGUtPm9iamVjdFN0b3Jl
cy5lbmQoKTsgKytpdCkKKyAgICAgICAgb2JqZWN0U3RvcmVzW2krK10gPSBpdC0+c2Vjb25kOwor
ICAgIHJldHVybiBvYmplY3RTdG9yZXM7Cit9CisKK1dlYklEQkRhdGFiYXNlTWV0YWRhdGE6Oldl
YklEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkRhdGFiYXNlTWV0YWRhdGEobWV0YWRh
dGEpKQoreworfQorCitXZWJJREJEYXRhYmFzZU1ldGFkYXRhJiBXZWJJREJEYXRhYmFzZU1ldGFk
YXRhOjpvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRh
dGEpCit7CisgICAgbV9wcml2YXRlLnJlc2V0KG5ldyBJREJEYXRhYmFzZU1ldGFkYXRhKG1ldGFk
YXRhKSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpv
cGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICoobV9wcml2YXRlLmdldCgpKTsKK30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YSBXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNv
bnN0IFdlYlZlY3RvcjxXZWJJREJJbmRleE1ldGFkYXRhPiYgaW5kZXhlcykKK3sKKyAgICBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIFdlYklEQktleVBhdGgoa2V5UGF0aCks
IGF1dG9JbmNyZW1lbnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhlcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgbWV0YWRhdGEuaW5kZXhlcy5zZXQoaW5kZXhlc1tpXS5uYW1lKCks
IGluZGV4ZXNbaV0pOworICAgIHJldHVybiBXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhKG1ldGFk
YXRhKTsKK30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6V2ViSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSgpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSkK
K3sKK30KKworV2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YShjb25zdCBXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvdGhlcikKKyAgICA6IG1fcHJp
dmF0ZShuZXcgSURCT2JqZWN0U3RvcmVNZXRhZGF0YShvdGhlcikpCit7Cit9CisKK1dlYklEQk9i
amVjdFN0b3JlTWV0YWRhdGE6On5XZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhKCkKK3sKKyAgICBt
X3ByaXZhdGUucmVzZXQoMCk7Cit9CisKK1dlYlN0cmluZyBXZWJJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcml2YXRlLT5uYW1lOworfQorCitX
ZWJJREJLZXlQYXRoIFdlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OmtleVBhdGgoKSBjb25zdAor
eworICAgIHJldHVybiBXZWJJREJLZXlQYXRoKG1fcHJpdmF0ZS0+a2V5UGF0aCk7Cit9CisKK2Jv
b2wgV2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6YXV0b0luY3JlbWVudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+YXV0b0luY3JlbWVudDsKK30KKworV2ViVmVjdG9yPFdlYklE
QkluZGV4TWV0YWRhdGE+IFdlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OmluZGV4ZXMoKSBjb25z
dAoreworICAgIHNpemVfdCBjb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4obV9wcml2YXRlLT5p
bmRleGVzLnNpemUoKSk7CisgICAgV2ViVmVjdG9yPFdlYklEQkluZGV4TWV0YWRhdGE+IGluZGV4
ZXMoY291bnQpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0
YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcHJpdmF0ZS0+aW5kZXhlcy5i
ZWdpbigpOyBpdCAhPSBtX3ByaXZhdGUtPmluZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGlu
ZGV4ZXNbaSsrXSA9IGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGluZGV4ZXM7Cit9CisKK1dlYklE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGEoY29uc3QgV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCisgICAgOiBtX3ByaXZhdGUo
bmV3IElEQk9iamVjdFN0b3JlTWV0YWRhdGEobWV0YWRhdGEpKQoreworfQorCitXZWJJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhJiBXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpvcGVyYXRvcj0oY29u
c3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgbV9w
cml2YXRlLnJlc2V0KG5ldyBJREJPYmplY3RTdG9yZU1ldGFkYXRhKG1ldGFkYXRhKSk7CisgICAg
cmV0dXJuICp0aGlzOworfQorCitXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpvcGVyYXRvciBj
b25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJigpIGNvbnN0Cit7CisgICAgcmV0
dXJuICoobV9wcml2YXRlLmdldCgpKTsKK30KKworV2ViSURCSW5kZXhNZXRhZGF0YSBXZWJJREJJ
bmRleE1ldGFkYXRhOjpjcmVhdGUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQoreworICAgIHJl
dHVybiBJREJJbmRleE1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7
Cit9CisKK1dlYklEQkluZGV4TWV0YWRhdGE6OldlYklEQkluZGV4TWV0YWRhdGEoKQorICAgIDog
bV9wcml2YXRlKG5ldyBJREJJbmRleE1ldGFkYXRhKCkpCit7Cit9CisKK1dlYklEQkluZGV4TWV0
YWRhdGE6OldlYklEQkluZGV4TWV0YWRhdGEoY29uc3QgV2ViSURCSW5kZXhNZXRhZGF0YSYgb3Ro
ZXIpCisgICAgOiBtX3ByaXZhdGUobmV3IElEQkluZGV4TWV0YWRhdGEob3RoZXIpKQoreworfQor
CitXZWJJREJJbmRleE1ldGFkYXRhOjp+V2ViSURCSW5kZXhNZXRhZGF0YSgpCit7CisgICAgbV9w
cml2YXRlLnJlc2V0KDApOworfQorCitXZWJTdHJpbmcgV2ViSURCSW5kZXhNZXRhZGF0YTo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bmFtZTsKK30KKworV2ViSURCS2V5
UGF0aCBXZWJJREJJbmRleE1ldGFkYXRhOjprZXlQYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViSURCS2V5UGF0aChtX3ByaXZhdGUtPmtleVBhdGgpOworfQorCitib29sIFdlYklEQkluZGV4
TWV0YWRhdGE6OnVuaXF1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+dW5pcXVl
OworfQorCitib29sIFdlYklEQkluZGV4TWV0YWRhdGE6Om11bHRpRW50cnkoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ByaXZhdGUtPm11bHRpRW50cnk7Cit9CisKKworV2ViSURCSW5kZXhNZXRh
ZGF0YTo6V2ViSURCSW5kZXhNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRh
JiBtZXRhZGF0YSkKKyAgICA6IG1fcHJpdmF0ZShuZXcgSURCSW5kZXhNZXRhZGF0YShtZXRhZGF0
YSkpCit7Cit9CisKK1dlYklEQkluZGV4TWV0YWRhdGEmIFdlYklEQkluZGV4TWV0YWRhdGE6Om9w
ZXJhdG9yPShjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKK3sKKyAg
ICBtX3ByaXZhdGUucmVzZXQobmV3IElEQkluZGV4TWV0YWRhdGEobWV0YWRhdGEpKTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK1dlYklEQkluZGV4TWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdl
YkNvcmU6OklEQkluZGV4TWV0YWRhdGEmKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKihtX3ByaXZh
dGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5ZmRmMjYxMTA3ZmNmZWFlMmE0OGFmYzk1YmZl
ZDViZDRmZTIwODIuLjk4ZDRhZDA0NjRkYjhjODAzZTk1NjE0NGM2YmJkMGVkNTNkY2ViMzUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMi0wNi0wNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJv
bnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZWQtb2JqZWN0cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tZXRh
ZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21l
dGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEv
aW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbDogVGhpcyB0ZXN0
IHdhcworICAgICAgICBjcmVhdGluZyBhIHRyYW5zYWN0aW9uIGluc2lkZSB0aGUgc2V0VmVyc2lv
biBjYWxsYmFjayBhbmQgYXNzdW1pbmcgdGhlCisgICAgICAgIHNldFZlcnNpb24ncyBzY2hlbWEg
Y2hhbmdlcyB3ZXJlIGFscmVhZHkgcHJlc2VudC4gVGhpcyB3aWxsIGJlIHByZXZlbnRlZAorICAg
ICAgICBieSBhIGZ1dHVyZSBjaGFuZ2UgKHdlYmtpdC5vcmcvYi84MDU0NykgYnV0IGl0IHRyaXBz
IHVwIHRoaXMgY2hhbmdlLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
ZWxldGVkLW9iamVjdHMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvcGVu
RGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
b3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKG9wZW5EYXRhYmFzZSk6
CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZmlyc3RPcGVuLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoZmlyc3RPcGVu
LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZpcnN0T3Bl
bi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4pOgorICAgICAgICAoc2Vj
b25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBs
ZXRlKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChzZWNvbmRPcGVuKToKKyAgICAgICAgKHRoaXJkT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1
ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmFib3J0KToKKyAgICAgICAgKHRoaXJkT3Blbi5yZXF1ZXN0
Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuKToKKyAgICAgICAgKGZvdXJ0aE9wZW4u
cmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6Cisg
ICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZm91cnRo
T3Blbik6CisgICAgICAgIChjaGVja1N0YXRlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzOiBPcGVyYXRpb25zIG9uCisgICAgICAg
IGEgZGVsZXRlZCBvYmplY3Qgc3RvcmUgYXJlIG5vdyBwcmV2ZW50ZWQgcGVyIHNwZWMuCisgICAg
ICAgIChhZGRSZW1vdmVJREJPYmplY3RzKToKKyAgICAgICAgKGFkZFJlbW92ZUFkZElEQk9iamVj
dHMpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBl
Y3RlZC50eHQ6CisKIDIwMTItMDYtMDggIE5vZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwu
Y29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUnVuIG9wdGltaXplLWJhc2VsaW5lcyBvdmVyIGNh
bnZhcy10b0RhdGFVUkwtd2VicC5odG1sIHJlc3VsdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlmNjZhZmUzYTA4YWZiNDkxN2FkMzM2NDkzNTgzMmNjMWUyMTI1OTMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODcgQEAKK1Rlc3QgdGhhdCBJbmRleGVkREIgb2JqZWN0
cyB0aGF0IGhhdmUgYmVlbiBkZWxldGVkIHRocm93IGV4Y2VwdGlvbnMKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Vi
a2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwg
c2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lCityZXF1
ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKKworb3BlbkRhdGFiYXNlKCk6
CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbiA9IHJlcXVlc3Qu
cmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbi5zZXRWZXJzaW9uKCcxJykKKworZGVsZXRlZFN0
b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykKK3N0b3Jl
ID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKQorZGVsZXRlZEluZGV4ID0g
c3RvcmUuY3JlYXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcsICdwYXRoJykKKworY29ubmVjdGlvbi5k
ZWxldGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykKK3N0b3JlLmRlbGV0ZUluZGV4KCdkZWxl
dGVkSW5kZXgnKQorCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLnB1dCgw
LCAwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5hZGQoMCwgMCkKK1BBU1MgRXhj
ZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RB
VEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNl
cHRpb24gZnJvbSBkZWxldGVkU3RvcmUuZGVsZXRlKDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhy
b3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBl
bmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVs
ZXRlZFN0b3JlLmdldCgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRT
dGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5jbGVhcigp
CitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5J
TlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBl
Y3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLm9wZW5DdXJzb3IoKQorUEFTUyBFeGNl
cHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFU
RV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdwYXRoJykKK1BBU1Mg
RXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURf
U1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuaW5kZXgoJ25hbWUnKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIK
K1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBm
cm9tIGRlbGV0ZWRTdG9yZS5kZWxldGVJbmRleCgnbmFtZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFT
UyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGVsZXRlZFN0b3JlLmNvdW50KCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZh
bGlkU3RhdGVFcnJvcicKKworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRJbmRleC5v
cGVuQ3Vyc29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVF
cnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkSW5kZXgub3BlbktleUN1cnNv
cigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitF
eHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4LmdldCgwKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGRlbGV0ZWRJbmRleC5nZXRLZXkoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1l
IGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVk
SW5kZXguY291bnQoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0
ZUVycm9yJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2Jq
ZWN0cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3Rz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzkzZjUyZjUwOWM1NDBjNGI3MGNiYjQ4YTIxOWIzZmE4ZDFhNzFl
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RlbGV0
ZWQtb2JqZWN0cy5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGV0ZWQtb2JqZWN0cy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM2ZDQ3NWFhNDI3
YmFjZmFmZjEzNDdhMzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODgg
QEAKK1Rlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGlu
ZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRl
eGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2Vs
Zi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNlbGYubG9jYXRp
b24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQor
CitmaXJzdE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0
aW9uMSA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbign
MScpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0b3JlMSA9IGNvbm5lY3Rp
b24xLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjFzdG9yZTEuY3JlYXRl
SW5kZXgoJ2luZGV4MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIK
K1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25u
ZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24xLmNsb3NlKCkK
Kworc2Vjb25kT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5l
Y3Rpb24yID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMi5zZXRWZXJzaW9u
KCcyJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTInKQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUxJykKK2Nvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpCitQ
QVNTIGNvbm5lY3Rpb24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24yLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5s
ZW5ndGggaXMgMgorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVk
IG9uIGNsb3NlCitjb25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3BlbigpOgorcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQKK3Jl
cXVlc3QgPSBjb25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1
bHQKK2Nvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKQorY29ubmVjdGlvbjNz
dG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24zc3RvcmUxLmNy
ZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24zLnZlcnNpb24gaXMg
IjMiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1Mg
Y29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHBy
b3BlcnRpZXMgc2hvdWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFucy5hYm9ydCgpCitDb25u
ZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5l
Y3Rpb24zLmNsb3NlKCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSkKK2Nvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0
aW9uNC5zZXRWZXJzaW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb240
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRl
eDQnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNvbm5l
Y3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRzdG9y
ZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxk
IGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9zZSgpCisKK2NoZWNrU3Rh
dGUoKToKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVjdGlvbjEu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3JlMS5pbmRl
eE5hbWVzLmxlbmd0aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBpcyAiMiIKK1BB
U1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25uZWN0
aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjMudmVy
c2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMg
MgorUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1Mg
Y29ubmVjdGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0
aCBpcyAzCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5o
dG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NDJjZmU1OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUyZTNmCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApAQCAt
MCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgt
cHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKaW5kZXgg
Yjc4MDVmMWZhYTQ1YTdhOWQ4ZGRlMjk2NmI3YWVjN2YzYmVjODMxNy4uNGEwYjgyMmVjNzdiMDA3
NWE1NjgyM2U0OGI0MjUyZWZiZjRhYzg5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5v
LWR1cGxpY2F0ZS1leHBlY3RlZC50eHQKQEAgLTE2LDcgKzE2LDcgQEAgUEFTUyBJREJLZXlSYW5n
ZSA9PSBudWxsIGlzIGZhbHNlCiBpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikKIG9w
ZW5TdWNjZXNzKCk6CiBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLXJlcXVlc3QgPSBkYi5zZXRW
ZXJzaW9uKCcxJykKK3NldFZlcnNpb25SZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCiBEZWxl
dGVkIGFsbCBvYmplY3Qgc3RvcmVzLgogb2JqZWN0U3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9y
ZShvYmplY3RTdG9yZU5hbWUpOwogRmlyc3QsIGFkZCBhbGwgb3VyIGRhdGEgdG8gdGhlIG9iamVj
dCBzdG9yZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5k
ZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUuaHRtbAppbmRleCA4YTk2Mzg3
YmRlYTg2OWYyMmQwMTNiM2FiZTZhZmYyMjFkMTZlY2FmLi5iZTliZWI3M2U3NGYwM2FjNzM1NDU5
NmI0ZjliNTJhOWM5MmYyYTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1s
CkBAIC03Nyw5ICs3Nyw5IEBAIGZ1bmN0aW9uIG9wZW5TdWNjZXNzKCkKICAgICAgICAgeyBrZXk6
ICIyMzctMjMtNzc0MCIsIHZhbHVlOiB7IG5hbWU6ICJTYW0iLCBoZWlnaHQ6IDczLCB3ZWlnaHQ6
IDExMCB9IH0sCiAgICAgXTsKIAotICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
ZGIuc2V0VmVyc2lvbignMScpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBjcmVhdGVBbmRQ
b3B1bGF0ZU9iamVjdFN0b3JlOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrOworICAgIHNldFZlcnNpb25SZXF1ZXN0ID0gZXZhbEFuZExvZygic2V0VmVyc2lv
blJlcXVlc3QgPSBkYi5zZXRWZXJzaW9uKCcxJykiKTsKKyAgICBzZXRWZXJzaW9uUmVxdWVzdC5v
bnN1Y2Nlc3MgPSBjcmVhdGVBbmRQb3B1bGF0ZU9iamVjdFN0b3JlOworICAgIHNldFZlcnNpb25S
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKIH0KIAogZnVuY3Rpb24g
Y3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZSgpCkBAIC0xMDksOCArMTA5LDcgQEAgZnVuY3Rp
b24gY3JlYXRlSW5kZXhlcygpCiAgICAgICBldmFsQW5kTG9nKCJvYmplY3RTdG9yZS5jcmVhdGVJ
bmRleChpbmRleERhdGFbaV0ubmFtZSwgaW5kZXhEYXRhW2ldLmtleVBhdGgsIGluZGV4RGF0YVtp
XS5vcHRpb25zKTsiKTsKICAgICB9CiAKLQotICAgIHRlc3RQcmV2KCk7CisgICAgc2V0VmVyc2lv
blJlcXVlc3QucmVzdWx0Lm9uY29tcGxldGUgPSB0ZXN0UHJldjsKIH0KIAogZnVuY3Rpb24gdGVz
dFByZXYoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2RlbGV0ZWQtb2JqZWN0cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9kZWxldGVkLW9iamVjdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk3YTA1YWJmY2M0MWI3MmRi
ZWRkYTVhMTIzNWEyY2NlZDA5NTAyNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanMKQEAgLTAsMCArMSw2
NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0
cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoYXQgSW5kZXhlZERCIG9i
amVjdHMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB0aHJvdyBleGNlcHRpb25zIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZXZhbEFuZExv
ZygiZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZSIpOworICAgIGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gb3BlbkRhdGFiYXNlOworfQorCitmdW5jdGlvbiBvcGVuRGF0YWJhc2UoKQoreworICAgIGRl
YnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlbkRhdGFiYXNlKCk6Iik7CisgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24uc2V0VmVyc2lvbign
MScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiZGVsZXRlZFN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RT
dG9yZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlID0g
Y29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKSIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygiZGVsZXRlZEluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcs
ICdwYXRoJykiKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZXZhbEFu
ZExvZygiY29ubmVjdGlvbi5kZWxldGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUluZGV4KCdkZWxldGVkSW5kZXgnKSIp
OworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkZWxldGVkU3RvcmUucHV0KDAsIDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuYWRkKDAsIDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZB
TElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFs
QW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZGVsZXRlKDApIiwgIkRPTUV4Y2VwdGlv
bi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAg
ICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZ2V0KDApIiwgIkRPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuY2xlYXIoKSIsICJET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAg
ICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLm9wZW5DdXJzb3Io
KSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9y
JyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgJ3BhdGgnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmluZGV4KCduYW1lJykiLCAiRE9NRXhjZXB0aW9uLklOVkFM
SURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKKyAgICAgICAgICAgIGV2YWxB
bmRFeHBlY3RFeGNlcHRpb24oImRlbGV0ZWRTdG9yZS5kZWxldGVJbmRleCgnbmFtZScpIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7Cisg
ICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuY291bnQoKSIs
ICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIp
OworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhj
ZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbkN1cnNvcigpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElE
X1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5k
RXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbktleUN1cnNvcigpIiwgIkRPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAg
ICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguZ2V0KDApIiwgIkRPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAg
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguZ2V0S2V5KDApIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7
CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXguY291bnQo
KSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9y
JyIpOworCisgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJh
Y2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZmluaXNoSlNUZXN0OworICAgICAg
ICB9OworICAgIH07Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZi
NTgyNjg3NmExYzJlYzNlZWNmMDAwN2VlYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2
IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRz
KCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRhdGFiYXNl
IG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhl
ZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsK
K30KKworZnVuY3Rpb24gZmlyc3RPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
ImZpcnN0T3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFu
ZExvZygiY29ubmVjdGlvbjEgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9y
ZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAn
cGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlv
bjEudmVyc2lvbiIsICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjEub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5l
Y3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0
aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9zZSgpIik7CisgICAgICAgICAg
ICAgICAgc2Vjb25kT3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9Owor
fQorCitmdW5jdGlvbiBzZWNvbmRPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWco
InNlY29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExv
ZygicmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKSIpOworICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAn
cGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlv
bjIudmVyc2lvbiIsICIyIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5l
Y3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgdHJh
bnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0
aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jbG9zZSgpIik7CisgICAgICAgICAg
ICAgICAgdGhpcmRPcGVuKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9
CisKK2Z1bmN0aW9uIHRoaXJkT3BlbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0
aGlyZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZlcnNpb24oJzMnKSIpOworICAgICAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVx
dWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTMnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0
aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMu
dmVyc2lvbiIsICIzIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0
U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rp
b24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMu
b25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgICAgICAgICAgdHJh
bnMub25hYm9ydCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0
aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7CisgICAgICAgICAg
ICAgICAgZm91cnRoT3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRlYnVnKCJD
b25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfTsKKyAgICB9
OworfQorCitmdW5jdGlvbiBmb3VydGhPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoImZvdXJ0aE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERC
Lm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24oJzQnKSIpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5z
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
Y29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQn
LCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVj
dGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjQu
b2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAg
dHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJh
bnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25u
ZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5jbG9zZSgpIik7CisgICAgICAg
ICAgICAgICAgY2hlY2tTdGF0ZSgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9
OworfQorCitmdW5jdGlvbiBjaGVja1N0YXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVi
dWcoImNoZWNrU3RhdGUoKToiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVj
dGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0
b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEu
aW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUo
ImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRC
ZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVn
KCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIs
ICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5n
dGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
Y29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9i
amVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjRz
dG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qcwppbmRl
eCA2MDYxYzdkY2Q4YjU3NGM2ZGE1NmE3MTkxNWZlNDZhZjUwNzk4NzQ1Li40ZGE5ZGNlMmMwODE4
ZGY4MGRmOGQ5Y2M5MjM3NjUxOTc2ODA4ZjMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tYmFzaWNzLmpzCisrKyBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanMK
QEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gYWRkUmVtb3ZlSURCT2JqZWN0cygpCiAgICAgdmFy
IGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWls
JywgJ3gnKSIpOwogCiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
RmFpbCcpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcp
Iik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRl
RXJyb3InIik7CiAKICAgICB0cmFucy5hYm9ydCgpOwogfQpAQCAtNzQsNyArNzQsNyBAQCBmdW5j
dGlvbiBhZGRSZW1vdmVBZGRJREJPYmplY3RzKCkKICAgICB2YXIgaW5kZXggPSBldmFsQW5kTG9n
KCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpIik7CiAKICAgICBl
dmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykiKTsKLSAgICBldmFs
QW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiKTsKKyAgICBldmFsQW5kRXhw
ZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykiLCAiRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKIAogICAgIHZh
ciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
RmFpbCcsIG51bGwpIik7CiAgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1leHBlY3RlZC50
eHQKaW5kZXggMGRmYzViZGY5ZTRlYzM0NmU0NThmOWNhNmRkMWU0YWFhZmVkOTg5Yi4uMmQ4ZGNl
NDAzMGFmOWEyYWNiNDQzNjc0ZWVkZTM4OWUzNTE4ODJiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0
ZWQudHh0CkBAIC0yMCw3ICsyMCwxMCBAQCBQQVNTIHRyYW5zIGlzIG5vbi1udWxsLgogc3RvcmUg
PSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkKIGluZGV4ID0gc3RvcmUu
Y3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIGRiLmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9y
ZUZhaWwnKQotc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpCitFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpCitQQVNTIEV4Y2VwdGlvbiB3
YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgor
UEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCiAKIHRlc3RTZXRWZXJzaW9uQWJvcnQy
KCk6CiBQQVNTIHNlbGYuZGIub2JqZWN0U3RvcmVOYW1lcyBpcyBbXQpAQCAtMzMsNyArMzYsMTAg
QEAgUEFTUyB0cmFucyBpcyBub24tbnVsbC4KIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlRmFpbCcsIG51bGwpCiBpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwn
LCAneCcpCiBkYi5kZWxldGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJykKLXN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKQorRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRT
dGF0ZUVycm9yJwogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWlsJywgbnVs
bCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147127</attachid>
            <date>2012-06-12 11:50:18 -0700</date>
            <delta_ts>2012-06-13 10:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120612115017.patch</filename>
            <type>text/plain</type>
            <size>85110</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBmODZmY2JlMjMwZmU5
NzIzODc0M2I5NGY4OTljYzg2N2Y0NmVkNy4uMDA3NDJhZTc5YzY4OWU4ZWVkYzQxYWY2ZjNkODJk
MzUzNzk5NTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wNi0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25h
cHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFn
ZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbGVhclZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAgIChJREJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OklE
QkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpt
YXJrRGVsZXRlZCk6CisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJJbmRl
eEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChJREJEYXRhYmFzZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OklEQk9i
amVjdFN0b3JlTWV0YWRhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRleE1ldGFkYXRhKToKKyAg
ICAgICAgKElEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjptYXJrRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhZGF0YSk6CisgICAgICAgIChJREJPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKElEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMTIgIFRha2Fz
aGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtTaGFkb3cgRE9NXSA8
c3R5bGU+IGluc2lkZSBTaGFkb3cgc3VidHJlZSBzaG91bGQgYmUgc2NvcGVkIGluc2lkZSB0aGUg
c3VidHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjZjNTY4NWUyZDgyODBkMzA2
OTc0MWM3Y2I2OGEyNDc4MThiYWEzYy4uMWZjZjMzYjY1ZDk3YWU1YTNhOTJkMzQ3MDAyNDI4ZTNj
NWM1NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAx
Mi0wNi0wNyAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElu
ZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3Vu
ZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjptZXRhZGF0YSk6CisgICAgICAgICogcHVibGljL1dl
YklEQk1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChXZWJJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYklEQkluZGV4TWV0YWRhdGEpOgorICAg
ICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAgICAgICogc3Jj
L1dlYklEQk1ldGFkYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6fldlYklEQkRhdGFiYXNlTWV0YWRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZU1ldGFkYXRhOjpuYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6dmVyc2lvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9iamVjdFN0b3Jlcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlTWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklE
QkRhdGFiYXNlTWV0YWRhdGEmKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YTo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6On5XZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6bmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OmtleVBhdGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFkYXRhOjphdXRvSW5jcmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6aW5kZXhlcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhN
ZXRhZGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6
V2ViSURCSW5kZXhNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRh
dGE6On5XZWJJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCSW5kZXhN
ZXRhZGF0YTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRhdGE6Omtl
eVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjp1bmlxdWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjptdWx0aUVudHJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6b3BlcmF0b3IgY29uc3QgV2ViQ29yZTo6SURCSW5k
ZXhNZXRhZGF0YSYpOgorCiAyMDEyLTA2LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTIwMDUx
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3Bw
CmluZGV4IDJjMTA4OGZhYTI5MDZkZmM1M2FlYzA4MWM3NTZlNGZhMjE0NWM2OGMuLmI3YTQyNzAz
MmNiMGYwYmUwNWI3ZmUzMzllNDI4MTViMjk0YjI4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAgSURC
RGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2UKICAgICAvLyBXZSBwYXNzIGEgcmVmZXJlbmNlIG9mIHRoaXMg
b2JqZWN0IGJlZm9yZSBpdCBjYW4gYmUgYWRvcHRlZC4KICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOjpjcmVhdGUodGhpcyk7CisgICAgbV9tZXRhZGF0YSA9IG1fYmFja2VuZC0+bWV0YWRhdGEo
KTsKIH0KIAogSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCkBAIC03NywxMiArNzgsMjMgQEAg
dm9pZCBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKTsKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOworICAg
IG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJh
c2U6OmNsZWFyVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHRyYW5zYWN0aW9uLCBtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbiA9PSB0cmFuc2FjdGlvbik7CiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24gPSAwOworICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7Cit9CisKK1Bh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdAoreworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9N
U3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmpl
Y3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5i
ZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAg
ICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgb2JqZWN0U3RvcmVO
YW1lcy0+c29ydCgpOworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0K
IAogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC0xMjIsNyArMTM0LDEwIEBAIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9iamVjdFN0b3JlQmFja2VuZC5y
ZWxlYXNlKCksIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOwor
ICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6
Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0
KG5hbWUsIG1ldGFkYXRhKTsKKwogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmpl
Y3RTdG9yZUNyZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwogICAgIHJldHVybiBvYmplY3RTdG9y
ZS5yZWxlYXNlKCk7CiB9CkBAIC0xMzUsNyArMTUwLDEwIEBAIHZvaWQgSURCRGF0YWJhc2U6OmRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgfQogCiAgICAgbV9iYWNrZW5kLT5kZWxldGVPYmplY3RTdG9yZShuYW1lLCBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7Ci0gICAgbV92ZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRlZChuYW1lKTsKKyAgICBpZiAoIWVjKSB7CisgICAg
ICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZURlbGV0ZWQobmFtZSk7
CisgICAgICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnJlbW92ZShuYW1lKTsKKyAgICB9CiB9
CiAKIFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q+IElEQkRhdGFiYXNlOjpzZXRW
ZXJzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCBiMDk3YjczYjY3ZDVkZTFlOWNlOGViYTM1NDc0MTY4
YzZiM2I1MTRiLi5hMmIzNGRlMzMzYjEzMGM1YmZjYTcwYTM4YjQ3MjU5YmEyZmViZWRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CkBAIC01Nyw5ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyVmVyc2lvbkNoYW5n
ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uKik7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElE
TAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0K
LSAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigp
OyB9Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVzKCk7IH0KKyAgICBTdHJpbmcg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEubmFtZTsgfQorICAgIFN0cmluZyB2ZXJz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS52ZXJzaW9uOyB9CisgICAgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICAvLyBGSVhN
RTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4K
ICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBjcmVhdGVPYmplY3RTdG9y
ZShuYW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsgfQpAQCAtODcsNiArODgsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MoKTsKKyAgICBj
b25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKQEAgLTEw
Myw2ICsxMDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGEoKTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCk7CiAKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1fbWV0YWRhdGE7CiAgICAg
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggYWRhODVjMTgwMTQ0OThmMTVmNDAwNDYwYzc1NjAzMWQ5MzI5M2U3
Yy4uYTI0ZDRjN2EzODI2NjRmNTM4NjcyZThjZDk3NDVjOTU2OWE0NGI4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAKQEAgLTEzNCw2ICsxMzQsMTQgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3Rv
cmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fYmFja2luZ1N0b3JlOwogfQogCitJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRh
IG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uKTsKKyAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0
U3RvcmVzLmVuZCgpOyArK2l0KQorICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0
LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOwor
fQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9i
amVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmpl
Y3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
aW5kZXggMWU3OTQ3NDZmMmE3NTA5ZTljYmZjOGEzMzk0MWZjYmI1OTg3ZTU0Zi4uMGVjOThkZmU2
YmRkZTljYzcxNjg4N2ZjYTRjNTA3N2VkM2ZhODY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAt
NTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KTsKIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9u
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFt
ZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDI0ODA3NDc0Yjhj
Y2YwYmE5ODc0NmY5MGZmNjcwMGQ0NjY3YjQzOS4uZDU4MTc3N2Y5NTE3M2IzZDVkZTE1Y2JjMTFj
MzBjMGYxNDQ2MGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQx
LDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xh
c3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlOworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiAKIHR5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNl
QmFja2UKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uo
KSB7IH0KIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggNTdjZGIxMjE1YTQxNTcxODZi
MzljNjlhNmU3MjM5NDQyZjdkMDRhNy4uZDY4YTQwNmM5YmJjM2E1MGM5YzY0NWMzNmZlMWU1YzIw
NDBhYTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcApAQCAtNDIsMTAgKzQyLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJREJDdXJzb3I6Ok5FWFQ7CiAK
LUlEQkluZGV4OjpJREJJbmRleChQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCi0gICAgOiBtX2JhY2tlbmQoYmFja2VuZCkKK0lEQkluZGV4OjpJREJJbmRleChj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShtZXRhZGF0YSkKKyAgICAs
IG1fYmFja2VuZChiYWNrZW5kKQogICAgICwgbV9vYmplY3RTdG9yZShvYmplY3RTdG9yZSkKICAg
ICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmUpOwpAQCAt
NTksNiArNjEsMTAgQEAgSURCSW5kZXg6On5JREJJbmRleCgpCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
blN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6
b3BlbkN1cnNvciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpzdHJpbmdU
b0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTA1LDYgKzExMSwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQklu
ZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmNvdW50Iik7CisgICAgaWYgKG1f
ZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBSZWZQdHI8SURCUmVx
dWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0
ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChrZXlS
YW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVj
KSB7CkBAIC0xMjYsNiArMTM2LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQCiBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBjb25zdCBT
dHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RS
QUNFKCJJREJJbmRleDo6b3BlbktleUN1cnNvciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24g
PSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRpcmVjdGlvblN0cmluZywgZWMpOwogICAg
IGlmIChlYykKQEAgLTE3Myw2ICsxODcsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmdldCIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0g
SURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTg4LDYgKzIwNiwxMCBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cgogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4
OjpnZXQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQogICAgIGlmICgha2V5UmFuZ2UpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjA1LDYgKzIyNywxMCBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cgogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0
S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmdldEtl
eSIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAg
ICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtMjIwLDYgKzI0NiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4
OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZgogUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXRLZXkiKTsKKyAgICBpZiAobV9k
ZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmICgha2V5UmFuZ2Up
IHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgK
aW5kZXggYTkwYWNlMDNkYTA5NjM5YTU3MDg4YzQxNjNkZDA3ZmZlMjdlMDE4Yi4uZTNhNmI0NTUw
OWI5OTBmNWMyNjE1NWU5MDJkODFjODY1MTQyYTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1
ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MiwxOCArNDQsMTgg
QEAgY2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNzIElEQkluZGV4IDogcHVibGljIFJlZkNv
dW50ZWQ8SURCSW5kZXg+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRl
eD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJ
REJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKGNvbnN0IElEQkluZGV4TWV0
YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4KGJhY2tl
bmQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQkluZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24p
KTsKICAgICB9CiAgICAgfklEQkluZGV4KCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAot
ICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAg
ICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0
b3JlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQotICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlFbnRyeSgpOyB9CisgICAgU3RyaW5nIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBvYmplY3RTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmU7IH0KKyAg
ICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEu
a2V5UGF0aDsgfQorICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS51
bmlxdWU7IH0KKyAgICBib29sIG11bHRpRW50cnkoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRh
Lm11bHRpRW50cnk7IH0KIAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdl
bmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5n
ZSo+KDApLCBlYyk7IH0KQEAgLTgwLDEyICs4MiwxNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhj
ZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1
ZTsgfQorCiBwcml2YXRlOgotICAgIElEQkluZGV4KFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlPiwgSURCT2JqZWN0U3RvcmUqLCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQklu
ZGV4KGNvbnN0IElEQkluZGV4TWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNhY3Rpb24qKTsKIAorICAgIElEQklu
ZGV4TWV0YWRhdGEgbV9tZXRhZGF0YTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBtX29iamVjdFN0b3Jl
OwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKyAgICBib29sIG1f
ZGVsZXRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5k
ZXggNmZjMzczMTdjYWE3ZTQ2MDQxNDg4MDYyOTQ4MzRmZThlNjAxZDdkMS4uNzIxYzc1MGMxNzY0
MjhkNTUxOGVkNGQxN2M0OTk1MGIxMDM5OWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklE
QktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURC
VHJhY2luZy5oIgogCkBAIC02OSw2ICs3MCwxMSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjp+SURC
SW5kZXhCYWNrZW5kSW1wbCgpCiB7CiB9CiAKK0lEQkluZGV4TWV0YWRhdGEgSURCSW5kZXhCYWNr
ZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBJREJJbmRleE1ldGFkYXRh
KG1fbmFtZSwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsKK30KKwogdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8
SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5cGVkRGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IDIwZjM1YzRmM2Zh
MzlhZDA0YzE1MmI0NzRhYzhkMTcwM2EwNDVjZGUuLmExYWQ2MTRjYWY0MzY3MDE5ODAyMjQzMDc2
M2EwZDI0NWY5YjMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBhZGRpbmdLZXlBbGxvd2VkKGNvbnN0IElEQktleSogaW5kZXhLZXksIGNvbnN0
IElEQktleSogcHJpbWFyeUtleSA9IDApOwogCiAgICAgLy8gSW1wbGVtZW50cyBJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2UuCisgICAgdmlydHVhbCBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAg
IHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgeyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAg
dmlydHVhbCBib29sIHVuaXF1ZSgpIHsgcmV0dXJuIG1fdW5pcXVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Y2JlZjcz
YmNlNWQwMzFmMWFiNDdlZDMxYmE4YTIzYmQ4MTY2OGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtMCwwICsxLDg3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBs
ZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBH
T09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSURCTWV0YWRhdGFfaAorI2RlZmluZSBJREJNZXRhZGF0YV9oCisKKyNp
bmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOworc3RydWN0IElEQkluZGV4TWV0YWRhdGE7CisK
K3N0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKCkg
eyB9CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbikKKyAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgdmVyc2lvbih2
ZXJzaW9uKSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdHJpbmcgdmVyc2lvbjsKKworICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0
b3JlTWFwOworICAgIE9iamVjdFN0b3JlTWFwIG9iamVjdFN0b3JlczsKK307CisKK3N0cnVjdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIHsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKCkgeyB9
CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICAgICAgOiBuYW1lKG5h
bWUpCisgICAgICAgICwga2V5UGF0aChrZXlQYXRoKQorICAgICAgICAsIGF1dG9JbmNyZW1lbnQo
YXV0b0luY3JlbWVudCkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0aCBrZXlQ
YXRoOworICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIElEQkluZGV4TWV0YWRhdGE+IEluZGV4TWFwOworICAgIEluZGV4TWFwIGluZGV4ZXM7Cit9
OworCitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YSB7CisgICAgSURCSW5kZXhNZXRhZGF0YSgpIHsg
fQorICAgIElEQkluZGV4TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQorICAgICAgICA6IG5h
bWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgdW5pcXVlKHVu
aXF1ZSkKKyAgICAgICAgLCBtdWx0aUVudHJ5KG11bHRpRW50cnkpIHsgfQorICAgIFN0cmluZyBu
YW1lOworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBib29sIHVuaXF1ZTsKKyAgICBib29s
IG11bHRpRW50cnk7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2VuZGlmIC8vIElEQlRyYWNpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDEwOWE3NTE1Zjg3NTgzYTI3
NmE1MjIyZWMwYmViYjljYjQ5NjMxZjAuLjAxOTE5NTkzZjUwNWJiMGI0ODQ0ZDMxN2NkYzhhNWQ1
M2U5NWE5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIK
ICNpbmNsdWRlICJJREJLZXkuaCIKQEAgLTQ0LDkgKzQ1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGRlZmF1bHREaXJlY3Rpb24gPSBJREJD
dXJzb3I6Ok5FWFQ7CiAKLUlEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2VuZChpZGJPYmplY3RTdG9yZSkKK0lE
Qk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlk
Yk9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgOiBtX21ldGFk
YXRhKG1ldGFkYXRhKQorICAgICwgbV9wcmV2aW91c01ldGFkYXRhKG1ldGFkYXRhKQorICAgICwg
bV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlv
bikKKyAgICAsIG1fZGVsZXRlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9iYWNrZW5kKTsKICAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbik7CkBAIC01NCwzNCArNTgsMTQgQEAgSURCT2JqZWN0U3Rv
cmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBpZGJPYmoKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIH0KIAotU3RyaW5n
IElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlOjpuYW1lIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOwotfQotCi1QYXNz
UmVmUHRyPElEQkFueT4gSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25zdAotewotICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmtleVBhdGgiKTsKLSAgICByZXR1cm4gbV9iYWNrZW5k
LT5rZXlQYXRoKCk7Ci19Ci0KIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3Rv
cmU6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6
OmluZGV4TmFtZXMiKTsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5pbmRleE5hbWVzKCk7Ci19Ci0K
LUlEQlRyYW5zYWN0aW9uKiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24oKSBjb25zdAotewot
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uIik7Ci0gICAgcmV0dXJu
IG1fdHJhbnNhY3Rpb24uZ2V0KCk7Ci19Ci0KLWJvb2wgSURCT2JqZWN0U3RvcmU6OmF1dG9JbmNy
ZW1lbnQoKSBjb25zdAotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmF1dG9JbmNy
ZW1lbnQiKTsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5hdXRvSW5jcmVtZW50KCk7CisgICAgUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
KyAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fbWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLmluZGV4
ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGluZGV4TmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOwor
ICAgIGluZGV4TmFtZXMtPnNvcnQoKTsKKyAgICByZXR1cm4gaW5kZXhOYW1lcy5yZWxlYXNlKCk7
CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDQsNiArODgsMTAgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpnZXQiKTsK
KyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlm
ICgha2V5IHx8IChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xMTgsNiArMTA2LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlOjphZGQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6
SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE0Miw2ICsxMzQsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OnB1dCIpOworICAgIGlmICht
X2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFM
SURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKGtleSAmJiAo
a2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2LDYg
KzE2MiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmRlbGV0ZSIpOworICAgIGlm
IChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKCFrZXlS
YW5nZSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xODMsNiArMTgzLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpk
ZWxldGUiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQogICAgIGlmICgha2V5IHx8ICFrZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDAsNiAr
MjA0LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjbGVh
ciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4
dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFj
a2VuZC0+Y2xlYXIocmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAg
aWYgKGVjKSB7CkBAIC0yMjYsNiArMjM0LDExIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9i
amVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8CiBQ
YXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBjb25zdCBEaWN0aW9uYXJ5JiBv
cHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCIpOworICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hh
bmdlKCkgfHwgbV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAg
aWYgKCFrZXlQYXRoLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDQsMTYgKzI1Nywy
NCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogCiAgICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBr
ZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwogICAgIEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQg
YW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZp
Y2UgdmVyc2EuCi0gICAgaWYgKCFpbmRleEJhY2tlbmQpCisgICAgaWYgKGVjKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShp
bmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKworICAg
IElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVu
dHJ5KTsKKyAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRh
ZGF0YSwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7
CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOworICAgIG1fbWV0YWRhdGEuaW5kZXhl
cy5zZXQobmFtZSwgbWV0YWRhdGEpOworCiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0K
IAogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZTo6aW5kZXgiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQogICAgIGlmIChtX3RyYW5zYWN0aW9uLT5pc0ZpbmlzaGVkKCkpIHsKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTI2NSwyMiArMjg2LDQ2IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
CiAKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQgPSBt
X2JhY2tlbmQtPmluZGV4KG5hbWUsIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAhPSAh
ZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4g
YW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgotICAgIGlmICghaW5kZXhCYWNrZW5k
KQorICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBJREJPYmplY3RTdG9yZU1l
dGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgbWRpdCA9IG1fbWV0YWRhdGEuaW5kZXhl
cy5maW5kKG5hbWUpOworICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBjaGFuZ2UgaW50byBhbiBBU1NF
UlQgb25jZSBodHRwOi8vd2Via2l0Lm9yZy9iLzgwNTQ3IGlzIGZpeGVkLgorICAgIGlmIChtZGl0
ID09IG1fbWV0YWRhdGEuaW5kZXhlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVs
ZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBSZWZQdHI8SURCSW5kZXg+
IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZGl0LT5zZWNvbmQsIGluZGV4QmFja2VuZC5yZWxl
YXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0KG5h
bWUsIGluZGV4KTsKICAgICByZXR1cm4gaW5kZXgucmVsZWFzZSgpOwogfQogCiB2b2lkIElEQk9i
amVjdFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkgfHwgbV9k
ZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYmFja2VuZC0+ZGVs
ZXRlSW5kZXgobmFtZSwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CisgICAgaWYgKCFl
YykgeworICAgICAgICBJREJJbmRleE1hcDo6aXRlcmF0b3IgaXQgPSBtX2luZGV4TWFwLmZpbmQo
bmFtZSk7CisgICAgICAgIGlmIChpdCAhPSBtX2luZGV4TWFwLmVuZCgpKSB7CisgICAgICAgICAg
ICBpdC0+c2Vjb25kLT5tYXJrRGVsZXRlZCgpOworICAgICAgICAgICAgbV9pbmRleE1hcC5yZW1v
dmUobmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pbmRleGVz
LmNvbnRhaW5zKG5hbWUpKTsKKyAgICAgICAgbV9tZXRhZGF0YS5pbmRleGVzLnJlbW92ZShuYW1l
KTsKKyAgICB9CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yIik7
CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB1
bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24gPSBJREJDdXJzb3I6OnN0cmluZ1RvRGlyZWN0aW9uKGRp
cmVjdGlvblN0cmluZywgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CkBAIC0z
MjcsNiArMzcyLDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsKKyAgICBpZiAobV9kZWxl
dGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdlLCBy
ZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCmlu
ZGV4IGUxMWZiZDA4MGQyYmVkOTc1MTNjNzg1NzYxMjQ5MDhjMDIwN2JkZmIuLjZkOTgxYTFjMGQ3
MzQ2NDhhMzQzYTgxMWU4MmUzZWE0YmY4MzE5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgpAQCAtNDksMTggKzUwLDE4IEBAIGNsYXNzIElEQkFueTsKIAog
Y2xhc3MgSURCT2JqZWN0U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJPYmplY3RTdG9yZT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUo
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iamVjdFN0b3Jl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0
YSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmUobWV0YWRhdGEsIGJhY2tlbmQs
IHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJPYmplY3RTdG9yZSgpIHsgfQogCiAgICAg
Ly8gSW1wbGVtZW50IHRoZSBJREJPYmplY3RTdG9yZSBJREwKLSAgICBTdHJpbmcgbmFtZSgpIGNv
bnN0OwotICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5n
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBQYXNzUmVmUHRy
PElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0aDsgfQog
ICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwotICAgIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgYXV0b0luY3JlbWVu
dCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbjsgfQorICAgIGJvb2wgYXV0b0luY3JlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gYWRkKGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gcHV0KGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CkBAIC05NCwxNCArOTUsMTkgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lkIG1hcmtEZWxldGVkKCkg
eyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKCk7Cisg
ICAgdm9pZCByZXNldE1ldGFkYXRhKCkgeyBtX21ldGFkYXRhID0gbV9wcmV2aW91c01ldGFkYXRh
OyB9CiAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQk9iamVjdFN0
b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdm9pZCByZW1vdmVU
cmFuc2FjdGlvbkZyb21QZW5kaW5nTGlzdCgpOwogCisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBtX21ldGFkYXRhOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9wcmV2aW91c01ldGFk
YXRhOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2Vu
ZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CisgICAgYm9vbCBt
X2RlbGV0ZWQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5kZXg+
ID4gSURCSW5kZXhNYXA7CiAgICAgSURCSW5kZXhNYXAgbV9pbmRleE1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5jcHAKaW5kZXggMWIzOTYzMDYwMTM0OTYyODEwY2M4ODQwNzExOWMwNzk2ZTFl
ZmM0ZC4uOGNkNjMwMDAxMmY3MmE2MGM0NDAwNjkzY2Y5ZGVhMDQwYmRhMDk5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTc0LDYgKzc0LDE0IEBAIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNr
aW5nU3RvCiB7CiB9CiAKK0lEQk9iamVjdFN0b3JlTWV0YWRhdGEgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEg
bWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fYXV0b0luY3JlbWVudCk7CisgICAgZm9yIChJ
bmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9p
bmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBtZXRhZGF0YS5pbmRleGVzLnNldChpdC0+Zmly
c3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30KKwog
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmRl
eE5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcyA9
IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGE1
ZGU3ZTVkMmQ2MjNkZGUwZjAwZmNmZDRlOWE2ZWIzZjA4OGM2MzkuLmNkYmZhZmU5MDQzOWIyNzQ4
NDhiNDc5NDVhMDI3MDAzZDYwOWMwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbF9oCiAKICNpbmNs
dWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTQwLDYgKzQxLDcgQEAgY2xh
c3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDsKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGw7CiBj
bGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Oworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlIHsKIHB1YmxpYzoKQEAgLTYxLDYgKzYzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2b2lk
IHNldElkKGludDY0X3QgaWQpIHsgbV9pZCA9IGlkOyB9CiAKKyAgICB2aXJ0dWFsIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGEzYmM2MmNhZjg2
ODU5ZTM0MTg2ZTRlMzFlNjY1OTY1YjE1YzZlMzcuLjQ0MDEwNjBjOTEwMjFlYjcyZjgzNzBjMzU2
Yjk4YTI4NDQ1YjJjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTE1MCwyNSArMTUwLDM3IEBAIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwCiAgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogCiAgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVCYWNrZW5kID0gbV9iYWNr
ZW5kLT5vYmplY3RTdG9yZShuYW1lLCBlYyk7Ci0gICAgaWYgKCFvYmplY3RTdG9yZUJhY2tlbmQp
IHsKLSAgICAgICAgQVNTRVJUKGVjKTsKKyAgICBBU1NFUlQoIW9iamVjdFN0b3JlQmFja2VuZCAh
PSAhZWMpOyAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGEgc3RvcmUsIHdlIHNob3VsZCBoYXZlIGdvdHRl
biBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVyc2EuCisgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9y
ZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsKKwor
ICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhID0gbV9kYXRhYmFzZS0+bWV0
YWRhdGEoKTsKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgbWRpdCA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5maW5kKG5hbWUpOworICAgIEFT
U0VSVChtZGl0ICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKSk7CisKKyAgICBSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZGl0
LT5zZWNvbmQsIG9iamVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CiAgICAgb2JqZWN0U3RvcmVDcmVh
dGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgp
OwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSkKK3ZvaWQg
SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5hbWUsIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IHBycE9iamVjdFN0b3JlKQogewogICAgIEFTU0VSVCgh
bV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVj
dFN0b3JlID0gcHJwT2JqZWN0U3RvcmU7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQobmFtZSwg
b2JqZWN0U3RvcmUpOworICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFkZChvYmplY3RTdG9y
ZSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOwotICAg
IG1fb2JqZWN0U3RvcmVNYXAucmVtb3ZlKG5hbWUpOworICAgIElEQk9iamVjdFN0b3JlTWFwOjpp
dGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVNYXAuZmluZChuYW1lKTsKKyAgICBpZiAoaXQgIT0g
bV9vYmplY3RTdG9yZU1hcC5lbmQoKSkgeworICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG9iamVjdFN0b3JlID0gaXQtPnNlY29uZDsKKyAgICAgICAgbV9vYmplY3RTdG9yZU1hcC5yZW1v
dmUobmFtZSk7CisgICAgICAgIG9iamVjdFN0b3JlLT5tYXJrRGVsZXRlZCgpOworICAgICAgICBt
X29iamVjdFN0b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3RvcmUpOworICAgIH0KIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6YWJvcnQoKQpAQCAtMjMwLDggKzI0MiwxMSBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uOjpvbkFib3J0KCkKICAgICAgICAgcmVxdWVzdC0+YWJvcnQoKTsKICAgICB9CiAK
LSAgICBpZiAobV9tb2RlID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkKKyAgICBp
ZiAobV9tb2RlID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSkgewogICAgICAgICBt
X2RhdGFiYXNlLT5jbGVhclZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih0aGlzKTsKKyAgICAgICAg
Zm9yIChJREJPYmplY3RTdG9yZVNldDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlQ2xlYW51
cFNldC5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5lbmQoKTsgKytpdCkK
KyAgICAgICAgICAgICgqaXQpLT5yZXNldE1ldGFkYXRhKCk7CisgICAgfQogICAgIGNsb3NlT3Bl
bkN1cnNvcnMoKTsKIAogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaAppbmRleCAxY2ViZTljMTkzZDkyN2JjMTU5NjI2N2ViNzM1NjhiNzFmYjU5
ZTcyLi41ZjJiNzc0ZjZkM2M5MDM3MDZhMDc5ZjgyM2I1ZTRmZDk5MmRhZDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBA
IC02OCw2ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogYmFja2VuZCgpIGNvbnN0OwogICAgIGJvb2wgaXNGaW5pc2hlZCgpIGNvbnN0OworICAg
IGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFZFUlNJT05f
Q0hBTkdFOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdDsKICAgICBJREJEYXRh
YmFzZSogZGIoKSBjb25zdDsKQEAgLTE0MCw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9y
ZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFwOwogCisgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZVNldDsK
KyAgICBJREJPYmplY3RTdG9yZVNldCBtX29iamVjdFN0b3JlQ2xlYW51cFNldDsKKwogICAgIEhh
c2hTZXQ8SURCQ3Vyc29yKj4gbV9vcGVuQ3Vyc29yczsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1MjM1MTIyZjkxY2M5YjFiY2U2
OGUzY2VhYjRiMDNkMGVlMTg3NTEwLi5jYjlhMDBjNWNjYjZmNTY5ZjRhODQzODFiNTYxNWZmZDUz
Njc2ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDgyLDYgKzE0ODIsNyBAQAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCcsCisgICAgICAg
ICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKaW5kZXggOTkyMDRiODg2YWI3ZWMxY2Y0ZDI0YTU5M2NjZGNkMDI3ZDU0OTkwMS4uYTM5
ZWFlNmNmZTM0OTc4MGJkYjMxNTA0M2M0NGEzM2JjM2I0MWEwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cApAQCAtMTgxLDYgKzE4MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJJREJLZXkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJLZXlQYXRoLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UmFuZ2UuaCcsCisgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YklEQk9iamVjdFN0b3JlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJhbnNh
Y3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oJywKQEAgLTU1OCw2ICs1NTksNyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURC
S2V5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlQYXRoLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlSYW5nZS5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViSURCTWV0YWRhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaAppbmRl
eCBiMzk4NTM0MTY1NTQzYTE5N2E2MTc5N2Q1NDc0OWRhODVlM2EzNTZlLi5hMDAxYzJlOTIyMThl
ODMzZWY3MzllYjJkYzc5MzBkNGZjZWE4ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IldlYkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00NCw2ICs0NSwxMSBAQCBjbGFzcyBXZWJJREJEYXRh
YmFzZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViSURCRGF0YWJhc2UoKSB7IH0KIAorICAg
IHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdAorICAgIHsKKyAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV2ViSURCTWV0YWRh
dGEoKTsKKyAgICB9CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKaW5kZXggYmViMWZhMjJkOGQwOTFjMjBlZDFl
NTVjYzJiMzA3NzEwYjlkZGY2NC4uNjEyNTM0NDViZDAzNTc2YjBlNTEwMjYzNTA2NTU0MmUzMDM0
ZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5
UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGgu
aApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
SURCS2V5UGF0aCBjcmVhdGVOdWxsKCk7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJLZXlQYXRo
KGNvbnN0IFdlYklEQktleVBhdGgmKTsKICAgICBXRUJLSVRfRVhQT1JUIH5XZWJJREJLZXlQYXRo
KCk7CisgICAgV0VCS0lUX0VYUE9SVCBXZWJJREJLZXlQYXRoJiBvcGVyYXRvcj0oY29uc3QgV2Vi
SURCS2V5UGF0aCYpOwogCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgTnVsbFR5cGUgPSAwLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWIxNjMyNDY1NWQxNzM4OGQzNTQzZjRmZWNlMTE0M2Q0OTc0ZDNlMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSURCTWV0YWRhdGFfaAorI2RlZmlu
ZSBXZWJJREJNZXRhZGF0YV9oCisKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZU93
blB0ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURCRGF0YWJh
c2VNZXRhZGF0YTsKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGE7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViSURCTWV0
YWRhdGEgeworICAgIHN0cnVjdCBJbmRleDsKKyAgICBzdHJ1Y3QgT2JqZWN0U3RvcmU7CisKKyAg
ICBXZWJTdHJpbmcgbmFtZTsKKyAgICBXZWJTdHJpbmcgdmVyc2lvbjsKKyAgICBXZWJWZWN0b3I8
T2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlczsKKyAgICBXZWJJREJNZXRhZGF0YSgpCisgICAgICAg
IDogbmFtZShXZWJTdHJpbmcoKSkKKyAgICAgICAgLCB2ZXJzaW9uKFdlYlN0cmluZygpKSB7IH0K
KworICAgIHN0cnVjdCBPYmplY3RTdG9yZSB7CisgICAgICAgIFdlYlN0cmluZyBuYW1lOworICAg
ICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CisgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsK
KyAgICAgICAgV2ViVmVjdG9yPEluZGV4PiBpbmRleGVzOworICAgICAgICBPYmplY3RTdG9yZSgp
CisgICAgICAgICAgICA6IG5hbWUoV2ViU3RyaW5nKCkpCisgICAgICAgICAgICAsIGtleVBhdGgo
V2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQorICAgICAgICAgICAgLCBhdXRvSW5jcmVtZW50
KGZhbHNlKSB7IH0KKyAgICB9OworCisgICAgc3RydWN0IEluZGV4IHsKKyAgICAgICAgV2ViU3Ry
aW5nIG5hbWU7CisgICAgICAgIFdlYklEQktleVBhdGgga2V5UGF0aDsKKyAgICAgICAgYm9vbCB1
bmlxdWU7CisgICAgICAgIGJvb2wgbXVsdGlFbnRyeTsKKyAgICAgICAgSW5kZXgoKQorICAgICAg
ICAgICAgOiBuYW1lKFdlYlN0cmluZygpKQorICAgICAgICAgICAgLCBrZXlQYXRoKFdlYklEQktl
eVBhdGg6OmNyZWF0ZU51bGwoKSkKKyAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQorICAgICAg
ICAgICAgLCBtdWx0aUVudHJ5KGZhbHNlKSB7IH0KKyAgICB9OworCisjaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCisgICAgV2ViSURCTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VN
ZXRhZGF0YSYpOworICAgIG9wZXJhdG9yIFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEoKSBj
b25zdDsKKyNlbmRpZgorfTsKKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYklEQk1ldGFkYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1ODY2MWViYWI4M2Y1YmNmOGE0Y2E4
OWFiZTdkYjgxMDg0YzkwNWY0Li4xMDdlYzYzYjNiNzg4M2UwOWVlYTMzN2M1OTE1YzM1YWQ0MGEx
ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEsMTEgQEAg
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiB7CiB9
CiAKK0lEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFkYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YWRhdGEoKTsKK30K
KwogU3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZTgxN2VkZjE5OTVk
YTJhODY3ZTk1NTkwNmQ5ODk3MGViMzQ0ZjkyYi4uYjA1NTUyY2NiZjExNzIwNWNjZTU3NGNlOWFh
ZDI4NWY5ZWJiZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURCRGF0YWJh
c2VCYWNrZW5kUHJveHkoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRh
ZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmlu
ZGV4IDI2NjJmODAxZjc1ZjIwZTMxNTFlNGU4NzA4YjVlZmE3MzZjYzdhZTYuLjM5ODAzZTE0NTkz
ZWQ3MzQwOTZhYTZjNzgzMjg1OWNjMmI2ZTI1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNp
bmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKKyNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKICNpbmNs
dWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bkltcGwuaCIKIApAQCAtNTEsNiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+V2ViSURC
RGF0YWJhc2VJbXBsKCkKIHsKIH0KIAorV2ViSURCTWV0YWRhdGEgV2ViSURCRGF0YWJhc2VJbXBs
OjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5tZXRh
ZGF0YSgpOworfQorCiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBsOjpuYW1lKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMTkwZDdlMmRjMzI5
YjA2ZmIzYWU2Zjg5ODRiMzFiMmQyNTJiYWI4Mi4uNWU5ODllMDBlZWRiYTIwMWJkZWQwYTZkYjc5
Nzk1NzViZTk1MDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrczsKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YWRhdGE7CiBjbGFzcyBXZWJJREJPYmplY3RT
dG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlSW1w
bCgpOwogCisgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2
ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQktleVBhdGguY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0
aC5jcHAKaW5kZXggMTdjMTU4ZjM0ZTQ4OGQ5MGUzMTczY2RjMzg0NjFkMWFmMmEzYjc5Ny4uNmVj
ZjFkZDA1YzVmODU3M2Q5NDM2Zjk1MmM4YWU2Y2ZkNTgzNDAyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKQEAgLTYwLDYgKzYwLDEzIEBAIFdlYklE
QktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpCiAgICAgcmV0dXJuIFdlYklEQktl
eVBhdGgoSURCS2V5UGF0aCgpKTsKIH0KIAorV2ViSURCS2V5UGF0aCYgV2ViSURCS2V5UGF0aDo6
b3BlcmF0b3I9KGNvbnN0IFdlYklEQktleVBhdGgmIG90aGVyKQoreworICAgIEFTU0VSVChvdGhl
ci5tX3ByaXZhdGUuZ2V0KCkpOworICAgIG1fcHJpdmF0ZS5yZXNldChuZXcgSURCS2V5UGF0aChv
dGhlcikpOworICAgIHJldHVybiAqdGhpczsKK30KKwogYm9vbCBXZWJJREJLZXlQYXRoOjppc1Zh
bGlkKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9wcml2YXRlLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzUwNjNl
ZjBmZjMzYmI4YTZjNmQyZWViODA2NTcwYjAxZmQ1OWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEu
aCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCTWV0YWRh
dGEuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSURCTWV0YWRhdGE6Oldl
YklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRh
KQoreworICAgIG5hbWUgPSBtZXRhZGF0YS5uYW1lOworICAgIHZlcnNpb24gPSBtZXRhZGF0YS52
ZXJzaW9uOworICAgIG9iamVjdFN0b3JlcyA9IFdlYlZlY3RvcjxPYmplY3RTdG9yZT4oc3RhdGlj
X2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2l6ZSgpKSk7CisKKyAgICBzaXpl
X3QgaSA9IDA7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6
Y29uc3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRvciA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdp
bigpOyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytzdG9y
ZUl0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVj
dFN0b3JlID0gc3RvcmVJdGVyYXRvci0+c2Vjb25kOworICAgICAgICBPYmplY3RTdG9yZSB3ZWJP
YmplY3RTdG9yZTsKKyAgICAgICAgd2ViT2JqZWN0U3RvcmUubmFtZSA9IG9iamVjdFN0b3JlLm5h
bWU7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmtleVBhdGggPSBvYmplY3RTdG9yZS5rZXlQYXRo
OworICAgICAgICB3ZWJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50ID0gb2JqZWN0U3RvcmUuYXV0
b0luY3JlbWVudDsKKyAgICAgICAgd2ViT2JqZWN0U3RvcmUuaW5kZXhlcyA9IFdlYlZlY3RvcjxJ
bmRleD4oc3RhdGljX2Nhc3Q8c2l6ZV90PihvYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKSkpOwor
CisgICAgICAgIHNpemVfdCBqID0gMDsKKyAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaW5kZXhJdGVyYXRvciA9IG9iamVjdFN0b3Jl
LmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJdGVyYXRvciAhPSBvYmplY3RTdG9yZS5pbmRleGVzLmVu
ZCgpOyArK2luZGV4SXRlcmF0b3IpIHsKKyAgICAgICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRh
dGEmIGluZGV4ID0gaW5kZXhJdGVyYXRvci0+c2Vjb25kOworICAgICAgICAgICAgSW5kZXggd2Vi
SW5kZXg7CisgICAgICAgICAgICB3ZWJJbmRleC5uYW1lID0gaW5kZXgubmFtZTsKKyAgICAgICAg
ICAgIHdlYkluZGV4LmtleVBhdGggPSBpbmRleC5rZXlQYXRoOworICAgICAgICAgICAgd2ViSW5k
ZXgudW5pcXVlID0gaW5kZXgudW5pcXVlOworICAgICAgICAgICAgd2ViSW5kZXgubXVsdGlFbnRy
eSA9IGluZGV4Lm11bHRpRW50cnk7CisgICAgICAgICAgICB3ZWJPYmplY3RTdG9yZS5pbmRleGVz
W2orK10gPSB3ZWJJbmRleDsKKyAgICAgICAgfQorICAgICAgICBvYmplY3RTdG9yZXNbaSsrXSA9
IHdlYk9iamVjdFN0b3JlOworICAgIH0KK30KKworV2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElE
QkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdAoreworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgZGIo
bmFtZSwgdmVyc2lvbik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgT2JqZWN0U3RvcmUgd2ViT2JqZWN0U3RvcmUg
PSBvYmplY3RTdG9yZXNbaV07CisgICAgICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0
U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCwgd2ViT2Jq
ZWN0U3RvcmUuYXV0b0luY3JlbWVudCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCB3ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICBjb25z
dCBJbmRleCB3ZWJJbmRleCA9IHdlYk9iamVjdFN0b3JlLmluZGV4ZXNbal07CisgICAgICAgICAg
ICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdlYkluZGV4Lm5hbWUsIHdlYkluZGV4LmtleVBhdGgs
IHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgubXVsdGlFbnRyeSk7CisgICAgICAgICAgICBvYmpl
Y3RTdG9yZS5pbmRleGVzLnNldChpbmRleC5uYW1lLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAg
ICAgZGIub2JqZWN0U3RvcmVzLnNldChvYmplY3RTdG9yZS5uYW1lLCBvYmplY3RTdG9yZSk7Cisg
ICAgfQorICAgIHJldHVybiBkYjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMTBlNDQ3YjI3OGUyMGU3YjI0
MWQwZDFlOGNiZjY2YzFjMTUyMzFmLi4zZjhlYjBjM2VmMWY3MGY3YzE2NTEzMzhjZDU2YTBlNTky
YmYzYTc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDYtMDcgIEpvc2h1YSBCZWxsICA8
anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFk
YXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMgcm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9kZWxl
dGVkLW9iamVjdHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRl
eGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2lu
ZGV4ZWRkYi9tZXRhZGF0YS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWw6
IFRoaXMgdGVzdCB3YXMKKyAgICAgICAgY3JlYXRpbmcgYSB0cmFuc2FjdGlvbiBpbnNpZGUgdGhl
IHNldFZlcnNpb24gY2FsbGJhY2sgYW5kIGFzc3VtaW5nIHRoZQorICAgICAgICBzZXRWZXJzaW9u
J3Mgc2NoZW1hIGNoYW5nZXMgd2VyZSBhbHJlYWR5IHByZXNlbnQuIFRoaXMgd2lsbCBiZSBwcmV2
ZW50ZWQKKyAgICAgICAgYnkgYSBmdXR1cmUgY2hhbmdlICh3ZWJraXQub3JnL2IvODA1NDcpIGJ1
dCBpdCB0cmlwcyB1cCB0aGlzIGNoYW5nZS4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvZGVsZXRlZC1vYmplY3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAob3BlbkRhdGFiYXNlLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChvcGVu
RGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0
YS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0
Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAg
KGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChmaXJzdE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RPcGVuKToKKyAg
ICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJh
bnMub25jb21wbGV0ZSk6CisgICAgICAgIChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJl
cXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3Mp
OgorICAgICAgICAoc2Vjb25kT3Blbik6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1
Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0aGlyZE9w
ZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRP
cGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRoaXJkT3Blbik6CisgICAgICAgIChm
b3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29t
cGxldGUpOgorICAgICAgICAoZm91cnRoT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9u
c3VjY2Vzcyk6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKGZvdXJ0aE9wZW4pOgorICAgICAgICAoY2hlY2tTdGF0ZSk6CisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2ljcy5qczogT3BlcmF0aW9ucyBv
bgorICAgICAgICBhIGRlbGV0ZWQgb2JqZWN0IHN0b3JlIGFyZSBub3cgcHJldmVudGVkIHBlciBz
cGVjLgorICAgICAgICAoYWRkUmVtb3ZlSURCT2JqZWN0cyk6CisgICAgICAgIChhZGRSZW1vdmVB
ZGRJREJPYmplY3RzKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1i
YXNpY3MtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA2LTEyICBUYWthc2hpIFNha2Ftb3RvICA8dGFz
YWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbU2hhZG93IERPTV0gPHN0eWxlPiBpbnNpZGUgU2hh
ZG93IHN1YnRyZWUgc2hvdWxkIGJlIHNjb3BlZCBpbnNpZGUgdGhlIHN1YnRyZWUuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZjY2YWZlM2EwOGFmYjQ5MTdhZDMzNjQ5MzU4MzJjYzFl
MjEyNTkzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
ZGVsZXRlZC1vYmplY3RzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg3IEBACitUZXN0IHRoYXQg
SW5kZXhlZERCIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB0aHJvdyBleGNlcHRpb25z
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4
ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxm
Lm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gc2VsZi5sb2NhdGlv
bi5wYXRobmFtZQorcmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisK
K29wZW5EYXRhYmFzZSgpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5l
Y3Rpb24gPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb24uc2V0VmVyc2lvbign
MScpCisKK2RlbGV0ZWRTdG9yZSA9IGNvbm5lY3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ2RlbGV0
ZWRTdG9yZScpCitzdG9yZSA9IGNvbm5lY3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykK
K2RlbGV0ZWRJbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdkZWxldGVkSW5kZXgnLCAncGF0aCcp
CisKK2Nvbm5lY3Rpb24uZGVsZXRlT2JqZWN0U3RvcmUoJ2RlbGV0ZWRTdG9yZScpCitzdG9yZS5k
ZWxldGVJbmRleCgnZGVsZXRlZEluZGV4JykKKworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRl
bGV0ZWRTdG9yZS5wdXQoMCwgMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNv
ZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZh
bGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuYWRk
KDAsIDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3In
CitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmRlbGV0ZSgwKQorUEFTUyBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9T
VEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4
Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5nZXQoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVu
YW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxl
dGVkU3RvcmUuY2xlYXIoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBp
cyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRT
dGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5vcGVuQ3Vy
c29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0
aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicK
K0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuY3JlYXRlSW5kZXgoJ25hbWUn
LCAncGF0aCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4
Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJy
b3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmluZGV4KCduYW1lJykK
K1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklO
VkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVj
dGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuZGVsZXRlSW5kZXgoJ25hbWUnKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5n
IGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5jb3VudCgpCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFT
UyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCisKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBkZWxldGVkSW5kZXgub3BlbkN1cnNvcigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgor
UEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBp
cyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZElu
ZGV4Lm9wZW5LZXlDdXJzb3IoKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29k
ZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFs
aWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRJbmRleC5nZXQo
MCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4
cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkSW5kZXguZ2V0S2V5KDApCitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0
aW9uIGZyb20gZGVsZXRlZEluZGV4LmNvdW50KCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24u
CitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1l
IGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2RlbGV0ZWQtb2JqZWN0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5M2Y1MmY1MDljNTQwYzRiNzBjYmI0
OGEyMTliM2ZhOGQxYTcxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxldGVkLW9iamVj
dHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODQzNmQ0NzVhYTQyN2JhY2ZhZmYxMzQ3YTM2NDFmODVmOTc4ZDI3OAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDg4IEBACitUZXN0IEluZGV4ZWREQiBkYXRhYmFzZSBtZXRhZGF0YSBtdXRh
dGlvbi9zbmFwc2hvdHRpbmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4
ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96
SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5h
bWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lCityZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKGRibmFtZSkKKworZmlyc3RPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lKQorY29ubmVjdGlvbjEgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rp
b24xLnNldFZlcnNpb24oJzEnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjFz
dG9yZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rp
b24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24x
LnZlcnNpb24gaXMgIjEiCitQQVNTIGNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3Ro
IGlzIDEKK1BBU1MgY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMQorQ29u
bmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25u
ZWN0aW9uMS5jbG9zZSgpCisKK3NlY29uZE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUpCitjb25uZWN0aW9uMiA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVj
dGlvbjIuc2V0VmVyc2lvbignMicpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9u
Mi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJykKK2Nvbm5lY3Rpb24yc3RvcmUxID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlMScpCitjb25uZWN0aW9uMnN0b3JlMS5jcmVhdGVJbmRleCgnaW5k
ZXgyJywgJ3BhdGgnKQorUEFTUyBjb25uZWN0aW9uMi52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25u
ZWN0aW9uMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24yc3Rv
cmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDIKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3Vs
ZCBiZSBzbmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjIuY2xvc2UoKQorCit0aGlyZE9w
ZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0aW9uMyA9IHJl
cXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjMuc2V0VmVyc2lvbignMycpCit0cmFu
cyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMy5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUz
JykKK2Nvbm5lY3Rpb24zc3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlMScpCitjb25u
ZWN0aW9uM3N0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgzJywgJ3BhdGgnKQorUEFTUyBjb25uZWN0
aW9uMy52ZXJzaW9uIGlzICIzIgorUEFTUyBjb25uZWN0aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxl
bmd0aCBpcyAzCitQQVNTIGNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMK
K0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSByZXZlcnRlZCBvbiBhYm9ydAordHJh
bnMuYWJvcnQoKQorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVk
IG9uIGNsb3NlCitjb25uZWN0aW9uMy5jbG9zZSgpCisKK2ZvdXJ0aE9wZW4oKToKK3JlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0aW9uNCA9IHJlcXVlc3QucmVzdWx0City
ZXF1ZXN0ID0gY29ubmVjdGlvbjQuc2V0VmVyc2lvbignNCcpCit0cmFucyA9IHJlcXVlc3QucmVz
dWx0Citjb25uZWN0aW9uNC5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmU0JykKK2Nvbm5lY3Rpb240
c3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlMScpCitjb25uZWN0aW9uNHN0b3JlMS5j
cmVhdGVJbmRleCgnaW5kZXg0JywgJ3BhdGgnKQorUEFTUyBjb25uZWN0aW9uNC52ZXJzaW9uIGlz
ICI0IgorUEFTUyBjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitQQVNT
IGNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKK0Nvbm5lY3Rpb24ncyBw
cm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjQuY2xv
c2UoKQorCitjaGVja1N0YXRlKCk6CitQQVNTIGNvbm5lY3Rpb24xLnZlcnNpb24gaXMgIjEiCitQ
QVNTIGNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgY29ubmVj
dGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMQorCitQQVNTIGNvbm5lY3Rpb24yLnZl
cnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlz
IDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMgorCitQQVNT
IGNvbm5lY3Rpb24zLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5n
dGggaXMgMgorCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNvbm5lY3Rp
b240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRzdG9yZTEu
aW5kZXhOYW1lcy5sZW5ndGggaXMgMworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbWV0YWRhdGEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFk
YXRhLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQyY2ZlNTllYzQ1ZWMwNzRlODNlYjM4YmY1OGJmMmIxYjg1
MmUzZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21l
dGFkYXRhLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbWV0YWRhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhw
ZWN0ZWQudHh0CmluZGV4IGI3ODA1ZjFmYWE0NWE3YTlkOGRkZTI5NjZiN2FlYzdmM2JlYzgzMTcu
LjRhMGI4MjJlYzc3YjAwNzVhNTY4MjNlNDhiNDI1MmVmYmY0YWM4OTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1uby1kdXBsaWNh
dGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemls
bGEvaW5kZXgtcHJldi1uby1kdXBsaWNhdGUtZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw3IEBA
IFBBU1MgSURCS2V5UmFuZ2UgPT0gbnVsbCBpcyBmYWxzZQogaW5kZXhlZERCLm9wZW4obmFtZSwg
ZGVzY3JpcHRpb24pCiBvcGVuU3VjY2VzcygpOgogZGIgPSBldmVudC50YXJnZXQucmVzdWx0Ci1y
ZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpCitzZXRWZXJzaW9uUmVxdWVzdCA9IGRiLnNldFZl
cnNpb24oJzEnKQogRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4KIG9iamVjdFN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUob2JqZWN0U3RvcmVOYW1lKTsKIEZpcnN0LCBhZGQgYWxsIG91ciBk
YXRhIHRvIHRoZSBvYmplY3Qgc3RvcmUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb3ppbGxhL2luZGV4LXByZXYtbm8tZHVwbGljYXRlLmh0
bWwKaW5kZXggOGE5NjM4N2JkZWE4NjlmMjJkMDEzYjNhYmU2YWZmMjIxZDE2ZWNhZi4uYmU5YmVi
NzNlNzRmMDNhYzczNTQ1OTZiNGY5YjUyYTljOTJmMmE5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvbW96aWxsYS9pbmRleC1wcmV2LW5vLWR1cGxpY2F0ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vemlsbGEvaW5kZXgtcHJldi1u
by1kdXBsaWNhdGUuaHRtbApAQCAtNzcsOSArNzcsOSBAQCBmdW5jdGlvbiBvcGVuU3VjY2Vzcygp
CiAgICAgICAgIHsga2V5OiAiMjM3LTIzLTc3NDAiLCB2YWx1ZTogeyBuYW1lOiAiU2FtIiwgaGVp
Z2h0OiA3Mywgd2VpZ2h0OiAxMTAgfSB9LAogICAgIF07CiAKLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygicmVxdWVzdCA9IGRiLnNldFZlcnNpb24oJzEnKSIpOwotICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsKLSAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBzZXRWZXJzaW9uUmVxdWVzdCA9IGV2YWxB
bmRMb2coInNldFZlcnNpb25SZXF1ZXN0ID0gZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgc2V0
VmVyc2lvblJlcXVlc3Qub25zdWNjZXNzID0gY3JlYXRlQW5kUG9wdWxhdGVPYmplY3RTdG9yZTsK
KyAgICBzZXRWZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CiB9CiAKIGZ1bmN0aW9uIGNyZWF0ZUFuZFBvcHVsYXRlT2JqZWN0U3RvcmUoKQpAQCAtMTA5LDgg
KzEwOSw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUluZGV4ZXMoKQogICAgICAgZXZhbEFuZExvZygib2Jq
ZWN0U3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhEYXRhW2ldLm5hbWUsIGluZGV4RGF0YVtpXS5rZXlQ
YXRoLCBpbmRleERhdGFbaV0ub3B0aW9ucyk7Iik7CiAgICAgfQogCi0KLSAgICB0ZXN0UHJldigp
OworICAgIHNldFZlcnNpb25SZXF1ZXN0LnJlc3VsdC5vbmNvbXBsZXRlID0gdGVzdFByZXY7CiB9
CiAKIGZ1bmN0aW9uIHRlc3RQcmV2KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanMgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZC1vYmplY3RzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5
N2EwNWFiZmNjNDFiNzJkYmVkZGE1YTEyMzVhMmNjZWQwOTUwMjUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvZGVsZXRlZC1vYmplY3Rz
LmpzCkBAIC0wLDAgKzEsNjQgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBv
cnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOwor
ICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IEluZGV4ZWREQiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQgdGhyb3cgZXhjZXB0
aW9ucyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygp
OworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUiKTsKKyAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5EYXRhYmFzZTsKK30KKworZnVuY3Rpb24gb3BlbkRhdGFi
YXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoIm9wZW5EYXRhYmFzZSgpOiIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbiA9
IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0
aW9uLnNldFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHRyYW5zID0gcmVxdWVzdC5yZXN1bHQ7CisKKyAgICAgICAgICAgIGRl
YnVnKCIiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImRlbGV0ZWRTdG9yZSA9IGNvbm5lY3Rp
b24uY3JlYXRlT2JqZWN0U3RvcmUoJ2RlbGV0ZWRTdG9yZScpIik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJzdG9yZSA9IGNvbm5lY3Rpb24uY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImRlbGV0ZWRJbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4
KCdkZWxldGVkSW5kZXgnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24uZGVsZXRlT2JqZWN0U3RvcmUoJ2RlbGV0
ZWRTdG9yZScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgn
ZGVsZXRlZEluZGV4JykiKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLnB1dCgwLCAwKSIsICJET01FeGNl
cHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAg
ICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmFkZCgwLCAwKSIsICJE
T01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOwor
ICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmRlbGV0ZSgw
KSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9y
JyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmdl
dCgwKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVy
cm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3Jl
LmNsZWFyKCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3Rh
dGVFcnJvciciKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRlbGV0ZWRT
dG9yZS5vcGVuQ3Vyc29yKCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJ
bnZhbGlkU3RhdGVFcnJvciciKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24o
ImRlbGV0ZWRTdG9yZS5jcmVhdGVJbmRleCgnbmFtZScsICdwYXRoJykiLCAiRE9NRXhjZXB0aW9u
LklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJvciciKTsKKyAgICAgICAgICAg
IGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRlbGV0ZWRTdG9yZS5pbmRleCgnbmFtZScpIiwgIkRP
TUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7Cisg
ICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuZGVsZXRlSW5k
ZXgoJ25hbWUnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRT
dGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRl
ZFN0b3JlLmNvdW50KCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZh
bGlkU3RhdGVFcnJvciciKTsKKworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAg
ZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZEluZGV4Lm9wZW5DdXJzb3IoKSIsICJET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAg
ICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZEluZGV4Lm9wZW5LZXlDdXJz
b3IoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVy
cm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZEluZGV4
LmdldCgwKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0
ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZElu
ZGV4LmdldEtleSgwKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFs
aWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVs
ZXRlZEluZGV4LmNvdW50KCkiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJ
bnZhbGlkU3RhdGVFcnJvciciKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZpbmlz
aEpTVGVzdDsKKyAgICAgICAgfTsKKyAgICB9OworfQorCit0ZXN0KCk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEuanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTRjNDdjNzExZWVmYjU4MjY4NzZhMWMyZWMzZWVjZjAwMDdlZWM0NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5q
cwpAQCAtMCwwICsxLDE2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9y
dFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzJyk7Cisg
ICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0IElu
ZGV4ZWREQiBkYXRhYmFzZSBtZXRhZGF0YSBtdXRhdGlvbi9zbmFwc2hvdHRpbmciKTsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMoKTsKKyAgICBldmFsQW5k
TG9nKCJkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lIik7CisgICAgZXZhbEFuZExvZygi
cmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmaXJzdE9wZW47Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3BlbigpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJmaXJzdE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24xLnNldFZlcnNpb24oJzEnKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24xc3RvcmUxID0gY29ubmVjdGlvbjEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMXN0b3JlMS5jcmVhdGVJ
bmRleCgnaW5kZXgxJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImNvbm5lY3Rpb24xLnZlcnNpb24iLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisK
KyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9u
IGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEuY2xvc2Uo
KSIpOworICAgICAgICAgICAgICAgIHNlY29uZE9wZW4oKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gc2Vjb25kT3BlbigpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJzZWNvbmRPcGVuKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkg
eworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMiA9IHJlcXVlc3QucmVzdWx0Iik7Cisg
ICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uMi5zZXRWZXJzaW9uKCcyJyki
KTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uMi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJykiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
MScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMnN0b3JlMS5jcmVhdGVJ
bmRleCgnaW5kZXgyJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImNvbm5lY3Rpb24yLnZlcnNpb24iLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUo
ImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIyIik7CisK
KyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAg
ICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9u
IGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIuY2xvc2Uo
KSIpOworICAgICAgICAgICAgICAgIHRoaXJkT3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0aGlyZE9wZW4oKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygidGhpcmRPcGVuKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykiKTsK
KyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uMy5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUzJykiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlMScp
Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uM3N0b3JlMS5jcmVhdGVJbmRl
eCgnaW5kZXgzJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImNvbm5lY3Rpb24zLnZlcnNpb24iLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIzIik7CisKKyAg
ICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29tcGxldGVDYWxsYmFjazsK
KyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9u
IGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjMuY2xvc2Uo
KSIpOworICAgICAgICAgICAgICAgIGZvdXJ0aE9wZW4oKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHJldmVydGVk
IG9uIGFib3J0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5hYm9ydCgpIik7Cisg
ICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gZm91cnRoT3BlbigpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJmb3VydGhPcGVuKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVx
dWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNCA9IHJlcXVlc3QucmVzdWx0Iik7
CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uNC5zZXRWZXJzaW9uKCc0
JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJjb25uZWN0aW9uNC5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmU0JykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlMScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNHN0b3JlMS5jcmVh
dGVJbmRleCgnaW5kZXg0JywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImNvbm5lY3Rpb240LnZlcnNpb24iLCAiNCIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIzIik7
CisKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsK
KyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVk
IG9uIGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjQuY2xv
c2UoKSIpOworICAgICAgICAgICAgICAgIGNoZWNrU3RhdGUoKTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gY2hlY2tTdGF0ZSgpCit7CisgICAgZGVi
dWcoIiIpOworICAgIGRlYnVnKCJjaGVja1N0YXRlKCk6Iik7CisKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImNvbm5lY3Rpb24xLnZlcnNpb24iLCAiMSIpOworICAgIHNob3VsZEJlKCJjb25u
ZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBkZWJ1ZygiIik7
CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24yLnZlcnNpb24iLCAiMiIp
OworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIy
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5l
Y3Rpb24zLnZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMy5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUx
LmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb240LnZlcnNpb24iLCAiNCIpOworICAgIHNob3VsZEJl
KCJjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIzIik7CisgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBkZWJ1
ZygiIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2lj
cy5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1iYXNpY3MuanMKaW5kZXggNjA2MWM3ZGNkOGI1NzRjNmRhNTZhNzE5MTVmZTQ2YWY1MDc5ODc0
NS4uNGRhOWRjZTJjMDgxOGRmODBkZjhkOWNjOTIzNzY1MTk3NjgwOGYzMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWJhc2lj
cy5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNh
Y3Rpb24tYmFzaWNzLmpzCkBAIC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIGFkZFJlbW92ZUlEQk9i
amVjdHMoKQogICAgIHZhciBpbmRleCA9IGV2YWxBbmRMb2coImluZGV4ID0gc3RvcmUuY3JlYXRl
SW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKIAogICAgIGV2YWxBbmRMb2coImRiLmRlbGV0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnKSIpOwotICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0ZUlu
ZGV4KCdpbmRleEZhaWwnKSIpOworICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oInN0b3JlLmRl
bGV0ZUluZGV4KCdpbmRleEZhaWwnKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIi
LCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOwogCiAgICAgdHJhbnMuYWJvcnQoKTsKIH0KQEAgLTc0
LDcgKzc0LDcgQEAgZnVuY3Rpb24gYWRkUmVtb3ZlQWRkSURCT2JqZWN0cygpCiAgICAgdmFyIGlu
ZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywg
J3gnKSIpOwogCiAgICAgZXZhbEFuZExvZygiZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFp
bCcpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7
CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigic3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFp
bCcpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJy
b3InIik7CiAKICAgICB2YXIgc3RvcmUgPSBldmFsQW5kTG9nKCJzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKSIpOwogICAgIHZhciBpbmRleCA9IGV2YWxBbmRM
b2coImluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykiKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1i
YXNpY3MtZXhwZWN0ZWQudHh0CmluZGV4IDBkZmM1YmRmOWU0ZWMzNDZlNDU4ZjljYTZkZDFlNGFh
YWZlZDk4OWIuLjJkOGRjZTQwMzBhZjlhMmFjYjQ0MzY3NGVlZGUzODllMzUxODgyYjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMjAsNyArMjAsMTAgQEAgUEFTUyB0cmFucyBpcyBu
b24tbnVsbC4KIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwp
CiBpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpCiBkYi5kZWxldGVP
YmplY3RTdG9yZSgnc3RvcmVGYWlsJykKLXN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQor
UEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5W
QUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwogCiB0ZXN0
U2V0VmVyc2lvbkFib3J0MigpOgogUEFTUyBzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMgaXMgW10K
QEAgLTMzLDcgKzM2LDEwIEBAIFBBU1MgdHJhbnMgaXMgbm9uLW51bGwuCiBzdG9yZSA9IGRiLmNy
ZWF0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnLCBudWxsKQogaW5kZXggPSBzdG9yZS5jcmVhdGVJ
bmRleCgnaW5kZXhGYWlsJywgJ3gnKQogZGIuZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcp
Ci1zdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykKK0V4cGVjdGluZyBleGNlcHRpb24gZnJv
bSBzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhGYWlsJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVu
YW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKIHN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
J3N0b3JlRmFpbCcsIG51bGwpCiBpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRleEZhaWwn
LCAneCcpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147359</attachid>
            <date>2012-06-13 10:32:27 -0700</date>
            <delta_ts>2012-06-15 16:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120613103226.patch</filename>
            <type>text/plain</type>
            <size>83123</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWVmOWQ2NmJiMjA3ZmMw
NTI3Y2I2NzQ3YzA1NWNjYTY5NTA3NGNiYi4uZDdlM2UwZmUyZDY1Mzk0YmYyNDkwNjA3N2VkYzA4
NDAwNGU5NmZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMi0wNi0wNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25h
cHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogc3RvcmFn
ZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKKyAgICAgICAgICAgICAgIHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6c2V0VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbGVhclZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6
ZGVsZXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVyc2lvbik6CisgICAgICAgIChJREJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgor
ICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OklE
QkluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVuQ3Vyc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4Ojpjb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXRLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6a2V5UGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4Ojpt
YXJrRGVsZXRlZCk6CisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJJbmRl
eEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChJREJEYXRhYmFzZU1l
dGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OklEQk9i
amVjdFN0b3JlTWV0YWRhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRleE1ldGFkYXRhKToKKyAg
ICAgICAgKElEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1l
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpv
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjptYXJrRGVsZXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhZGF0YSk6CisgICAgICAgIChJREJPYmplY3RTdG9y
ZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVDcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZURlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9uQWJvcnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6aXNWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKElEQlRy
YW5zYWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMTIgIFdlaSBK
YW1lcyAgPGphbWVzLndlaUBpbnRlbC5jb20+CiAKICAgICAgICAgd2ViY29yZSBzaG91bGQgZGVw
ZW5kIG9uIHdlYmNvcmVfYXJtX25lb24gZm9yIG9ubHkgYXJtIHRhcmdldF9hcmNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDE1YzU2MTUwMmU2Mzc3YTdlM2NmNTE5M2JhMmY5NTU1M2Fj
MzIxM2IuLmRkMThhZjA2NTJkMGU2ZWUxNzVjOTk4MWQ4M2VjN2Q5MWU2NjAwYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTItMDYtMDcgIEpvc2h1YSBC
ZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNuYXBzaG90
IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMgcm91bmQtdHJpcHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAg
ICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZTo6bWV0YWRhdGEpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRhZGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoV2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSk6CisgICAgICAgIChXZWJJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBzcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tl
bmRQcm94eTo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5
KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0
YWJhc2VNZXRhZGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VN
ZXRhZGF0YTo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkRhdGFiYXNlTWV0YWRhdGE6On5XZWJJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VNZXRhZGF0YTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlTWV0YWRhdGE6OnZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZU1ldGFkYXRhOjpvYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZU1ldGFkYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRh
YmFzZU1ldGFkYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRh
Jik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OldlYklEQk9iamVj
dFN0b3JlTWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjp+V2ViSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
Qk9iamVjdFN0b3JlTWV0YWRhdGE6Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOjprZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmVNZXRhZGF0YTo6YXV0b0luY3JlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OmluZGV4ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOjpvcGVyYXRvciBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1l
dGFkYXRhJik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRhdGE6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRhdGE6OldlYklEQkluZGV4TWV0YWRh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjp+V2ViSURCSW5kZXhN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4TWV0YWRhdGE6Om5hbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJJbmRleE1ldGFkYXRhOjprZXlQYXRoKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCSW5kZXhNZXRhZGF0YTo6dW5pcXVlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCSW5kZXhNZXRhZGF0YTo6bXVsdGlFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYklE
QkluZGV4TWV0YWRhdGE6Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkluZGV4
TWV0YWRhdGE6Om9wZXJhdG9yIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmKToKKwog
MjAxMi0wNi0xMiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFJvbGwgY2hyb21pdW0gcmV2IGluIERFUFMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA1MDE1OGExZmJlNmRm
Zjk5MmI2MDQ2NGJiMjI1ZjY0ZGUzYjgwNWRjLi45OWQ2ZjA1OTA1YTZjZWU3ZmQ1NjgxZGE1OTFj
ZjFiMTFkNThiMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCkBAIC02NSw2ICs2NSw3IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgbV9kYXRh
YmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKHRoaXMpOwor
ICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKIElEQkRhdGFiYXNl
Ojp+SURCRGF0YWJhc2UoKQpAQCAtODIsNiArODMsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIGlmICh0cmFu
c2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0g
dHJhbnNhY3Rpb247CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7
CiAgICAgfQogfQogCkBAIC05NCwxMiArOTYsMjIgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgaWYgKHRyYW5z
YWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbiA9IDA7CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRh
KCk7CiAgICAgfQogCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5nICYmIG1fdHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSkKICAgICAgICAgY2xvc2VDb25uZWN0aW9uKCk7CiB9CiAKK1Bhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAoreworICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAh
PSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgb2JqZWN0U3Rv
cmVOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgb2JqZWN0U3RvcmVOYW1lcy0+c29ydCgp
OworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKK30KKwogUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewpAQCAtMTM3LDcgKzE0
OSwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3Rv
cmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZXRhZGF0YSwgb2JqZWN0U3Rv
cmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwor
ICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChuYW1lLCBtZXRhZGF0YSk7CisKICAgICBt
X3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVj
dFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTUwLDcg
KzE2NSwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIG1fYmFja2VuZC0+ZGVs
ZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwotICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZURlbGV0
ZWQobmFtZSk7CisgICAgaWYgKCFlYykgeworICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgICAgICBtX21ldGFkYXRhLm9iamVj
dFN0b3Jlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXgg
YWRhZDMyZDg2YWM2NDc4NWYwZGRiNjE5MDdmZWFjY2M5YzBkOTE0Ni4uMDhhZWEzZDdjNTRhZWYy
MGQ2NGY1YjRmNjE1Y2E1OTI1Mzc1ZThlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0
YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTcsOSArNTgsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKik7CiAKICAg
ICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZC0+dmVyc2lvbigpOyB9Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RTdG9yZU5h
bWVzKCk7IH0KKyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEubmFt
ZTsgfQorICAgIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS52ZXJz
aW9uOyB9CisgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkg
Y29uc3Q7CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Ig
c28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBjcmVhdGVPYmplY3RTdG9yZShuYW1lLCBEaWN0aW9uYXJ5KCksIGVjKTsgfQpAQCAtODcs
NiArODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlZ2lzdGVyRnJvbnRl
bmRDYWxsYmFja3MoKTsKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQoZXZlbnQsIGVjKTsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKQEAgLTEwNSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBj
bG9zZUNvbm5lY3Rpb24oKTsKIAorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbV9tZXRhZGF0YTsK
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKICAgICBI
YXNoU2V0PElEQlRyYW5zYWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwCmluZGV4IGEwODZhMTcyMWExOWMzOGJmZDU0MDkyOTIyODEzMzdmMjc5NzgwM2IuLmYxMGRk
OWQ0Yzk0OTRlZmIxYWI0MTljZWVkZDM1YjVhNzU1YmYwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
Y3BwCkBAIC0xMzMsNiArMTMzLDE0IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBtX2Jh
Y2tpbmdTdG9yZTsKIH0KIAorSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0
YShtX25hbWUsIG1fdmVyc2lvbik7CisgICAgZm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5l
bmQoKTsgKytpdCkKKyAgICAgICAgbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChpdC0+Zmlyc3Qs
IGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30KKwogUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9y
ZU5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVO
YW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IGNm
YmNhM2I2MzUzMDY2YTc3NWM0YzE3ODJmZjEwNDE5NjlkZDliYTIuLjFmZWNkM2JjNGU1MGEyOWNi
ZDZkMjFhNjZmZDBhYjdiMzQ3ZjI5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU4LDYgKzU4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+KTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAg
dmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQyNDgwNzQ3NGI4Y2NmMGJhOTg3
NDZmOTBmZjY3MDBkNDY2N2I0MzkuLmQ1ODE3NzdmOTUxNzNiM2Q1ZGUxNWNiYzExYzMwYzBmMTQ0
NjBlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNs
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZTsKK3N0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwogCiB0eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOwogCkBAIC01Miw2ICs1Myw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZUJhY2tlCiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAK
KyAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2
ZXJzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDU3Y2RiMTIxNWE0MTU3MTg2YjM5YzY5YTZl
NzIzOTQ0MmY3ZDA0YTcuLmQ2OGE0MDZjOWJiYzNhNTBjOWM2NDVjMzZmZTFlNWMyMDQwYWExZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAg
LTQyLDEwICs0MiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJJbmRl
eDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQotICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCitJREJJbmRleDo6SURCSW5kZXgoY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tl
bmQoYmFja2VuZCkKICAgICAsIG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiAgICAgLCBtX3Ry
YW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9kZWxldGVkKGZhbHNlKQogewogICAgIEFT
U0VSVChtX2JhY2tlbmQpOwogICAgIEFTU0VSVChtX29iamVjdFN0b3JlKTsKQEAgLTU5LDYgKzYx
LDEwIEBAIElEQkluZGV4Ojp+SURCSW5kZXgoKQogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5DdXJz
b3IiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQog
ICAgIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiA9IElEQkN1cnNvcjo6c3RyaW5nVG9EaXJlY3Rp
b24oZGlyZWN0aW9uU3RyaW5nLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTEwNSw2ICsxMTEsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpjb3VudCIpOworICAgIGlmIChtX2RlbGV0ZWQp
IHsKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVf
RVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyks
IG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y291bnQoa2V5UmFuZ2UsIHJl
cXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAt
MTI2LDYgKzEzNiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUAogUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURC
SW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogCiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vy
c29yOjpzdHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMp
CkBAIC0xNzMsNiArMTg3LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9w
ZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJf
VFJBQ0UoIklEQkluZGV4OjpnZXQiKTsKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6
SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE4OCw2ICsyMDYsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5n
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7
CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBp
ZiAoIWtleVJhbmdlKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFf
RVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTIwNSw2ICsyMjcsMTAgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHIKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkluZGV4OjpnZXRLZXkiKTsKKyAg
ICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklE
Ql9JTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlmIChr
ZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTIyMCw2ICsyNDYsMTAgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0S2V5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWYKIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0S2V5Iik7CisgICAgaWYgKG1fZGVsZXRlZCkg
eworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleVJhbmdlKSB7CiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGE5
MGFjZTAzZGEwOTYzOWE1NzA4OGM0MTYzZGQwN2ZmZTI3ZTAxOGIuLmUzYTZiNDU1MDliOTkwZjVj
MjYxNTVlOTAyZDgxYzg2NTE0MmE2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIklEQkluZGV4QmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmUuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDIsMTggKzQ0LDE4IEBAIGNsYXNz
IElEQk9iamVjdFN0b3JlOwogCiBjbGFzcyBJREJJbmRleCA6IHB1YmxpYyBSZWZDb3VudGVkPElE
QkluZGV4PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0
ZShQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0
U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1ldGFkYXRhJiBt
ZXRhZGF0YSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElE
Qk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChiYWNrZW5kLCBvYmpl
Y3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJ
bmRleChtZXRhZGF0YSwgYmFja2VuZCwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAg
fQogICAgIH5JREJJbmRleCgpOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJp
bmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAgSURCT2Jq
ZWN0U3RvcmUqIG9iamVjdFN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZS5nZXQo
KTsgfQotICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kLT5rZXlQYXRoKCk7IH0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2VuZC0+dW5pcXVlKCk7IH0KLSAgICBib29sIG11bHRpRW50cnkoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmQtPm11bHRpRW50cnkoKTsgfQorICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlOyB9CisgICAgUGFzc1Jl
ZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7
IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5pcXVlOyB9
CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5tdWx0aUVu
dHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Ig
c28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
cmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwg
ZWMpOyB9CkBAIC04MCwxMiArODIsMTYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleT4sIEV4Y2VwdGlvbkNv
ZGUmKTsKIAorICAgIHZvaWQgbWFya0RlbGV0ZWQoKSB7IG1fZGVsZXRlZCA9IHRydWU7IH0KKwog
cHJpdmF0ZToKLSAgICBJREJJbmRleChQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4sIElEQk9iamVjdFN0b3JlKiwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJJbmRleChjb25z
dCBJREJJbmRleE1ldGFkYXRhJiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
LCBJREJPYmplY3RTdG9yZSosIElEQlRyYW5zYWN0aW9uKik7CiAKKyAgICBJREJJbmRleE1ldGFk
YXRhIG1fbWV0YWRhdGE7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gbV9i
YWNrZW5kOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gbV9vYmplY3RTdG9yZTsKICAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CisgICAgYm9vbCBtX2RlbGV0ZWQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IDk4NjE0
ZGZiMzUwZDQyYjI2OGJjNDJlOGI2MzgyZDM4NDAyN2QxZmYuLmEwODdlNmFhZjJmNTI0MjM1Zjg1
MDdhNmVmNDhlNWIyZWM3ZDllZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJLZXkuaCIK
ICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5j
bHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQlRyYWNpbmcu
aCIKIApAQCAtNjcsNiArNjgsMTEgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6fklEQkluZGV4QmFj
a2VuZEltcGwoKQogewogfQogCitJREJJbmRleE1ldGFkYXRhIElEQkluZGV4QmFja2VuZEltcGw6
Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gSURCSW5kZXhNZXRhZGF0YShtX25hbWUs
IG1fa2V5UGF0aCwgbV91bmlxdWUsIG1fbXVsdGlFbnRyeSk7Cit9CisKIHZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
YXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdW50eXBlZERpcmVjdGlvbiwgSURCQ3Vyc29yQmFj
a2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gdHJhbnNhY3Rpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29ySW50ZXJuYWwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAppbmRleCBkOGIxOTdkMTdlNDAxYmUwYjhh
M2QzNTdkMGRkZDA3M2YwMmZlZDI2Li42NDEwY2JhYzNmYzY0OTBhOWU0NWZkODdiYmQwYzkxNjEz
M2UxZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDYgKzY0LDcgQEAgcHVibGljOgogICAgIGJvb2wg
YWRkaW5nS2V5QWxsb3dlZChjb25zdCBJREJLZXkqIGluZGV4S2V5LCBjb25zdCBJREJLZXkqIHBy
aW1hcnlLZXkgPSAwKTsKIAogICAgIC8vIEltcGxlbWVudHMgSURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlLgorICAgIHZpcnR1YWwgSURCSW5kZXhNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWUoKSB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIElE
QktleVBhdGgga2V5UGF0aCgpIHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIHZpcnR1YWwgYm9v
bCB1bmlxdWUoKSB7IHJldHVybiBtX3VuaXF1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NiZWY3M2JjZTVkMDMxZjFh
YjQ3ZWQzMWJhOGEyM2JkODE2NjhmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIElEQk1ldGFkYXRhX2gKKyNkZWZpbmUgSURCTWV0YWRhdGFfaAorCisjaW5jbHVkZSAiSURC
S2V5UGF0aC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YTsKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhOworCitzdHJ1Y3QgSURC
RGF0YWJhc2VNZXRhZGF0YSB7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSgpIHsgfQorICAgIElE
QkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24pCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIHZlcnNpb24odmVyc2lvbikgeyB9
CisgICAgU3RyaW5nIG5hbWU7CisgICAgU3RyaW5nIHZlcnNpb247CisKKyAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBPYmplY3RTdG9yZU1hcDsKKyAg
ICBPYmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7Cit9OworCitzdHJ1Y3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSB7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSgpIHsgfQorICAgIElEQk9i
amVjdFN0b3JlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBr
ZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAg
ICAsIGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCBhdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1l
bnQpIHsgfQorICAgIFN0cmluZyBuYW1lOworICAgIElEQktleVBhdGgga2V5UGF0aDsKKyAgICBi
b29sIGF1dG9JbmNyZW1lbnQ7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJJbmRl
eE1ldGFkYXRhPiBJbmRleE1hcDsKKyAgICBJbmRleE1hcCBpbmRleGVzOworfTsKKworc3RydWN0
IElEQkluZGV4TWV0YWRhdGEgeworICAgIElEQkluZGV4TWV0YWRhdGEoKSB7IH0KKyAgICBJREJJ
bmRleE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0
aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAgICAgICAgOiBuYW1lKG5hbWUpCisg
ICAgICAgICwga2V5UGF0aChrZXlQYXRoKQorICAgICAgICAsIHVuaXF1ZSh1bmlxdWUpCisgICAg
ICAgICwgbXVsdGlFbnRyeShtdWx0aUVudHJ5KSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBJ
REJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCB1bmlxdWU7CisgICAgYm9vbCBtdWx0aUVudHJ5
OworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNlbmRp
ZiAvLyBJREJUcmFjaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBlNmI5NGEyYWY1Mzg5NDAxNDE2MDZiMTY3ZmIz
MGFhNjEwYTAzNGM4Li43YWVlY2Y2ZTdjYzEwOGFlMDZiYTQ4NjE0Y2ZmYzU2Y2ZjNTA5ZmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAi
SURCS2V5LmgiCkBAIC00NCw5ICs0NSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhU
OwogCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCi0gICAgOiBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCitJREJPYmplY3RTdG9y
ZTo6SURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEs
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9y
ZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShtZXRhZGF0
YSkKKyAgICAsIG1fcHJldmlvdXNNZXRhZGF0YShtZXRhZGF0YSkKKyAgICAsIG1fYmFja2VuZChp
ZGJPYmplY3RTdG9yZSkKICAgICAsIG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBt
X2RlbGV0ZWQoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fYmFja2VuZCk7CiAgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb24pOwpAQCAtNTQsMzQgKzU4LDE0IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmpl
Y3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2Jq
CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RT
dG9yZTo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6bmFt
ZSIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKLX0KLQotUGFzc1JlZlB0cjxJREJB
bnk+IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklE
Qk9iamVjdFN0b3JlOjprZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgp
OwotfQotCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5h
bWVzKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVz
Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+aW5kZXhOYW1lcygpOwotfQotCi1JREJUcmFuc2Fj
dGlvbiogSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKLXsKLSAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbiIpOwotICAgIHJldHVybiBtX3RyYW5zYWN0
aW9uLmdldCgpOwotfQotCi1ib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29u
c3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0g
ICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVudCgpOworICAgIFJlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21l
dGFkYXRhLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyAr
K2l0KQorICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5h
bWVzLT5zb3J0KCk7CisgICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtMTA0LDYgKzg4LDEwIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQ
YXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Z2V0Iik7CisgICAgaWYgKG1f
ZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAoIWtleSB8fCAo
a2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTE4LDEx
ICsxMDYsMTQgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3MKIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmU6OmFkZCIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAgICAgICBl
YyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0KICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFs
aWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNDcsMTEgKzEzOCwxNCBAQCBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQk9iamVjdFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzcwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6cHV0Iik7CisgICAgaWYgKG1fZGVs
ZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlv
bi0+aXNSZWFkT25seSgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJF
QURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQogICAgIGlmIChrZXkgJiYg
KGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE3Niwx
MSArMTcwLDE0IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisgICAg
aWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJf
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobV90
cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQogICAgIGlm
ICgha2V5UmFuZ2UpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9F
UlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTk4LDExICsxOTUsMTQgQEAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY28KIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmU6OmRlbGV0ZSIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmlzUmVhZE9ubHkoKSkgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9Ci0KICAgICBpZiAoIWtleSB8fCAha2V5LT5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAw
OwpAQCAtMjIwLDExICsyMjAsMTQgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2Jq
ZWN0U3RvcmU6OmNsZWFyIik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNSZWFkT25seSgpKSB7CiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLQogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9u
LmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNsZWFyKHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJh
Y2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMjUxLDYgKzI1NCwxMSBAQCBQYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPAogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKKyAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKwogICAgIGlmICgha2V5UGF0aC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX1NZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwpAQCAtMjY5LDE2ICsyNzcsMjQgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3Rv
cmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2UKIAogICAgIFJl
ZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+
Y3JlYXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAhPSAhZWMpOyAv
LyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhj
ZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgotICAgIGlmICghaW5kZXhCYWNrZW5kKQorICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9
IElEQkluZGV4OjpjcmVhdGUoaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CisKKyAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBh
dGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElE
QkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKKyAg
ICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKKwogICAgIHJldHVybiBp
bmRleC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3Jl
OjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmluZGV4Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgewor
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobV90cmFuc2FjdGlvbi0+aXNGaW5p
c2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OklEQl9JTlZBTElE
X1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yOTAsMjIgKzMwNiw0NiBAQCBQYXNz
UmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYwogCiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFj
ZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5pbmRleChuYW1lLCBlYyk7CiAgICAgQVNTRVJU
KCFpbmRleEJhY2tlbmQgIT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ug
c2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2VwdGlvbiBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KLSAg
ICBpZiAoIWluZGV4QmFja2VuZCkKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQg
PSBtX21ldGFkYXRhLmluZGV4ZXMuZmluZChuYW1lKTsKKyAgICAvLyBGSVhNRTogVGhpcyBjYW4g
Y2hhbmdlIGludG8gYW4gQVNTRVJUIG9uY2UgaHR0cDovL3dlYmtpdC5vcmcvYi84MDU0NyBpcyBm
aXhlZC4KKyAgICBpZiAobWRpdCA9PSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVh
dGUoaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7Cisg
ICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWRpdC0+c2Vjb25k
LCBpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAg
ICBtX2luZGV4TWFwLnNldChuYW1lLCBpbmRleCk7CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2Uo
KTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzVmVy
c2lvbkNoYW5nZSgpIHx8IG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBtX2JhY2tlbmQtPmRlbGV0ZUluZGV4KG5hbWUsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOworICAgIGlmICghZWMpIHsKKyAgICAgICAgSURCSW5kZXhNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9pbmRleE1hcC5maW5kKG5hbWUpOworICAgICAgICBpZiAoaXQgIT0gbV9pbmRleE1hcC5l
bmQoKSkgeworICAgICAgICAgICAgaXQtPnNlY29uZC0+bWFya0RlbGV0ZWQoKTsKKyAgICAgICAg
ICAgIG1faW5kZXhNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJU
KG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSk7CisgICAgICAgIG1fbWV0YWRhdGEu
aW5kZXhlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
blN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZTo6b3BlbkN1cnNvciIpOworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6SURCX0lOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CiAgICAgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uID0gSURCQ3Vyc29yOjpz
dHJpbmdUb0RpcmVjdGlvbihkaXJlY3Rpb25TdHJpbmcsIGVjKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMzUyLDYgKzM5MiwxMCBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNvdW50
Iik7CisgICAgaWYgKG1fZGVsZXRlZCkgeworICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpJREJfSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0
LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNr
ZW5kLT5jb3VudChyYW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7
CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaAppbmRleCBlMTFmYmQwODBkMmJlZDk3NTEzYzc4NTc2MTI0OTA4YzAy
MDdiZGZiLi42ZDk4MWExYzBkNzM0NjQ4YTM0M2E4MTFlODJlM2VhNGJmODMxOTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNp
bmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKQEAgLTQ5LDE4ICs1MCwxOCBA
QCBjbGFzcyBJREJBbnk7CiAKIGNsYXNzIElEQk9iamVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50
ZWQ8SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gY3JlYXRlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKGlkYk9iamVjdFN0b3JlLCB0
cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3Jl
KG1ldGFkYXRhLCBiYWNrZW5kLCB0cmFuc2FjdGlvbikpOwogICAgIH0KICAgICB+SURCT2JqZWN0
U3RvcmUoKSB7IH0KIAogICAgIC8vIEltcGxlbWVudCB0aGUgSURCT2JqZWN0U3RvcmUgSURMCi0g
ICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgp
IGNvbnN0OworICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1l
OyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX21l
dGFkYXRhLmtleVBhdGg7IH0KICAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFt
ZXMoKSBjb25zdDsKLSAgICBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oKSBjb25zdDsKLSAg
ICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb247IH0KKyAgICBi
b29sIGF1dG9JbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmF1dG9JbmNyZW1l
bnQ7IH0KIAogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gYWRkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGFkZChjb250ZXh0LCB2YWx1ZSwgMCwgZWMpOyAg
fQogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1dChjb250ZXh0LCB2YWx1ZSwgMCwgZWMpOyAgfQpAQCAt
OTQsMTQgKzk1LDE5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
dm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNh
Y3Rpb25GaW5pc2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhZGF0YSgpIHsgbV9tZXRhZGF0YSA9
IG1fcHJldmlvdXNNZXRhZGF0YTsgfQogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24q
KTsKKyAgICBJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiop
OwogICAgIHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25Gcm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFk
YXRhIG1fcHJldmlvdXNNZXRhZGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5z
YWN0aW9uOworICAgIGJvb2wgbV9kZWxldGVkOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPElEQkluZGV4PiA+IElEQkluZGV4TWFwOwogICAgIElEQkluZGV4TWFwIG1faW5k
ZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4IDc0MzM4OGFlMTdmNWQ3NzYy
ZTMzZmUyNGJiYzRhNDc0MmU4MTg5NTguLmQ0ZGEzNTEzZmU4YTRlMzFmOGQzMGFlYzlmMGQ3ZWQ4
NmI1YWY2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC03Miw2ICs3MiwxNCBA
QCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNv
bnN0IElEQkRhdGFiYXNlQmFja2VuZEltcAogewogfQogCitJREJPYmplY3RTdG9yZU1ldGFkYXRh
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX2F1dG9JbmNy
ZW1lbnQpOworICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVz
LmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWV0YWRhdGEu
aW5kZXhlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRhZGF0YSgpKTsKKyAgICByZXR1
cm4gbWV0YWRhdGE7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAgICAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuaAppbmRleCBkMzcyMjUzYTMzNDNmMGJkZGRkYzExNzMwYjE4MDZkMTY0Mjk0NWM2
Li5jM2QxYzUzMzFkOTRmNDVkZjcxMzhjZjA0OTg4YTQwMWNmNTY3Yzk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBA
IC00MCw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw7CiBjbGFzcyBJREJJ
bmRleEJhY2tlbmRJbXBsOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsIDogcHVibGljIElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CkBAIC02MSw2ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdm9pZCBzZXRJZChpbnQ2NF90IGlkKSB7IG1faWQgPSBpZDsgfQogCisg
ICAgdmlydHVhbCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIHZpcnR1
YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9rZXlQYXRoOyB9CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cAppbmRleCBiYzY1NTU0MTQ5NzAwNTY1ZmNlMDAxZTY5MDlkYzllZDY1MDU1MDIwLi42YmMzZGMz
YTJiMGRmMThlNTk3MmM5Mzk2ZTUzZmFlOTAyYzdmZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xNTMsMjUgKzE1
MywzNyBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0
U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogICAgICAgICByZXR1cm4gaXQtPnNlY29u
ZDsKIAogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlQmFja2VuZCA9IG1fYmFja2VuZC0+b2JqZWN0U3RvcmUobmFtZSwgZWMpOwotICAgIGlmICgh
b2JqZWN0U3RvcmVCYWNrZW5kKSB7Ci0gICAgICAgIEFTU0VSVChlYyk7CisgICAgQVNTRVJUKCFv
YmplY3RTdG9yZUJhY2tlbmQgIT0gIWVjKTsgLy8gSWYgd2UgZGlkbid0IGdldCBhIHN0b3JlLCB3
ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgor
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG9iamVjdFN0b3Jl
QmFja2VuZCwgdGhpcyk7CisKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0
YSA9IG1fZGF0YWJhc2UtPm1ldGFkYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2Jq
ZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMu
ZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5k
KCkpOworCisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVj
dFN0b3JlOjpjcmVhdGUobWRpdC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwog
ICAgIG9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9i
amVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVDcmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9y
ZSkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAgIG1fb2JqZWN0
U3RvcmVNYXAuc2V0KG5hbWUsIG9iamVjdFN0b3JlKTsKKyAgICBtX29iamVjdFN0b3JlQ2xlYW51
cFNldC5hZGQob2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RT
dG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVCghbV90cmFuc2Fj
dGlvbkZpbmlzaGVkKTsKLSAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKKyAgICBJ
REJPYmplY3RTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3JlTWFwLmZpbmQobmFt
ZSk7CisgICAgaWYgKGl0ICE9IG1fb2JqZWN0U3RvcmVNYXAuZW5kKCkpIHsKKyAgICAgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IGl0LT5zZWNvbmQ7CisgICAgICAgIG1f
b2JqZWN0U3RvcmVNYXAucmVtb3ZlKG5hbWUpOworICAgICAgICBvYmplY3RTdG9yZS0+bWFya0Rl
bGV0ZWQoKTsKKyAgICAgICAgbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYWRkKG9iamVjdFN0b3Jl
KTsKKyAgICB9CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmFib3J0KCkKQEAgLTIzMyw2ICsy
NDUsMTAgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgpCiAgICAgICAgIHJlcXVlc3Qt
PmFib3J0KCk7CiAgICAgfQogCisgICAgaWYgKG1fbW9kZSA9PSBJREJUcmFuc2FjdGlvbjo6VkVS
U0lPTl9DSEFOR0UpIHsKKyAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZVNldDo6aXRlcmF0b3Ig
aXQgPSBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jl
Q2xlYW51cFNldC5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgICgqaXQpLT5yZXNldE1ldGFkYXRh
KCk7CisgICAgfQogICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKICAgICBtX2RhdGFiYXNlLT50cmFu
c2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCAyZjdiYWJmYzRiMWNkOTEyZWQ2Y2RiZDg0
MDc0NTA5MWVhZDdhZjNlLi44Y2VlNWQzMDU3YjgxNjc5ZWMwOWRiN2FiNmJhMDA1ZTgwMjBiODJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CkBAIC0xNDMsNiArMTQ0LDkgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVNYXA7CiAg
ICAgSURCT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZU1hcDsKIAorICAgIHR5cGVkZWYgSGFz
aFNldDxSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVTZXQ7CisgICAgSURC
T2JqZWN0U3RvcmVTZXQgbV9vYmplY3RTdG9yZUNsZWFudXBTZXQ7CisKICAgICBIYXNoU2V0PElE
QkN1cnNvcio+IG1fb3BlbkN1cnNvcnM7CiAKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRh
cmdldERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDIyNWI5YTVmOGQ0ZWVhNTc4Y2FmYTJlZWU1
YjQzOTJmMGUwNDkwNy4uNjBmNjNkYTQ5YjlkMmFlZjYxMjkwMmZmY2JkMTkzMzk1M2E3ZmZjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTQ4Myw2ICsxNDgzLDcgQEAKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5nLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgnLAorICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IDk5MjA0Yjg4NmFiN2VjMWNmNGQyNGE1OTNjY2RjZDAyN2Q1NDk5MDEuLmEzOWVhZTZjZmUz
NDk3ODBiZGIzMTUwNDNjNDRhMzNiYzNiNDFhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTE4MSw2ICsxODEsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCS2V5UGF0aC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYklEQktleVJhbmdlLmgnLAorICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViSURCTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJPYmpl
Y3RTdG9yZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCcs
CkBAIC01NTgsNiArNTU5LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleS5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViSURCS2V5UmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklE
Qk1ldGFkYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUlt
cGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKaW5kZXggYjM5ODUz
NDE2NTU0M2ExOTdhNjE3OTdkNTQ3NDlkYTg1ZTNhMzU2ZS4uYTAwMWMyZTkyMjE4ZTgzM2VmNzM5
ZWIyZGM3OTMwZDRmY2VhOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJEYXRhYmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJXZWJET01T
dHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIldl
YklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDQsNiArNDUsMTEgQEAgY2xhc3MgV2ViSURCRGF0YWJhc2Ugewog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlKCkgeyB9CiAKKyAgICB2aXJ0dWFs
IFdlYklEQk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3QKKyAgICB7CisgICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFdlYklEQk1ldGFkYXRhKCk7Cisg
ICAgfQogICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCS2V5UGF0aC5oCmluZGV4IGJlYjFmYTIyZDhkMDkxYzIwZWQxZTU1Y2MyYjMw
NzcxMGI5ZGRmNjQuLjYxMjUzNDQ1YmQwMzU3NmIwZTUxMDI2MzUwNjU1NDJlMzAzNGViMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklEQktleVBh
dGggY3JlYXRlTnVsbCgpOwogICAgIFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aChjb25zdCBX
ZWJJREJLZXlQYXRoJik7CiAgICAgV0VCS0lUX0VYUE9SVCB+V2ViSURCS2V5UGF0aCgpOworICAg
IFdFQktJVF9FWFBPUlQgV2ViSURCS2V5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IFdlYklEQktleVBh
dGgmKTsKIAogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIE51bGxUeXBlID0gMCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFi
MTYzMjQ2NTVkMTczODhkMzU0M2Y0ZmVjZTExNDNkNDk3NGQzZTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCkBAIC0wLDAg
KzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQk1ldGFkYXRhX2gKKyNkZWZpbmUgV2ViSURC
TWV0YWRhdGFfaAorCisjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlByaXZhdGVPd25QdHIuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJW
ZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYklEQk1ldGFkYXRhIHsK
KyAgICBzdHJ1Y3QgSW5kZXg7CisgICAgc3RydWN0IE9iamVjdFN0b3JlOworCisgICAgV2ViU3Ry
aW5nIG5hbWU7CisgICAgV2ViU3RyaW5nIHZlcnNpb247CisgICAgV2ViVmVjdG9yPE9iamVjdFN0
b3JlPiBvYmplY3RTdG9yZXM7CisgICAgV2ViSURCTWV0YWRhdGEoKQorICAgICAgICA6IG5hbWUo
V2ViU3RyaW5nKCkpCisgICAgICAgICwgdmVyc2lvbihXZWJTdHJpbmcoKSkgeyB9CisKKyAgICBz
dHJ1Y3QgT2JqZWN0U3RvcmUgeworICAgICAgICBXZWJTdHJpbmcgbmFtZTsKKyAgICAgICAgV2Vi
SURCS2V5UGF0aCBrZXlQYXRoOworICAgICAgICBib29sIGF1dG9JbmNyZW1lbnQ7CisgICAgICAg
IFdlYlZlY3RvcjxJbmRleD4gaW5kZXhlczsKKyAgICAgICAgT2JqZWN0U3RvcmUoKQorICAgICAg
ICAgICAgOiBuYW1lKFdlYlN0cmluZygpKQorICAgICAgICAgICAgLCBrZXlQYXRoKFdlYklEQktl
eVBhdGg6OmNyZWF0ZU51bGwoKSkKKyAgICAgICAgICAgICwgYXV0b0luY3JlbWVudChmYWxzZSkg
eyB9CisgICAgfTsKKworICAgIHN0cnVjdCBJbmRleCB7CisgICAgICAgIFdlYlN0cmluZyBuYW1l
OworICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CisgICAgICAgIGJvb2wgdW5pcXVlOwor
ICAgICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIEluZGV4KCkKKyAgICAgICAgICAgIDog
bmFtZShXZWJTdHJpbmcoKSkKKyAgICAgICAgICAgICwga2V5UGF0aChXZWJJREJLZXlQYXRoOjpj
cmVhdGVOdWxsKCkpCisgICAgICAgICAgICAsIHVuaXF1ZShmYWxzZSkKKyAgICAgICAgICAgICwg
bXVsdGlFbnRyeShmYWxzZSkgeyB9CisgICAgfTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEm
KTsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhKCkgY29uc3Q7Cisj
ZW5kaWYKK307CisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJN
ZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNTg2NjFlYmFiODNmNWJjZjhhNGNhODlhYmU3ZGI4
MTA4NGM5MDVmNC4uMTA3ZWM2M2IzYjc4ODNlMDllZWEzMzdjNTkxNWMzNWFkNDBhMWQzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgog
I2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIKQEAgLTYwLDYgKzYxLDExIEBAIElEQkRhdGFi
YXNlQmFja2VuZFByb3h5Ojp+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoKQogewogfQogCitJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm1ldGFkYXRhKCk7Cit9CisKIFN0cmlu
ZyBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
d2ViSURCRGF0YWJhc2UtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IGU4MTdlZGYxOTk1ZGEyYTg2N2U5
NTU5MDZkOTg5NzBlYjM0NGY5MmIuLmIwNTU1MmNjYmYxMTcyMDVjY2U1NzRjZTlhYWQyODVmOWVi
YmVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFz
c093blB0cjxXZWJJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5KCk7CiAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEgbWV0
YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAyNjYy
ZjgwMWY3NWYyMGUzMTUxZTRlODcwOGI1ZWZhNzM2Y2M3YWU2Li4zOTgwM2UxNDU5M2VkNzM0MDk2
YWE2Yzc4MzI4NTljYzJiNmUyNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAi
SURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAi
SURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFz
ZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
SURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgi
CiAKQEAgLTUxLDYgKzUzLDExIEBAIFdlYklEQkRhdGFiYXNlSW1wbDo6fldlYklEQkRhdGFiYXNl
SW1wbCgpCiB7CiB9CiAKK1dlYklEQk1ldGFkYXRhIFdlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRh
dGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bWV0YWRhdGEoKTsK
K30KKwogV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNlSW1wbDo6bmFtZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5uYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDE5MGQ3ZTJkYzMyOWIwNmZiM2Fl
NmY4OTg0YjMxYjJkMjUyYmFiODIuLjVlOTg5ZTAwZWVkYmEyMDFiZGVkMGE2ZGI3OTc5NTc1YmU5
NTA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJREJE
YXRhYmFzZUNhbGxiYWNrc1Byb3h5OwogY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7Citj
bGFzcyBXZWJJREJEYXRhYmFzZU1ldGFkYXRhOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBj
bGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAtNDksNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
V2ViSURCRGF0YWJhc2VJbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAor
ICAgIHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigp
IGNvbnN0OwogICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZU5hbWVzKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQ
YXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCmlu
ZGV4IDE3YzE1OGYzNGU0ODhkOTBlMzE3M2NkYzM4NDYxZDFhZjJhM2I3OTcuLjZlY2YxZGQwNWM1
Zjg1NzNkOTQzNmY5NTJjOGFlNmNmZDU4MzQwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleVBhdGguY3BwCkBAIC02MCw2ICs2MCwxMyBAQCBXZWJJREJLZXlQYXRo
IFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKQogICAgIHJldHVybiBXZWJJREJLZXlQYXRoKElE
QktleVBhdGgoKSk7CiB9CiAKK1dlYklEQktleVBhdGgmIFdlYklEQktleVBhdGg6Om9wZXJhdG9y
PShjb25zdCBXZWJJREJLZXlQYXRoJiBvdGhlcikKK3sKKyAgICBBU1NFUlQob3RoZXIubV9wcml2
YXRlLmdldCgpKTsKKyAgICBtX3ByaXZhdGUucmVzZXQobmV3IElEQktleVBhdGgob3RoZXIpKTsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKIGJvb2wgV2ViSURCS2V5UGF0aDo6aXNWYWxpZCgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzM1MDYzZWYwZmYzM2Ji
OGE2YzZkMmVlYjgwNjU3MGIwMWZkNTljYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCisKKyNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisj
aW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRh
ZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3sKKyAg
ICBuYW1lID0gbWV0YWRhdGEubmFtZTsKKyAgICB2ZXJzaW9uID0gbWV0YWRhdGEudmVyc2lvbjsK
KyAgICBvYmplY3RTdG9yZXMgPSBXZWJWZWN0b3I8T2JqZWN0U3RvcmU+KHN0YXRpY19jYXN0PHNp
emVfdD4obWV0YWRhdGEub2JqZWN0U3RvcmVzLnNpemUoKSkpOworCisgICAgc2l6ZV90IGkgPSAw
OworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0
ZXJhdG9yIHN0b3JlSXRlcmF0b3IgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsgc3Rv
cmVJdGVyYXRvciAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsrc3RvcmVJdGVyYXRv
cikgeworICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSA9
IHN0b3JlSXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgT2JqZWN0U3RvcmUgd2ViT2JqZWN0U3Rv
cmU7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLm5hbWUgPSBvYmplY3RTdG9yZS5uYW1lOworICAg
ICAgICB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoID0gb2JqZWN0U3RvcmUua2V5UGF0aDsKKyAgICAg
ICAgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLmF1dG9JbmNyZW1l
bnQ7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmluZGV4ZXMgPSBXZWJWZWN0b3I8SW5kZXg+KHN0
YXRpY19jYXN0PHNpemVfdD4ob2JqZWN0U3RvcmUuaW5kZXhlcy5zaXplKCkpKTsKKworICAgICAg
ICBzaXplX3QgaiA9IDA7CisgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5k
ZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGluZGV4SXRlcmF0b3IgPSBvYmplY3RTdG9yZS5pbmRleGVz
LmJlZ2luKCk7IGluZGV4SXRlcmF0b3IgIT0gb2JqZWN0U3RvcmUuaW5kZXhlcy5lbmQoKTsgKytp
bmRleEl0ZXJhdG9yKSB7CisgICAgICAgICAgICBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRl
eCA9IGluZGV4SXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgICAgIEluZGV4IHdlYkluZGV4Owor
ICAgICAgICAgICAgd2ViSW5kZXgubmFtZSA9IGluZGV4Lm5hbWU7CisgICAgICAgICAgICB3ZWJJ
bmRleC5rZXlQYXRoID0gaW5kZXgua2V5UGF0aDsKKyAgICAgICAgICAgIHdlYkluZGV4LnVuaXF1
ZSA9IGluZGV4LnVuaXF1ZTsKKyAgICAgICAgICAgIHdlYkluZGV4Lm11bHRpRW50cnkgPSBpbmRl
eC5tdWx0aUVudHJ5OworICAgICAgICAgICAgd2ViT2JqZWN0U3RvcmUuaW5kZXhlc1tqKytdID0g
d2ViSW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgb2JqZWN0U3RvcmVzW2krK10gPSB3ZWJPYmpl
Y3RTdG9yZTsKKyAgICB9Cit9CisKK1dlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRhYmFz
ZU1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGRiKG5hbWUsIHZl
cnNpb24pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGNvbnN0IE9iamVjdFN0b3JlIHdlYk9iamVjdFN0b3JlID0gb2JqZWN0
U3RvcmVzW2ldOworICAgICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlKHdl
Yk9iamVjdFN0b3JlLm5hbWUsIHdlYk9iamVjdFN0b3JlLmtleVBhdGgsIHdlYk9iamVjdFN0b3Jl
LmF1dG9JbmNyZW1lbnQpOworCisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgd2ViT2Jq
ZWN0U3RvcmUuaW5kZXhlcy5zaXplKCk7ICsraikgeworICAgICAgICAgICAgY29uc3QgSW5kZXgg
d2ViSW5kZXggPSB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2pdOworICAgICAgICAgICAgSURCSW5k
ZXhNZXRhZGF0YSBpbmRleCh3ZWJJbmRleC5uYW1lLCB3ZWJJbmRleC5rZXlQYXRoLCB3ZWJJbmRl
eC51bmlxdWUsIHdlYkluZGV4Lm11bHRpRW50cnkpOworICAgICAgICAgICAgb2JqZWN0U3RvcmUu
aW5kZXhlcy5zZXQoaW5kZXgubmFtZSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIGRiLm9i
amVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmUubmFtZSwgb2JqZWN0U3RvcmUpOworICAgIH0KKyAg
ICByZXR1cm4gZGI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjFjY2FkMmZhZGM1MWMxOTRmYzQxZTgxYTI5
ZTY4OWYwODE3ZWY5Ny4uMWMwZWViZjExYTI5ZjNjYzdiMmNlMWYxYTI2ZWQxM2FiMTNhN2I0MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFwc2hvdCBtZXRhZGF0YSBpbiBm
cm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmpl
Y3RzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGVs
ZXRlZC1vYmplY3RzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21l
dGFkYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
bWV0YWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL2RlbGV0ZWQtb2JqZWN0cy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAg
KG9wZW5EYXRhYmFzZS5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAg
ICAgIChvcGVuRGF0YWJhc2UucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAob3BlbkRhdGFi
YXNlKToKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEuanM6
IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgIChmaXJzdE9wZW4ucmVxdWVzdC5vbnN1
Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChmaXJz
dE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZmly
c3RPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZpcnN0T3Blbik6CisgICAgICAg
IChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9u
Y29tcGxldGUpOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAg
ICAgICAgKHNlY29uZE9wZW4pOgorICAgICAgICAodGhpcmRPcGVuLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uYWJvcnQpOgorICAgICAgICAodGhpcmRPcGVuLnJl
cXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRoaXJkT3Blbi5y
ZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0aGlyZE9wZW4pOgorICAgICAgICAoZm91cnRo
T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRl
KToKKyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nl
c3MpOgorICAgICAgICAoZm91cnRoT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChm
b3VydGhPcGVuKToKKyAgICAgICAgKGNoZWNrU3RhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1iYXNpY3MuanM6IE9wZXJhdGlvbnMgb24KKyAg
ICAgICAgYSBkZWxldGVkIG9iamVjdCBzdG9yZSBhcmUgbm93IHByZXZlbnRlZCBwZXIgc3BlYy4K
KyAgICAgICAgKGFkZFJlbW92ZUlEQk9iamVjdHMpOgorICAgICAgICAoYWRkUmVtb3ZlQWRkSURC
T2JqZWN0cyk6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYmFzaWNz
LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wNi0xMiAgRWRhZW5hIFNhbGluYXMgSmFzc28gIDxlZGFl
bmFAYXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNldCBlbC50eXBlIG9uIGEgPGJ1dHRvbj4g
ZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRl
ZC1vYmplY3RzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Rl
bGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY2NmFmZTNhMDhhZmI0OTE3
YWQzMzY0OTM1ODMyY2MxZTIxMjU5MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL2RlbGV0ZWQtb2JqZWN0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4
NyBAQAorVGVzdCB0aGF0IEluZGV4ZWREQiBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQg
dGhyb3cgZXhjZXB0aW9ucworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhl
ZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJ
bmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKQorCitvcGVuRGF0YWJhc2UoKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUpCitjb25uZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0
aW9uLnNldFZlcnNpb24oJzEnKQorCitkZWxldGVkU3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9i
amVjdFN0b3JlKCdkZWxldGVkU3RvcmUnKQorc3RvcmUgPSBjb25uZWN0aW9uLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZScpCitkZWxldGVkSW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnZGVsZXRl
ZEluZGV4JywgJ3BhdGgnKQorCitjb25uZWN0aW9uLmRlbGV0ZU9iamVjdFN0b3JlKCdkZWxldGVk
U3RvcmUnKQorc3RvcmUuZGVsZXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcpCisKK0V4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUucHV0KDAsIDApCitQQVNTIEV4Y2VwdGlvbiB3YXMg
dGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFT
UyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20g
ZGVsZXRlZFN0b3JlLmFkZCgwLCAwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1Mg
Y29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0lu
dmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9yZS5k
ZWxldGUoMCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhj
ZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJv
cicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuZ2V0KDApCitQQVNTIEV4
Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhj
ZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmNsZWFyKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJv
d24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVu
YW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxl
dGVkU3RvcmUub3BlbkN1cnNvcigpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBj
b2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52
YWxpZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmNy
ZWF0ZUluZGV4KCduYW1lJywgJ3BhdGgnKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BB
U1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMg
J0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRTdG9y
ZS5pbmRleCgnbmFtZScpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlz
IERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0
YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZFN0b3JlLmRlbGV0ZUlu
ZGV4KCduYW1lJykKK1BBU1MgRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQQVNTIGNvZGUgaXMgRE9N
RXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNTIGVuYW1lIGlzICdJbnZhbGlkU3RhdGVF
cnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBkZWxldGVkU3RvcmUuY291bnQoKQorUEFT
UyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJ
RF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworCitFeHBlY3Rp
bmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4Lm9wZW5DdXJzb3IoKQorUEFTUyBFeGNlcHRp
b24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJworRXhwZWN0aW5nIGV4Y2VwdGlv
biBmcm9tIGRlbGV0ZWRJbmRleC5vcGVuS2V5Q3Vyc29yKCkKK1BBU1MgRXhjZXB0aW9uIHdhcyB0
aHJvd24uCitQQVNTIGNvZGUgaXMgRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSCitQQVNT
IGVuYW1lIGlzICdJbnZhbGlkU3RhdGVFcnJvcicKK0V4cGVjdGluZyBleGNlcHRpb24gZnJvbSBk
ZWxldGVkSW5kZXguZ2V0KDApCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2Rl
IGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxp
ZFN0YXRlRXJyb3InCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gZGVsZXRlZEluZGV4LmdldEtl
eSgwKQorUEFTUyBFeGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRp
b24uSU5WQUxJRF9TVEFURV9FUlIKK1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwor
RXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIGRlbGV0ZWRJbmRleC5jb3VudCgpCitQQVNTIEV4Y2Vw
dGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRF
X0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3InCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kZWxldGVkLW9iamVjdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTNmNTJm
NTA5YzU0MGM0YjcwY2JiNDhhMjE5YjNmYThkMWE3MWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGVsZXRlZC1vYmplY3RzLmh0bWwKQEAgLTAsMCAr
MSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZGVsZXRlZC1vYmplY3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0MzZkNDc1YWE0MjdiYWNmYWZmMTM0N2EzNjQxZjg1Zjk3OGQy
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRh
ZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4OCBAQAorVGVzdCBJbmRleGVkREIgZGF0YWJh
c2UgbWV0YWRhdGEgbXV0YXRpb24vc25hcHNob3R0aW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4
ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0lu
ZGV4ZWREQjsKKworZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZQorcmVxdWVzdCA9IGlu
ZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisKK2ZpcnN0T3BlbigpOgorcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24xID0gcmVxdWVzdC5yZXN1bHQKK3Jl
cXVlc3QgPSBjb25uZWN0aW9uMS5zZXRWZXJzaW9uKCcxJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1
bHQKK2Nvbm5lY3Rpb24xc3RvcmUxID0gY29ubmVjdGlvbjEuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0
b3JlMScpCitjb25uZWN0aW9uMXN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ3BhdGgnKQor
UEFTUyBjb25uZWN0aW9uMS52ZXJzaW9uIGlzICIxIgorUEFTUyBjb25uZWN0aW9uMS5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMu
bGVuZ3RoIGlzIDEKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRl
ZCBvbiBjbG9zZQorY29ubmVjdGlvbjEuY2xvc2UoKQorCitzZWNvbmRPcGVuKCk6CityZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbjIgPSByZXF1ZXN0LnJlc3VsdAor
cmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKQordHJhbnMgPSByZXF1ZXN0LnJl
c3VsdAorY29ubmVjdGlvbjIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpCitjb25uZWN0aW9u
MnN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjJzdG9yZTEu
Y3JlYXRlSW5kZXgoJ2luZGV4MicsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBp
cyAiMiIKK1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFT
UyBjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCitDb25uZWN0aW9uJ3Mg
cHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24yLmNs
b3NlKCkKKwordGhpcmRPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQor
Y29ubmVjdGlvbjMgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZl
cnNpb24oJzMnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjMuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlMycpCitjb25uZWN0aW9uM3N0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3Jl
KCdzdG9yZTEnKQorY29ubmVjdGlvbjNzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4MycsICdwYXRo
JykKK1BBU1MgY29ubmVjdGlvbjMudmVyc2lvbiBpcyAiMyIKK1BBU1MgY29ubmVjdGlvbjMub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5h
bWVzLmxlbmd0aCBpcyAzCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0
ZWQgb24gYWJvcnQKK3RyYW5zLmFib3J0KCkKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3Vs
ZCBiZSBzbmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjMuY2xvc2UoKQorCitmb3VydGhP
cGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbjQgPSBy
ZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24oJzQnKQordHJh
bnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjQuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3Jl
NCcpCitjb25uZWN0aW9uNHN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29u
bmVjdGlvbjRzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4NCcsICdwYXRoJykKK1BBU1MgY29ubmVj
dGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAz
CitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UK
K2Nvbm5lY3Rpb240LmNsb3NlKCkKKworY2hlY2tTdGF0ZSgpOgorUEFTUyBjb25uZWN0aW9uMS52
ZXJzaW9uIGlzICIxIgorUEFTUyBjb25uZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBp
cyAxCitQQVNTIGNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDEKKworUEFT
UyBjb25uZWN0aW9uMi52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0aW9uMi5vYmplY3RTdG9y
ZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVu
Z3RoIGlzIDIKKworUEFTUyBjb25uZWN0aW9uMy52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0
aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24zc3RvcmUx
LmluZGV4TmFtZXMubGVuZ3RoIGlzIDIKKworUEFTUyBjb25uZWN0aW9uNC52ZXJzaW9uIGlzICI0
IgorUEFTUyBjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitQQVNTIGNv
bm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKKworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MmNmZTU5ZWM0NWVjMDc0ZTgz
ZWIzOGJmNThiZjJiMWI4NTJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21ldGFkYXRhLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RlbGV0ZWQtb2JqZWN0cy5qcyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVkLW9iamVjdHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzk3YTA1YWJmY2M0MWI3MmRiZWRkYTVhMTIzNWEyY2NlZDA5NTAyNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9kZWxldGVk
LW9iamVjdHMuanMKQEAgLTAsMCArMSw2NCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgSW5kZXhlZERCIG9iamVjdHMgdGhhdCBoYXZlIGJlZW4gZGVsZXRlZCB0aHJv
dyBleGNlcHRpb25zIik7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclBy
ZWZpeGVzKCk7CisgICAgZXZhbEFuZExvZygiZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFt
ZSIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gb3BlbkRhdGFiYXNlOworfQorCitmdW5jdGlvbiBv
cGVuRGF0YWJhc2UoKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1Zygib3BlbkRhdGFiYXNl
KCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSki
KTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25u
ZWN0aW9uID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGNvbm5lY3Rpb24uc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKKworICAgICAg
ICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlZFN0b3JlID0g
Y29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coInN0b3JlID0gY29ubmVjdGlvbi5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiZGVsZXRlZEluZGV4ID0gc3RvcmUuY3Jl
YXRlSW5kZXgoJ2RlbGV0ZWRJbmRleCcsICdwYXRoJykiKTsKKworICAgICAgICAgICAgZGVidWco
IiIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbi5kZWxldGVPYmplY3RTdG9y
ZSgnZGVsZXRlZFN0b3JlJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInN0b3JlLmRlbGV0
ZUluZGV4KCdkZWxldGVkSW5kZXgnKSIpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUucHV0KDAsIDApIiwg
IkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7
CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUuYWRkKDAs
IDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJy
b3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkU3RvcmUu
ZGVsZXRlKDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0
YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVk
U3RvcmUuZ2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxp
ZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxl
dGVkU3RvcmUuY2xlYXIoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0lu
dmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
ZGVsZXRlZFN0b3JlLm9wZW5DdXJzb3IoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAgICAgICAgICAgZXZhbEFuZEV4cGVjdEV4
Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmNyZWF0ZUluZGV4KCduYW1lJywgJ3BhdGgnKSIsICJET01F
eGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworICAg
ICAgICAgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigiZGVsZXRlZFN0b3JlLmluZGV4KCduYW1l
JykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlkU3RhdGVFcnJv
ciciKTsKKyAgICAgICAgICAgIGV2YWxBbmRFeHBlY3RFeGNlcHRpb24oImRlbGV0ZWRTdG9yZS5k
ZWxldGVJbmRleCgnbmFtZScpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICIn
SW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9u
KCJkZWxldGVkU3RvcmUuY291bnQoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIi
LCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworCisgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXgub3BlbkN1cnNvcigp
IiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3In
Iik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxldGVkSW5kZXgub3Bl
bktleUN1cnNvcigpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52YWxp
ZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJkZWxl
dGVkSW5kZXguZ2V0KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIsICInSW52
YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJk
ZWxldGVkSW5kZXguZ2V0S2V5KDApIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NUQVRFX0VSUiIs
ICInSW52YWxpZFN0YXRlRXJyb3InIik7CisgICAgICAgICAgICBldmFsQW5kRXhwZWN0RXhjZXB0
aW9uKCJkZWxldGVkSW5kZXguY291bnQoKSIsICJET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9F
UlIiLCAiJ0ludmFsaWRTdGF0ZUVycm9yJyIpOworCisgICAgICAgICAgICB0cmFucy5vbmFib3J0
ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRl
ID0gZmluaXNoSlNUZXN0OworICAgICAgICB9OworICAgIH07Cit9CisKK3Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5q
cyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJlYzNlZWNmMDAwN2VlYzQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21l
dGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7Cisg
ICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24o
IlRlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZyIp
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAg
IGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rpb24gZmlyc3RPcGVuKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbigpOiIpOworICAgIGV2YWxBbmRMb2co
InJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9y
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSByZXF1ZXN0LnJlc3Vs
dCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lv
bignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZh
bEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xc3RvcmUx
LmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwg
IjEiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNo
b3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
MS5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25kT3BlbigpOworICAgICAgICAgICAg
fTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuKCkKK3sKKyAg
ICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1
bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNp
b24oJzInKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAg
ICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9y
ZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUx
LmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMiIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwg
IjIiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxi
YWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNo
b3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
Mi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRPcGVuKCk7CisgICAgICAgICAgICB9
OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlbigpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZlcnNpb24o
JzMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxLmNy
ZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIzIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMi
KTsKKworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNh
bGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNo
b3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
My5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRoT3BlbigpOworICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUg
cmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zLmFib3J0
KCkiKTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBmb3VydGhPcGVuKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW4oKToiKTsKKyAgICBldmFsQW5k
TG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25l
cnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240ID0gcmVxdWVzdC5y
ZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZl
cnNpb24oJzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKSIpOwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3Rv
cmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOwor
ICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3Ro
IiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENh
bGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25h
cHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uNC5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZSgpOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjaGVja1N0YXRlKCkKK3sK
KyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3RhdGUoKToiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lv
biIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5s
ZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24z
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlv
bjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAg
c2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAg
ICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOwor
ICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYmFzaWNzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3Ry
YW5zYWN0aW9uLWJhc2ljcy5qcwppbmRleCA2MDYxYzdkY2Q4YjU3NGM2ZGE1NmE3MTkxNWZlNDZh
ZjUwNzk4NzQ1Li40ZGE5ZGNlMmMwODE4ZGY4MGRmOGQ5Y2M5MjM3NjUxOTc2ODA4ZjMyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy90cmFuc2FjdGlvbi1iYXNpY3MuanMKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gYWRkUmVt
b3ZlSURCT2JqZWN0cygpCiAgICAgdmFyIGluZGV4ID0gZXZhbEFuZExvZygiaW5kZXggPSBzdG9y
ZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIpOwogCiAgICAgZXZhbEFuZExvZygiZGIu
ZGVsZXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcpIik7Ci0gICAgZXZhbEFuZExvZygic3RvcmUu
ZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIik7CisgICAgZXZhbEFuZEV4cGVjdEV4Y2VwdGlvbigi
c3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4RmFpbCcpIiwgIkRPTUV4Y2VwdGlvbi5JTlZBTElEX1NU
QVRFX0VSUiIsICInSW52YWxpZFN0YXRlRXJyb3InIik7CiAKICAgICB0cmFucy5hYm9ydCgpOwog
fQpAQCAtNzQsNyArNzQsNyBAQCBmdW5jdGlvbiBhZGRSZW1vdmVBZGRJREJPYmplY3RzKCkKICAg
ICB2YXIgaW5kZXggPSBldmFsQW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdpbmRl
eEZhaWwnLCAneCcpIik7CiAKICAgICBldmFsQW5kTG9nKCJkYi5kZWxldGVPYmplY3RTdG9yZSgn
c3RvcmVGYWlsJykiKTsKLSAgICBldmFsQW5kTG9nKCJzdG9yZS5kZWxldGVJbmRleCgnaW5kZXhG
YWlsJykiKTsKKyAgICBldmFsQW5kRXhwZWN0RXhjZXB0aW9uKCJzdG9yZS5kZWxldGVJbmRleCgn
aW5kZXhGYWlsJykiLCAiRE9NRXhjZXB0aW9uLklOVkFMSURfU1RBVEVfRVJSIiwgIidJbnZhbGlk
U3RhdGVFcnJvciciKTsKIAogICAgIHZhciBzdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpIik7CiAgICAgdmFyIGluZGV4ID0g
ZXZhbEFuZExvZygiaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnaW5kZXhGYWlsJywgJ3gnKSIp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YmFzaWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLWJhc2ljcy1leHBlY3RlZC50eHQKaW5kZXggMGRmYzViZGY5ZTRlYzM0NmU0NThmOWNh
NmRkMWU0YWFhZmVkOTg5Yi4uMmQ4ZGNlNDAzMGFmOWEyYWNiNDQzNjc0ZWVkZTM4OWUzNTE4ODJi
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
YmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC0yMCw3ICsyMCwxMCBAQCBQQVNTIHRy
YW5zIGlzIG5vbi1udWxsLgogc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmVGYWls
JywgbnVsbCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2luZGV4RmFpbCcsICd4JykKIGRi
LmRlbGV0ZU9iamVjdFN0b3JlKCdzdG9yZUZhaWwnKQotc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpCitFeHBlY3RpbmcgZXhjZXB0aW9uIGZyb20gc3RvcmUuZGVsZXRlSW5kZXgoJ2luZGV4
RmFpbCcpCitQQVNTIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBjb2RlIGlzIERPTUV4Y2Vw
dGlvbi5JTlZBTElEX1NUQVRFX0VSUgorUEFTUyBlbmFtZSBpcyAnSW52YWxpZFN0YXRlRXJyb3In
CiAKIHRlc3RTZXRWZXJzaW9uQWJvcnQyKCk6CiBQQVNTIHNlbGYuZGIub2JqZWN0U3RvcmVOYW1l
cyBpcyBbXQpAQCAtMzMsNyArMzYsMTAgQEAgUEFTUyB0cmFucyBpcyBub24tbnVsbC4KIHN0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlRmFpbCcsIG51bGwpCiBpbmRleCA9IHN0b3Jl
LmNyZWF0ZUluZGV4KCdpbmRleEZhaWwnLCAneCcpCiBkYi5kZWxldGVPYmplY3RTdG9yZSgnc3Rv
cmVGYWlsJykKLXN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQorRXhwZWN0aW5nIGV4Y2Vw
dGlvbiBmcm9tIHN0b3JlLmRlbGV0ZUluZGV4KCdpbmRleEZhaWwnKQorUEFTUyBFeGNlcHRpb24g
d2FzIHRocm93bi4KK1BBU1MgY29kZSBpcyBET01FeGNlcHRpb24uSU5WQUxJRF9TVEFURV9FUlIK
K1BBU1MgZW5hbWUgaXMgJ0ludmFsaWRTdGF0ZUVycm9yJwogc3RvcmUgPSBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmVGYWlsJywgbnVsbCkKIGluZGV4ID0gc3RvcmUuY3JlYXRlSW5kZXgoJ2lu
ZGV4RmFpbCcsICd4JykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147921</attachid>
            <date>2012-06-15 16:20:06 -0700</date>
            <delta_ts>2012-06-19 17:01:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120615162006.patch</filename>
            <type>text/plain</type>
            <size>60709</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBmNTViNDc5MzVmYzkw
Y2QxZmYyY2M1YTEyOWI3MWQ1OTM0MmRhZC4uODRkN2EwZTY1MDkzMDVhMmRiYTA5Yzg1ODBiN2Zh
MTVjZDY4MDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg3IEBACiAyMDEyLTA2LTE1ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
Ojp2ZXJzaW9uKToKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjptZXRhZGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKElEQkluZGV4
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRh
KToKKyAgICAgICAgKElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVNZXRhZGF0YTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAgIChJ
REJPYmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4TWV0YWRh
dGE6OklEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAoSURCSW5kZXhNZXRhZGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnJlc2V0TWV0YWRhdGEpOgorICAgICAgICAoSURC
T2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmVEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
bkFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgor
ICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKworMjAx
Mi0wNi0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIElu
ZGV4ZWREQjogUmFpc2UgZXhjZXB0aW9ucyB3aGVuIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiBkZWxl
dGVkIG9iamVjdHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5MjQzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTA4NzQ3MDE0ZWU5ZjVh
NzQwMWU1ZjFmMmFmNTY5NWM1NWQ2ZjVlNC4uM2RmODQzNDU1OGIwZjY1NzI0YThmM2JlYmYyYjBj
YmE0Y2ViYjU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAor
MjAxMi0wNi0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyBy
b3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjptZXRhZGF0YSk6CisgICAgICAgICogcHVibGlj
L1dlYklEQktleVBhdGguaDoKKyAgICAgICAgKFdlYklEQktleVBhdGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJLZXlQYXRoOjpXZWJJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCS2V5UGF0aDo6fldlYklEQktleVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQ
YXRoOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRhZGF0YS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmguCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJREJNZXRh
ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6
CisgICAgICAgIChPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRh
OjpPYmplY3RTdG9yZTo6T2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5kZXgpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJNZXRhZGF0YTo6SW5kZXg6OkluZGV4KToKKyAgICAgICAgKiBzcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJLZXlQYXRo
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5UGF0aDo6YXNzaWduKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleVBhdGg6OnJlc2V0KToKKyAgICAg
ICAgKiBzcmMvV2ViSURCTWV0YWRhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKToK
KwogMjAxMi0wNi0xNSAgQmlsbCBCdWRnZSAgPGJidWRnZUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQXNzb2NpYXRlZFVSTExvYWRlciBzaG91bGQgYWxsb3cgdHJ1c3RlZCBjbGllbnRzIHRvIHJl
YWQgYWxsIGhlYWRlcnMsIG5vdCBqdXN0IGV4cG9zZWQgb25lcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyMDA4ZWQ4YjRmY2Jj
YmI1NzMzNjRkYTk3ZWE4MGQwOWJkZGIxODNhLi4wYTQ5NDAwYmI4NjU1ZWFlOTA0ZmNlNjlkOWVk
N2I0MDg2YmI3ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCkBAIC02NCw2ICs2NCw3IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
CiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2Fu
IGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgbV9kYXRh
YmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKHRoaXMpOwor
ICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKIElEQkRhdGFiYXNl
Ojp+SURCRGF0YWJhc2UoKQpAQCAtODEsNiArODIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp0cmFu
c2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIGlmICh0cmFu
c2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0g
dHJhbnNhY3Rpb247CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7
CiAgICAgfQogfQogCkBAIC05MywxMiArOTUsMjIgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNh
Y3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgaWYgKHRyYW5z
YWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbiA9IDA7CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRh
KCk7CiAgICAgfQogCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5nICYmIG1fdHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSkKICAgICAgICAgY2xvc2VDb25uZWN0aW9uKCk7CiB9CiAKK1Bhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAoreworICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6
Y3JlYXRlKCk7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAh
PSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgb2JqZWN0U3Rv
cmVOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgb2JqZWN0U3RvcmVOYW1lcy0+c29ydCgp
OworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKK30KKwogUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewpAQCAtMTM2LDcgKzE0
OCwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3Rv
cmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZXRhZGF0YSwgb2JqZWN0U3Rv
cmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOwor
ICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChuYW1lLCBtZXRhZGF0YSk7CisKICAgICBt
X3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVj
dFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTQ5LDgg
KzE2NCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIG1fYmFja2VuZC0+ZGVs
ZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQo
KSwgZWMpOwotICAgIGlmICghZWMpCisgICAgaWYgKCFlYykgewogICAgICAgICBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgICAgICBtX21l
dGFkYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRy
PElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmgKaW5kZXggYWRhZDMyZDg2YWM2NDc4NWYwZGRiNjE5MDdmZWFjY2M5YzBkOTE0Ni4uMjAw
NTVhMjgyYjI1NTIwNWI0ZGRjODk4NmZmZTgwNzMxNjU0YWEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRl
ICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTcsOSAr
NTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0
aW9uKik7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBTdHJpbmcgdmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigpOyB9Ci0gICAgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5v
YmplY3RTdG9yZU5hbWVzKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtX21ldGFkYXRhLnZlcnNpb247IH0KKyAgICBQYXNzUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBUcnkgdG8g
bW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIERp
Y3Rpb25hcnkoKSwgZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsK
IAogICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQog
ICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJl
dHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVh
bCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpAQCAtMTA1LDYgKzEwNyw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsb3NlQ29ubmVjdGlvbigpOwogCisgICAgSURCRGF0
YWJhc2VNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uOwogICAgIEhhc2hTZXQ8SURCVHJhbnNhY3Rpb24qPiBtX3RyYW5z
YWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTJmMjkwMjVhYjNhODk1NjJjNWUx
MTk0ZjM5ODAwN2RjZDY3NjBmYS4uZDdkNWVlM2ZlYTFjYWIyZmNlM2E0MDI3ZTkwZWRjYTY1ZDli
ZTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMyw2ICsxMzMsMTQgQEAgUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmJhY2tpbmdTdG9y
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlOwogfQogCitJREJEYXRhYmFzZU1l
dGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJ
REJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uKTsKKyAgICBmb3Ig
KE9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2lu
KCk7IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQorICAgICAgICBtZXRhZGF0YS5v
YmplY3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAg
cmV0dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFi
YXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxE
T01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggY2ZiY2EzYjYzNTMwNjZhNzc1YzRjMTc4MmZmMTA0MTk2
OWRkOWJhMi4uMWZlY2QzYmM0ZTUwYTI5Y2JkNmQyMWE2NmZkMGFiN2IzNDdmMjk2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuQ29u
bmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgZGVsZXRlRGF0YWJh
c2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VN
ZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
aW5kZXggNDI0ODA3NDc0YjhjY2YwYmE5ODc0NmY5MGZmNjcwMGQ0NjY3YjQzOS4uZDU4MTc3N2Y5
NTE3M2IzZDVkZTE1Y2JjMTFjMzBjMGYxNDQ2MGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFz
cyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xh
c3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOworc3RydWN0IElEQkRhdGFiYXNlTWV0
YWRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTUyLDYgKzUzLDcgQEAg
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPElEQkRhdGFiYXNlQmFja2UKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0
YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXgg
ZDZkNzYyMmJiMmE0YTliZDhlN2VhZDA4OWRmYjU1NzQ4YjFiZGVhMi4uZDY4YTQwNmM5YmJjM2E1
MGM5YzY0NWMzNmZlMWU1YzIwNDBhYTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNDIsOCArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURC
Q3Vyc29yOjpORVhUOwogCi1JREJJbmRleDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCitJREJJ
bmRleDo6SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2Jq
ZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEo
bWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fb2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9k
ZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKaW5kZXggYzdlNWY3OGNmYjU3NjE2NzZmNjA2MDljZTM2OTZlNDkwODRhOGZjMi4uY2I2ODhj
NjE5YWU0ZTc1MWYwMmFjNGQwM2NjZGYyNmNhZDEzNDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2lu
Y2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRl
ICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MiwxOCArNDQs
MTggQEAgY2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNzIElEQkluZGV4IDogcHVibGljIFJl
ZkNvdW50ZWQ8SURCSW5kZXg+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJ
bmRleD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
LCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4KGJh
Y2tlbmQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IElEQkluZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rp
b24pKTsKICAgICB9CiAgICAgfklEQkluZGV4KCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElE
TAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0K
LSAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVj
dFN0b3JlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQotICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlFbnRyeSgpOyB9CisgICAgY29uc3QgU3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0
b3JlOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBt
X21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4g
bV9tZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0
aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8
SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04Myw4ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAg
SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RT
dG9yZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRh
ZGF0YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiwgSURCT2JqZWN0U3Rv
cmUqLCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5kZXhNZXRhZGF0YSBtX21ldGFkYXRh
OwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA5ODYxNGRmYjM1MGQ0
MmIyNjhiYzQyZThiNjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZhYWYyZjUyNDIzNWY4NTA3YTZlZjQ4
ZTViMmVjN2Q5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVk
ZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKQEAg
LTY3LDYgKzY4LDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBs
KCkKIHsKIH0KIAorSURCSW5kZXhNZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0
YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0YWRhdGEobV9uYW1lLCBtX2tleVBh
dGgsIG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZElt
cGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFu
Z2UsIHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
ckludGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3ZDE3ZTQwMWJlMGI4YTNkMzU3ZDBk
ZGQwNzNmMDJmZWQyNi4uNjQxMGNiYWMzZmM2NDkwYTllNDVmZDg3YmJkMGM5MTYxMzNlMWZjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
QmFja2VuZEltcGwuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZGluZ0tl
eUFsbG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5
ID0gMCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KKyAg
ICB2aXJ0dWFsIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRo
IGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVl
KCkgeyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYmVmNzNiY2U1ZDAzMWYxYWI0N2VkMzFi
YThhMjNiZDgxNjY4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJN
ZXRhZGF0YV9oCisjZGVmaW5lIElEQk1ldGFkYXRhX2gKKworI2luY2x1ZGUgIklEQktleVBhdGgu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElEQk9iamVjdFN0b3Jl
TWV0YWRhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKKworc3RydWN0IElEQkRhdGFiYXNl
TWV0YWRhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJEYXRhYmFz
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAg
ICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pIHsgfQorICAgIFN0
cmluZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0U3RvcmVNYXA7CisgICAgT2JqZWN0
U3RvcmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgeworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQ
YXRoKGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KSB7IH0K
KyAgICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCBhdXRv
SW5jcmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCSW5kZXhNZXRhZGF0
YT4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsKK307CisKK3N0cnVjdCBJREJJbmRl
eE1ldGFkYXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkgeyB9CisgICAgSURCSW5kZXhNZXRh
ZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAs
IGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUodW5pcXVlKQorICAgICAgICAsIG11
bHRpRW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0
aCBrZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJvb2wgbXVsdGlFbnRyeTsKK307CisK
K30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURC
VHJhY2luZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKaW5kZXggMmFmY2IzMGUxNDg1MDJkOTFiNzg3NmNkYzYxMjJiZjJmNTI1
NDhkOC4uNzlhNzk4MDU1MGJkNjJlNzlmOWQzYWQ4ZmY2ZmI4OTk0ZmQ4YjU3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUg
IklEQkFueS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJh
c2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5o
IgpAQCAtNDQsOCArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURC
T2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQotICAgIDogbV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQorSURCT2JqZWN0U3RvcmU6OklEQk9i
amVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAg
LCBtX3ByZXZpb3VzTWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoaWRiT2JqZWN0
U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9kZWxldGVk
KGZhbHNlKQogewpAQCAtNTUsMzQgKzU4LDE0IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RT
dG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqCiAg
ICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RTdG9y
ZTo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6bmFtZSIp
OwotICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKLX0KLQotUGFzc1JlZlB0cjxJREJBbnk+
IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9i
amVjdFN0b3JlOjprZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwot
fQotCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVz
KCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7
Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+aW5kZXhOYW1lcygpOwotfQotCi1JREJUcmFuc2FjdGlv
biogSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbiIpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9u
LmdldCgpOwotfQotCi1ib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QK
LXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0gICAg
cmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVudCgpOworICAgIFJlZlB0cjxET01TdHJpbmdM
aXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJP
YmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFk
YXRhLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyArK2l0
KQorICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5hbWVz
LT5zb3J0KCk7CisgICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMzAzLDggKzI4NiwxMCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4
ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5z
YWN0aW9uLmdldCgpKTsKKyAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBh
dGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElE
QkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1f
dHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKKyAg
ICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKIAogICAgIHJldHVybiBp
bmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzE1LDEwIEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJREJJ
bmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRo
aXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6Oklu
ZGV4TWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmZpbmQobmFt
ZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpKTsKKworICAg
IFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1kaXQtPnNlY29uZCwg
aW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7
CiB9CkBAIC0zNDksNiArMzM3LDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGl0LT5z
ZWNvbmQtPm1hcmtEZWxldGVkKCk7CiAgICAgICAgICAgICBtX2luZGV4TWFwLnJlbW92ZShuYW1l
KTsKICAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmluZGV4ZXMuY29udGFp
bnMobmFtZSkpOworICAgICAgICBtX21ldGFkYXRhLmluZGV4ZXMucmVtb3ZlKG5hbWUpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgKaW5kZXggODM0YmQ1MGZjMDUzMWRjYTdlZGQ3NWEwYWMyZTY4YjRhMmY4MjEzYi4u
Mjc2M2FkMjdkNWFmYTE1ZjNkNWY3OTczMzg2NTdlOGI4NTk0NzM2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCkBAIC00OSwxOCArNTAsMTggQEAgY2xhc3Mg
SURCQW55OwogCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9i
amVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRi
T2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZSwgdHJhbnNhY3Rp
b24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShtZXRhZGF0
YSwgYmFja2VuZCwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAgfklEQk9iamVjdFN0b3JlKCkg
eyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVjdFN0b3JlIElETAotICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdDsK
KyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7
IH0KKyAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWRhdGEua2V5UGF0aDsgfQogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1l
cygpIGNvbnN0OwotICAgIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbigpIGNvbnN0OwotICAg
IGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbjsgfQorICAgIGJv
b2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXV0b0luY3JlbWVu
dDsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9
CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CkBAIC05
NiwxMSArOTcsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxl
dGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOworICAgIHZvaWQg
cmVzZXRNZXRhZGF0YSgpIHsgbV9tZXRhZGF0YSA9IG1fcHJldmlvdXNNZXRhZGF0YTsgfQogCiBw
cml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJPYmplY3RTdG9yZShjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgcmVtb3ZlVHJhbnNhY3Rp
b25Gcm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRh
ZGF0YTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fcHJldmlvdXNNZXRhZGF0YTsKICAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogICAgIGJvb2wgbV9kZWxldGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBkYzQxMzQzOWE3ZTVmY2VmY2Q3MWJh
MTFlOWVhMzZiN2ZiN2MwY2RmLi5kZDMzYzMxNzg0YTZkNzBlNjE4ODRhNGE2ZWRkM2M5M2Y0Mjgz
NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNzIsNiArNzIsMTQgQEAgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXAKIHsKIH0KIAorSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV9hdXRvSW5jcmVtZW50
KTsKKyAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdp
bigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1ldGFkYXRhLmluZGV4
ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1l
dGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmgKaW5kZXggZDM3MjI1M2EzMzQzZjBiZGRkZGMxMTczMGIxODA2ZDE2NDI5NDVjNi4uYzNk
MWM1MzMxZDk0ZjQ1ZGY3MTM4Y2YwNDk4OGE0MDFjZjU2N2M5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDAs
NiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogY2xhc3MgSURCSW5kZXhC
YWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsK
IAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBtX2lkID0gaWQ7IH0KIAorICAgIHZp
cnR1YWwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIElE
QktleVBhdGgga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggNjQxZTU3NjQxNmQ2NzE2ZjJkZjJiZTlmMTI4MjU2YzA1OTU3MjZiZi4uMmNkZDc2NzY3ZTRl
NWU3M2U1Yzk3NTJiYjkwNThmOWJjNjVlODNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTU4LDE1ICsxNTgsMjEg
QEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3Jl
KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0
b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsKKyAgICBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSA9IG1fZGF0YWJhc2UtPm1ldGFkYXRhKCk7CisgICAgSURC
RGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQgPSBt
ZXRhZGF0YS5vYmplY3RTdG9yZXMuZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAhPSBtZXRh
ZGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworCisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWRpdC0+c2Vjb25kLCBvYmplY3RT
dG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RT
dG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJU
cmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5p
c2hlZCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IHBycE9iamVj
dFN0b3JlOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5hbWUsIG9iamVjdFN0b3JlKTsKKyAg
ICBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAt
MTc3LDYgKzE4Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0
U3RvcmUgPSBpdC0+c2Vjb25kOwogICAgICAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1l
KTsKICAgICAgICAgb2JqZWN0U3RvcmUtPm1hcmtEZWxldGVkKCk7CisgICAgICAgIG1fb2JqZWN0
U3RvcmVDbGVhbnVwU2V0LmFkZChvYmplY3RTdG9yZSk7CiAgICAgfQogfQogCkBAIC0yMzksNiAr
MjQ2LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQogICAgICAgICByZXF1ZXN0
LT5hYm9ydCgpOwogICAgIH0KIAorICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246OlZF
UlNJT05fQ0hBTkdFKSB7CisgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVTZXQ6Oml0ZXJhdG9y
IGl0ID0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9y
ZUNsZWFudXBTZXQuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+cmVzZXRNZXRhZGF0
YSgpOworICAgIH0KICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAgICAgbV9kYXRhYmFzZS0+dHJh
bnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNGY5NWY1YjE5ZDA5NDk4YjhjMDNhYzYy
ZTgxNmU5NzgzODgyMzJkMi4uMmRiZDBjZjFhZGM4NWUzZTkyZjMyZWU4ODQ5NDI4MjY4NTUzMTVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUg
IklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgpAQCAtMTQzLDYgKzE0NCw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlTWFwOwog
ICAgIElEQk9iamVjdFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVNYXA7CiAKKyAgICB0eXBlZGVmIEhh
c2hTZXQ8UmVmUHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlU2V0OworICAgIElE
Qk9iamVjdFN0b3JlU2V0IG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0OworCiAgICAgSGFzaFNldDxJ
REJDdXJzb3IqPiBtX29wZW5DdXJzb3JzOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRU
YXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDhkOTRlMTE0MzEwYzM5ODFhOWUzMTlhMjU0
ODQzN2E4YzBiNzQ5ZjMuLjkzNzY0NGI3MTdjYWFkMjY4ZWRhNDI1OGI2NDc2MmYyMGQ5YzBmOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0ODQsNiArMTQ4NCw3IEBACiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oJywKICAgICAgICAgICAgICdNb2R1bGVz
L2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9iamVjdFN0b3JlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApp
bmRleCAyNzZjNWE0NWVmYWUwMDhiMjFmNzRkYjQxYTM0ZGY0MDM2Njg3N2Y3Li42MjRmNWU0MGY1
N2FmMWUzYzY5MTljNDU2YTZlMmQ0YzJkMjM2YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCkBAIC0xODEsNiArMTgxLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktl
eS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQktleVBhdGguaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJJREJLZXlSYW5nZS5oJywKKyAgICAgICAgICAgICAgICAncHVi
bGljL1dlYklEQk1ldGFkYXRhLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViSURCT2Jq
ZWN0U3RvcmUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgn
LApAQCAtNTYwLDYgKzU2MSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXkuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleVBhdGguY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYklEQktleVJhbmdlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJ
REJNZXRhZGF0YS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IGIzOTg1
MzQxNjU1NDNhMTk3YTYxNzk3ZDU0NzQ5ZGE4NWUzYTM1NmUuLmEwMDFjMmU5MjIxOGU4MzNlZjcz
OWViMmRjNzkzMGQ0ZmNlYThkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCRGF0YWJhc2UuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiV2ViRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJX
ZWJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ0LDYgKzQ1LDExIEBAIGNsYXNzIFdlYklEQkRhdGFiYXNlIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZSgpIHsgfQogCisgICAgdmlydHVh
bCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXZWJJREJNZXRhZGF0YSgpOwor
ICAgIH0KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQktleVBhdGguaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQktleVBhdGguaAppbmRleCBiZWIxZmEyMmQ4ZDA5MWMyMGVkMWU1NWNjMmIz
MDc3MTBiOWRkZjY0Li45YmM4MWVjNjUzODI1NGRjYTRiOWE0YmRiMDQ0MWNiM2QyYmZmNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJLZXlQYXRoLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCS2V5UGF0aC5oCkBAIC0z
MSwxMSArMzEsNiBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCi1uYW1lc3BhY2UgV1RGIHsKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gY2xhc3MgVmVjdG9yOwotY2xhc3MgU3RyaW5n
OwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQktleVBhdGg7IH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC00NSw4ICs0MCwxNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29uc3QgV2ViU3RyaW5nJik7CiAgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgV2ViSURCS2V5UGF0aCBjcmVhdGUoY29uc3QgV2ViVmVjdG9yPFdl
YlN0cmluZz4mKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJREJLZXlQYXRoIGNyZWF0
ZU51bGwoKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYklEQktleVBhdGgoY29uc3QgV2ViSURCS2V5
UGF0aCYpOwotICAgIFdFQktJVF9FWFBPUlQgfldlYklEQktleVBhdGgoKTsKKworICAgIFdlYklE
QktleVBhdGgoY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCkgeyBhc3NpZ24oa2V5UGF0aCk7
IH0KKyAgICB2aXJ0dWFsIH5XZWJJREJLZXlQYXRoKCkgeyByZXNldCgpOyB9CisgICAgV2ViSURC
S2V5UGF0aCYgb3BlcmF0b3I9KGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCisgICAgewor
ICAgICAgICBhc3NpZ24oa2V5UGF0aCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisK
KyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduKGNvbnN0IFdlYklEQktleVBhdGgmKTsKIAogICAgIGVudW0gVHlwZSB7CiAgICAgICAg
IE51bGxUeXBlID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJN
ZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFjMzNkMWIwODBkNzU2ODJlZGNlZDJmZGZhYmVhNGIxZWU0
ZDg2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklEQk1l
dGFkYXRhX2gKKyNkZWZpbmUgV2ViSURCTWV0YWRhdGFfaAorCisjaW5jbHVkZSAiV2ViSURCS2V5
UGF0aC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJJREJNZXRhZGF0YSB7CisgICAgc3RydWN0IEluZGV4
OworICAgIHN0cnVjdCBPYmplY3RTdG9yZTsKKworICAgIFdlYlN0cmluZyBuYW1lOworICAgIFdl
YlN0cmluZyB2ZXJzaW9uOworICAgIFdlYlZlY3RvcjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmVz
OworICAgIFdlYklEQk1ldGFkYXRhKCkgeyB9CisKKyAgICBzdHJ1Y3QgT2JqZWN0U3RvcmUgewor
ICAgICAgICBXZWJTdHJpbmcgbmFtZTsKKyAgICAgICAgV2ViSURCS2V5UGF0aCBrZXlQYXRoOwor
ICAgICAgICBib29sIGF1dG9JbmNyZW1lbnQ7CisgICAgICAgIFdlYlZlY3RvcjxJbmRleD4gaW5k
ZXhlczsKKyAgICAgICAgT2JqZWN0U3RvcmUoKQorICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklE
QktleVBhdGg6OmNyZWF0ZU51bGwoKSkKKyAgICAgICAgICAgICwgYXV0b0luY3JlbWVudChmYWxz
ZSkgeyB9CisgICAgfTsKKworICAgIHN0cnVjdCBJbmRleCB7CisgICAgICAgIFdlYlN0cmluZyBu
YW1lOworICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CisgICAgICAgIGJvb2wgdW5pcXVl
OworICAgICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIEluZGV4KCkKKyAgICAgICAgICAg
IDoga2V5UGF0aChXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCkpCisgICAgICAgICAgICAsIHVu
aXF1ZShmYWxzZSkKKyAgICAgICAgICAgICwgbXVsdGlFbnRyeShmYWxzZSkgeyB9CisgICAgfTsK
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYklEQk1ldGFkYXRhKGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmKTsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpJREJE
YXRhYmFzZU1ldGFkYXRhKCkgY29uc3Q7CisjZW5kaWYKK307CisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJJREJNZXRhZGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKaW5kZXggNTg2
NjFlYmFiODNmNWJjZjhhNGNhODlhYmU3ZGI4MTA4NGM5MDVmNC4uMTA3ZWM2M2IzYjc4ODNlMDll
ZWEzMzdjNTkxNWMzNWFkNDBhMWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZ0xpc3QuaCIK
QEAgLTYwLDYgKzYxLDExIEBAIElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp+SURCRGF0YWJhc2VC
YWNrZW5kUHJveHkoKQogewogfQogCitJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFj
a2VuZFByb3h5OjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJh
c2UtPm1ldGFkYXRhKCk7Cit9CisKIFN0cmluZyBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm5hbWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
CmluZGV4IGU4MTdlZGYxOTk1ZGEyYTg2N2U5NTU5MDZkOTg5NzBlYjM0NGY5MmIuLmIwNTU1MmNj
YmYxMTcyMDVjY2U1NzRjZTlhYWQyODVmOWViYmVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDIsNiArNDIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4pOwogICAg
IHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZFByb3h5KCk7CiAKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBvYmplY3RTdG9y
ZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcAppbmRleCAyNjYyZjgwMWY3NWYyMGUzMTUxZTRlODcwOGI1ZWZhNzM2
Y2M3YWU2Li4zOTgwM2UxNDU5M2VkNzM0MDk2YWE2Yzc4MzI4NTljYzJiNmUyNWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAg
LTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3Mu
aCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIldlYklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKQEAgLTUxLDYgKzUzLDExIEBAIFdlYklEQkRh
dGFiYXNlSW1wbDo6fldlYklEQkRhdGFiYXNlSW1wbCgpCiB7CiB9CiAKK1dlYklEQk1ldGFkYXRh
IFdlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rh
dGFiYXNlQmFja2VuZC0+bWV0YWRhdGEoKTsKK30KKwogV2ViU3RyaW5nIFdlYklEQkRhdGFiYXNl
SW1wbDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5uYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CmluZGV4IDE5MGQ3ZTJkYzMyOWIwNmZiM2FlNmY4OTg0YjMxYjJkMjUyYmFiODIuLjVlOTg5ZTAw
ZWVkYmEyMDFiZGVkMGE2ZGI3OTc5NTc1YmU5NTA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OwogY2xhc3Mg
V2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFzcyBXZWJJREJEYXRhYmFzZU1ldGFkYXRhOwog
Y2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJREJUcmFuc2FjdGlvbjsKIApAQCAt
NDksNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgV2ViSURCRGF0YWJhc2VJbXBsKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFs
IH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAorICAgIHZpcnR1YWwgV2ViSURCTWV0YWRhdGEgbWV0
YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViRE9NU3Ry
aW5nTGlzdCBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleVBhdGguY3BwCmluZGV4IDE3YzE1OGYzNGU0ODhkOTBlMzE3M2NkYzM4
NDYxZDFhZjJhM2I3OTcuLmIwOTRlNzdiZGI5Mzg4ZTUzYmRhZjgzMzBlYjUzOGVlM2Q1MDQ4ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCkBAIC0z
NywxMSArMzcsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVdlYklEQktleVBhdGg6On5XZWJJREJLZXlQYXRoKCkKLXsKLSAgICBtX3ByaXZhdGUu
cmVzZXQoMCk7Ci19Ci0KIFdlYklEQktleVBhdGggV2ViSURCS2V5UGF0aDo6Y3JlYXRlKGNvbnN0
IFdlYlN0cmluZyYga2V5UGF0aCkKIHsKICAgICByZXR1cm4gV2ViSURCS2V5UGF0aChJREJLZXlQ
YXRoKGtleVBhdGgpKTsKQEAgLTYwLDYgKzU1LDE3IEBAIFdlYklEQktleVBhdGggV2ViSURCS2V5
UGF0aDo6Y3JlYXRlTnVsbCgpCiAgICAgcmV0dXJuIFdlYklEQktleVBhdGgoSURCS2V5UGF0aCgp
KTsKIH0KIAordm9pZCBXZWJJREJLZXlQYXRoOjphc3NpZ24oY29uc3QgV2ViSURCS2V5UGF0aCYg
a2V5UGF0aCkKK3sKKyAgICBBU1NFUlQoa2V5UGF0aC5tX3ByaXZhdGUuZ2V0KCkpOworICAgIG1f
cHJpdmF0ZS5yZXNldChuZXcgSURCS2V5UGF0aChrZXlQYXRoKSk7Cit9CisKK3ZvaWQgV2ViSURC
S2V5UGF0aDo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgwKTsKK30KKwogYm9vbCBX
ZWJJREJLZXlQYXRoOjppc1ZhbGlkKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9wcml2YXRlLmdl
dCgpKTsKQEAgLTg3LDEyICs5Myw2IEBAIFdlYlN0cmluZyBXZWJJREJLZXlQYXRoOjpzdHJpbmco
KSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnN0cmluZygpOwogfQogCi1XZWJJREJLZXlQ
YXRoOjpXZWJJREJLZXlQYXRoKGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgpCi0gICAgOiBt
X3ByaXZhdGUobmV3IElEQktleVBhdGgoa2V5UGF0aCkpCi17Ci0gICAgQVNTRVJUKG1fcHJpdmF0
ZS5nZXQoKSk7Ci19Ci0KIFdlYklEQktleVBhdGg6OldlYklEQktleVBhdGgoY29uc3QgV2ViQ29y
ZTo6SURCS2V5UGF0aCYgdmFsdWUpCiAgICAgOiBtX3ByaXZhdGUobmV3IElEQktleVBhdGgodmFs
dWUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0
YWRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjczNTA2M2VmMGZmMzNiYjhhNmM2ZDJlZWI4MDY1NzBiMDFmZDU5Y2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0
YS5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJJREJNZXRhZGF0YS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
KyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgorI2luY2x1ZGUgIldlYklEQktleVBhdGguaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0
b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAgbmFtZSA9IG1ldGFkYXRhLm5hbWU7CisgICAg
dmVyc2lvbiA9IG1ldGFkYXRhLnZlcnNpb247CisgICAgb2JqZWN0U3RvcmVzID0gV2ViVmVjdG9y
PE9iamVjdFN0b3JlPihzdGF0aWNfY2FzdDxzaXplX3Q+KG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5z
aXplKCkpKTsKKworICAgIHNpemVfdCBpID0gMDsKKyAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBzdG9yZUl0ZXJhdG9yID0gbWV0YWRh
dGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7IHN0b3JlSXRlcmF0b3IgIT0gbWV0YWRhdGEub2JqZWN0
U3RvcmVzLmVuZCgpOyArK3N0b3JlSXRlcmF0b3IpIHsKKyAgICAgICAgY29uc3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUgPSBzdG9yZUl0ZXJhdG9yLT5zZWNvbmQ7CisgICAg
ICAgIE9iamVjdFN0b3JlIHdlYk9iamVjdFN0b3JlOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5u
YW1lID0gb2JqZWN0U3RvcmUubmFtZTsKKyAgICAgICAgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCA9
IG9iamVjdFN0b3JlLmtleVBhdGg7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1l
bnQgPSBvYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50OworICAgICAgICB3ZWJPYmplY3RTdG9yZS5p
bmRleGVzID0gV2ViVmVjdG9yPEluZGV4PihzdGF0aWNfY2FzdDxzaXplX3Q+KG9iamVjdFN0b3Jl
LmluZGV4ZXMuc2l6ZSgpKSk7CisKKyAgICAgICAgc2l6ZV90IGogPSAwOworICAgICAgICBmb3Ig
KElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpbmRleEl0
ZXJhdG9yID0gb2JqZWN0U3RvcmUuaW5kZXhlcy5iZWdpbigpOyBpbmRleEl0ZXJhdG9yICE9IG9i
amVjdFN0b3JlLmluZGV4ZXMuZW5kKCk7ICsraW5kZXhJdGVyYXRvcikgeworICAgICAgICAgICAg
Y29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXggPSBpbmRleEl0ZXJhdG9yLT5zZWNvbmQ7Cisg
ICAgICAgICAgICBJbmRleCB3ZWJJbmRleDsKKyAgICAgICAgICAgIHdlYkluZGV4Lm5hbWUgPSBp
bmRleC5uYW1lOworICAgICAgICAgICAgd2ViSW5kZXgua2V5UGF0aCA9IGluZGV4LmtleVBhdGg7
CisgICAgICAgICAgICB3ZWJJbmRleC51bmlxdWUgPSBpbmRleC51bmlxdWU7CisgICAgICAgICAg
ICB3ZWJJbmRleC5tdWx0aUVudHJ5ID0gaW5kZXgubXVsdGlFbnRyeTsKKyAgICAgICAgICAgIHdl
Yk9iamVjdFN0b3JlLmluZGV4ZXNbaisrXSA9IHdlYkluZGV4OworICAgICAgICB9CisgICAgICAg
IG9iamVjdFN0b3Jlc1tpKytdID0gd2ViT2JqZWN0U3RvcmU7CisgICAgfQorfQorCitXZWJJREJN
ZXRhZGF0YTo6b3BlcmF0b3IgSURCRGF0YWJhc2VNZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURC
RGF0YWJhc2VNZXRhZGF0YSBkYihuYW1lLCB2ZXJzaW9uKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9iamVjdFN0b3Jlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBPYmplY3RT
dG9yZSB3ZWJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3Jlc1tpXTsKKyAgICAgICAgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSh3ZWJPYmplY3RTdG9yZS5uYW1lLCB3ZWJPYmplY3RT
dG9yZS5rZXlQYXRoLCB3ZWJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50KTsKKworICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IHdlYk9iamVjdFN0b3JlLmluZGV4ZXMuc2l6ZSgpOyArK2op
IHsKKyAgICAgICAgICAgIGNvbnN0IEluZGV4IHdlYkluZGV4ID0gd2ViT2JqZWN0U3RvcmUuaW5k
ZXhlc1tqXTsKKyAgICAgICAgICAgIElEQkluZGV4TWV0YWRhdGEgaW5kZXgod2ViSW5kZXgubmFt
ZSwgd2ViSW5kZXgua2V5UGF0aCwgd2ViSW5kZXgudW5pcXVlLCB3ZWJJbmRleC5tdWx0aUVudHJ5
KTsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmluZGV4ZXMuc2V0KGluZGV4Lm5hbWUsIGluZGV4
KTsKKyAgICAgICAgfQorICAgICAgICBkYi5vYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlLm5h
bWUsIG9iamVjdFN0b3JlKTsKKyAgICB9CisgICAgcmV0dXJuIGRiOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDFkZGEwM2RmNzFkZmFkNWZhODEwZTBhMGQ0MzVkODVkNjlmZTRlNTIuLmY3ZmQ4NWY1ZDEwMWIw
MDU3MWNkYzBhYzk1ZGRkMDk3NzM4MTgzZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNCBAQAogMjAxMi0w
Ni0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEluZGV4
ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10
cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAoZmlyc3RPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNz
LnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoZmlyc3RPcGVuLnJlcXVlc3Qub25zdWNjZXNz
LnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vz
cyk6CisgICAgICAgIChmaXJzdE9wZW4pOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9u
c3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNl
Y29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
c2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChzZWNvbmRPcGVuKToKKyAg
ICAgICAgKHRoaXJkT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFu
cy5vbmFib3J0KToKKyAgICAgICAgKHRoaXJkT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAg
ICAgICAodGhpcmRPcGVuKToKKyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3Mu
cmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChmb3VydGhPcGVu
LnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9w
ZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZm91cnRoT3Blbik6CisgICAgICAgIChj
aGVja1N0YXRlKToKKworMjAxMi0wNi0xNSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIEluZGV4ZWREQjogUmFpc2UgZXhjZXB0aW9ucyB3aGVuIG1ldGhvZHMg
YXJlIGNhbGxlZCBvbiBkZWxldGVkIG9iamVjdHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MjQzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM2ZDQ3NWFh
NDI3YmFjZmFmZjEzNDdhMzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
ODggQEAKK1Rlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90
dGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5p
bmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwg
c2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNlbGYubG9j
YXRpb24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQorCitmaXJzdE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25u
ZWN0aW9uMSA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lv
bignMScpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0b3JlMSA9IGNvbm5l
Y3Rpb24xLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjFzdG9yZTEuY3Jl
YXRlSW5kZXgoJ2luZGV4MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAi
MSIKK1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBj
b25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24xLmNsb3Nl
KCkKKworc2Vjb25kT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nv
bm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMi5zZXRWZXJz
aW9uKCcyJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24yLmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZTInKQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUxJykKK2Nvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcp
CitQQVNTIGNvbm5lY3Rpb24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24yLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1l
cy5sZW5ndGggaXMgMgorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90
dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3BlbigpOgorcmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQK
K3JlcXVlc3QgPSBjb25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5zID0gcmVxdWVzdC5y
ZXN1bHQKK2Nvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKQorY29ubmVjdGlv
bjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24zc3RvcmUx
LmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24zLnZlcnNpb24g
aXMgIjMiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BB
U1MgY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidz
IHByb3BlcnRpZXMgc2hvdWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFucy5hYm9ydCgpCitD
b25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nv
bm5lY3Rpb24zLmNsb3NlKCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSkKK2Nvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25u
ZWN0aW9uNC5zZXRWZXJzaW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rp
b240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdp
bmRleDQnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNv
bm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRz
dG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hv
dWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9zZSgpCisKK2NoZWNr
U3RhdGUoKToKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVjdGlv
bjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3JlMS5p
bmRleE5hbWVzLmxlbmd0aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBpcyAiMiIK
K1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25u
ZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjMu
dmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgg
aXMgMgorUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BB
U1MgY29ubmVjdGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCBpcyAzCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0
YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NDJjZmU1OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUyZTNmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9t
ZXRhZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRh
ZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJlYzNlZWNmMDAwN2Vl
YzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL21ldGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3Jp
cHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVz
Y3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBz
aG90dGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhl
cygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUiKTsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFt
ZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rpb24gZmlyc3RPcGVu
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbigpOiIpOworICAgIGV2
YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVz
dC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSByZXF1
ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjEu
c2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVP
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rp
b24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMu
bGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQg
YmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uMS5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25kT3BlbigpOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVu
KCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4oKToiKTsKKyAgICBl
dmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVl
c3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNj
ZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yID0gcmVx
dWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24y
LnNldFZlcnNpb24oJzInKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTIn
KSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rp
b24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAi
MiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMu
bGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRB
Ym9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQg
YmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uMi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRPcGVuKCk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3Blbigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gcmVxdWVz
dC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNl
dFZlcnNpb24oJzMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKSIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmpl
Y3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24z
c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIzIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIp
OworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVu
Z3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRD
b21wbGV0ZUNhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQg
YmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uMy5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRoT3BlbigpOworICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBz
aG91bGQgYmUgcmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRy
YW5zLmFib3J0KCkiKTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBmb3VydGhP
cGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW4oKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240ID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rp
b240LnNldFZlcnNpb24oJzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZTQnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7CisKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFt
ZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0
ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91
bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJjb25uZWN0aW9uNC5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZSgpOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjaGVja1N0
YXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3RhdGUoKToiKTsKKwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7Cisg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIp
OworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlv
bjIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5k
ZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjMiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgi
LCAiMyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0
KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148463</attachid>
            <date>2012-06-19 17:01:42 -0700</date>
            <delta_ts>2012-06-20 16:55:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120619170141.patch</filename>
            <type>text/plain</type>
            <size>54160</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjUzNjMxOTViMTNkNWYx
Mjg4ZjE5NWNiYzQ0NjFhYzE1MDJmYTk0Yy4uZWQxMDRlYTdmNzBlYWJjMDM1MDliNWQ4YmMxZWFk
MDAwNDc5Yzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
Ojp2ZXJzaW9uKToKKyAgICAgICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjptZXRhZGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRl
eDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4OjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6a2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6dW5pcXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KToKKyAgICAgICAgKElEQkluZGV4
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKElEQkluZGV4QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRh
KToKKyAgICAgICAgKElEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVNZXRhZGF0YTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAgIChJ
REJPYmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4TWV0YWRh
dGE6OklEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAoSURCSW5kZXhNZXRhZGF0YSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
aW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnJlc2V0TWV0YWRhdGEpOgorICAgICAgICAoSURC
T2JqZWN0U3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbjo6b2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmVEZWxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpv
bkFib3J0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgor
ICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKwogMjAx
Mi0wNi0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDYyMS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggOTUxMmUyZDE1NGQ0ZWY1Zjc3OTVjMGI3Y2VmYjNkOWUwMzQ3NjgwYi4uMzQy
OTYzYTk0YjhiMzVkMzk0OWNhZDYyMmE4N2FkYWE1NjViMDkzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAogMjAxMi0wNi0xOSAgSm9zaHVhIEJlbGwgIDxqc2Jl
bGxAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEg
aW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYklEQk1ldGFkYXRhLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYklE
Qk1ldGFkYXRhKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bWV0YWRhdGEpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDoK
KyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRGF0YWJhc2VJbXBsOjpt
ZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFz
ZUltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJREJEYXRhYmFzZUltcGwp
OgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0
YWRhdGEpOgorCisyMDEyLTA2LTE5ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgSW5kZXhlZERCOiBBZGQgbmV3IHR5cGUgKGFuZCBjaHJvbWl1bSB3ZWJraXQg
QVBJKSBmb3IgbWV0YWRhdGEgc25hcHNob3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4Njc4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCAyMDA4ZWQ4YjRmY2JjYmI1NzMzNjRkYTk3
ZWE4MGQwOWJkZGIxODNhLi4wYTQ5NDAwYmI4NjU1ZWFlOTA0ZmNlNjlkOWVkN2I0MDg2YmI3ZmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCkBAIC02NCw2ICs2NCw3IEBAIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLy8gV2Ug
cGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlzIG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQu
CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKHRoaXMpOworICAgIG1fbWV0YWRh
dGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJh
c2UoKQpAQCAtODEsNiArODIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0
ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNW
ZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbik7CiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247
CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQogfQog
CkBAIC05MywxMiArOTUsMjIgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hl
ZChJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5pc1Zl
cnNpb25DaGFuZ2UoKSkgewogICAgICAgICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24gPT0gdHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9
IDA7CisgICAgICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQog
CiAgICAgaWYgKG1fY2xvc2VQZW5kaW5nICYmIG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAg
ICAgICAgY2xvc2VDb25uZWN0aW9uKCk7CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
SURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAoreworICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Cisg
ICAgZm9yIChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRh
Lm9iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBw
ZW5kKGl0LT5maXJzdCk7CisgICAgb2JqZWN0U3RvcmVOYW1lcy0+c29ydCgpOworICAgIHJldHVy
biBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbikgewpAQCAtMTM2LDcgKzE0OCwxMCBAQCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShv
YmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5n
ZXQoKSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50KTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3Jl
ID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShtZXRhZGF0YSwgb2JqZWN0U3RvcmVCYWNrZW5kLnJl
bGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fbWV0YWRh
dGEub2JqZWN0U3RvcmVzLnNldChuYW1lLCBtZXRhZGF0YSk7CisKICAgICBtX3ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAg
ICByZXR1cm4gb2JqZWN0U3RvcmUucmVsZWFzZSgpOwogfQpAQCAtMTQ5LDggKzE2NCwxMCBAQCB2
b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0KIAogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3Rv
cmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAg
IGlmICghZWMpCisgICAgaWYgKCFlYykgewogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbi0+b2JqZWN0U3RvcmVEZWxldGVkKG5hbWUpOworICAgICAgICBtX21ldGFkYXRhLm9iamVj
dFN0b3Jlcy5yZW1vdmUobmFtZSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlZlcnNpb25D
aGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFzZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXgg
YWRhZDMyZDg2YWM2NDc4NWYwZGRiNjE5MDdmZWFjY2M5YzBkOTE0Ni4uMjAwNTVhMjgyYjI1NTIw
NWI0ZGRjODk4NmZmZTgwNzMxNjU0YWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0
YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTcsOSArNTgsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKik7CiAKICAg
ICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZC0+dmVyc2lvbigpOyB9Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBv
YmplY3RTdG9yZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RTdG9yZU5h
bWVzKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFk
YXRhLm5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
X21ldGFkYXRhLnZlcnNpb247IH0KKyAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBj
b2RlIGdlbmVyYXRvciBzbyB0aGlzIGlzIHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIERpY3Rpb25hcnkoKSwg
ZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQg
cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcygpOworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEmIG1ldGFkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5x
dWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3Bh
dGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwpAQCAtMTA1LDYgKzEwNyw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsb3NlQ29ubmVjdGlvbigpOwogCisgICAgSURCRGF0YWJhc2VNZXRhZGF0
YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1f
YmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uOwogICAgIEhhc2hTZXQ8SURCVHJhbnNhY3Rpb24qPiBtX3RyYW5zYWN0aW9uczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTJmMjkwMjVhYjNhODk1NjJjNWUxMTk0ZjM5ODAwN2Rj
ZDY3NjBmYS4uZDdkNWVlM2ZlYTFjYWIyZmNlM2E0MDI3ZTkwZWRjYTY1ZDliZTM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMyw2ICsxMzMsMTQgQEAgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlOwogfQogCitJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uKTsKKyAgICBmb3IgKE9iamVjdFN0b3Jl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1f
b2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQorICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMu
c2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1ldGFk
YXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZElt
cGw6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmgKaW5kZXggY2ZiY2EzYjYzNTMwNjZhNzc1YzRjMTc4MmZmMTA0MTk2OWRkOWJhMi4uMWZl
Y2QzYmM0ZTUwYTI5Y2JkNmQyMWE2NmZkMGFiN2IzNDdmMjk2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KTsKIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRh
ZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDI0ODA3
NDc0YjhjY2YwYmE5ODc0NmY5MGZmNjcwMGQ0NjY3YjQzOS4uZDU4MTc3N2Y5NTE3M2IzZDVkZTE1
Y2JjMTFjMzBjMGYxNDQ2MGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQx
LDYgKzQxLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJLZXlQYXRo
OwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRh
dGFiYXNlQmFja2UKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UoKSB7IH0KIAorICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKaW5kZXggZDZkNzYyMmJiMmE0
YTliZDhlN2VhZDA4OWRmYjU1NzQ4YjFiZGVhMi4uZDY4YTQwNmM5YmJjM2E1MGM5YzY0NWMzNmZl
MWU1YzIwNDBhYTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmNwcApAQCAtNDIsOCArNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhU
OwogCi1JREJJbmRleDo6SURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGJhY2tlbmQpCitJREJJbmRleDo6SURCSW5k
ZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisg
ICAgLCBtX2JhY2tlbmQoYmFja2VuZCkKICAgICAsIG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUp
CiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXgu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggYzdl
NWY3OGNmYjU3NjE2NzZmNjA2MDljZTM2OTZlNDkwODRhOGZjMi4uY2I2ODhjNjE5YWU0ZTc1MWYw
MmFjNGQwM2NjZGYyNmNhZDEzNDg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiSURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktl
eVJhbmdlLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MiwxOCArNDQsMTggQEAgY2xhc3Mg
SURCT2JqZWN0U3RvcmU7CiAKIGNsYXNzIElEQkluZGV4IDogcHVibGljIFJlZkNvdW50ZWQ8SURC
SW5kZXg+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRl
KFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RT
dG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1l
dGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4KGJhY2tlbmQsIG9iamVj
dFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQklu
ZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKICAgICB9
CiAgICAgfklEQkluZGV4KCk7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBJREJPYmpl
Y3RTdG9yZSogb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgp
OyB9Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tlbmQtPmtleVBhdGgoKTsgfQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZW5kLT51bmlxdWUoKTsgfQotICAgIGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2VuZC0+bXVsdGlFbnRyeSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlOyB9CisgICAg
UGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtl
eVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5p
cXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5t
dWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5l
cmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9w
ZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2Uq
PigwKSwgZWMpOyB9CkBAIC04Myw4ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtEZWxl
dGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXgoUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RTdG9yZSosIElEQlRy
YW5zYWN0aW9uKik7CisgICAgSURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiwgSURCT2JqZWN0U3RvcmUqLCBJREJUcmFu
c2FjdGlvbiopOwogCisgICAgSURCSW5kZXhNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3Ry
YW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA5ODYxNGRmYjM1MGQ0MmIyNjhiYzQyZThi
NjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZhYWYyZjUyNDIzNWY4NTA3YTZlZjQ4ZTViMmVjN2Q5ZWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFi
YXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFu
Z2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKQEAgLTY3LDYgKzY4LDEx
IEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAor
SURCSW5kZXhNZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIElEQkluZGV4TWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVl
LCBtX211bHRpRW50cnkpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJz
b3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVk
IHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewog
ICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJh
Y2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJh
Y2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3ZDE3ZTQwMWJlMGI4YTNkMzU3ZDBkZGQwNzNmMDJmZWQy
Ni4uNjQxMGNiYWMzZmM2NDkwYTllNDVmZDg3YmJkMGM5MTYxMzNlMWZjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwu
aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIK
ICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXlQ
YXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoY29u
c3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCk7CiAKICAg
ICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KKyAgICB2aXJ0dWFsIElE
QkluZGV4TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1l
KCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7
IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4g
bV91bmlxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRh
ZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjYmVmNzNiY2U1ZDAzMWYxYWI0N2VkMzFiYThhMjNiZDgxNjY4
ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJNZXRhZGF0YS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJNZXRhZGF0YV9oCisj
ZGVmaW5lIElEQk1ldGFkYXRhX2gKKworI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7Citz
dHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewor
ICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgICAgICA6IG5hbWUo
bmFtZSkKKyAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pIHsgfQorICAgIFN0cmluZyBuYW1lOwor
ICAgIFN0cmluZyB2ZXJzaW9uOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0U3RvcmVNYXA7CisgICAgT2JqZWN0U3RvcmVNYXAgb2Jq
ZWN0U3RvcmVzOworfTsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgeworICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5j
cmVtZW50KQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgp
CisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KSB7IH0KKyAgICBTdHJpbmcg
bmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCBhdXRvSW5jcmVtZW50Owor
CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7
CisgICAgSW5kZXhNYXAgaW5kZXhlczsKK307CisKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhIHsK
KyAgICBJREJJbmRleE1ldGFkYXRhKCkgeyB9CisgICAgSURCSW5kZXhNZXRhZGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnkpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGtleVBhdGgoa2V5
UGF0aCkKKyAgICAgICAgLCB1bmlxdWUodW5pcXVlKQorICAgICAgICAsIG11bHRpRW50cnkobXVs
dGlFbnRyeSkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOwor
ICAgIGJvb2wgdW5pcXVlOworICAgIGJvb2wgbXVsdGlFbnRyeTsKK307CisKK30KKworI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCVHJhY2luZ19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAKaW5kZXggMmFmY2IzMGUxNDg1MDJkOTFiNzg3NmNkYzYxMjJiZjJmNTI1NDhkOC4uNzlhNzk4
MDU1MGJkNjJlNzlmOWQzYWQ4ZmY2ZmI4OTk0ZmQ4YjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgor
I2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2luY2x1ZGUgIklEQktleS5oIgpAQCAtNDQsOCAr
NDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCT2JqZWN0U3RvcmU6
OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9i
YWNrZW5kKGlkYk9iamVjdFN0b3JlKQorSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKGNv
bnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX3ByZXZpb3Vz
TWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAg
LCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQogewpA
QCAtNTUsMzQgKzU4LDE0IEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqCiAgICAgcmVsYXhBZG9w
dGlvblJlcXVpcmVtZW50KCk7CiB9CiAKLVN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNv
bnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6bmFtZSIpOwotICAgIHJldHVy
biBtX2JhY2tlbmQtPm5hbWUoKTsKLX0KLQotUGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0
b3JlOjprZXlQYXRoKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpr
ZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwotfQotCiBQYXNzUmVm
UHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsK
ICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJu
IG1fYmFja2VuZC0+aW5kZXhOYW1lcygpOwotfQotCi1JREJUcmFuc2FjdGlvbiogSURCT2JqZWN0
U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjp0cmFuc2FjdGlvbiIpOwotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwotfQot
Ci1ib29sIElEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KCkgY29uc3QKLXsKLSAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFj
a2VuZC0+YXV0b0luY3JlbWVudCgpOworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5h
bWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1l
dGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMu
YmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBp
bmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7Cisg
ICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
MzAzLDggKzI4NiwxMCBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZQogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6
OmNyZWF0ZShpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKKyAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwg
bXVsdGlFbnRyeSk7CisgICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVh
dGUobWV0YWRhdGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24u
Z2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFkYXRh
LmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKIAogICAgIHJldHVybiBpbmRleC5yZWxlYXNl
KCk7CiB9CkBAIC0zMzAsNyArMzE1LDEwIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVj
dFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXgg
PSBJREJJbmRleDo6Y3JlYXRlKGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25z
dF9pdGVyYXRvciBtZGl0ID0gbV9tZXRhZGF0YS5pbmRleGVzLmZpbmQobmFtZSk7CisgICAgQVNT
RVJUKG1kaXQgIT0gbV9tZXRhZGF0YS5pbmRleGVzLmVuZCgpKTsKKworICAgIFJlZlB0cjxJREJJ
bmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1kaXQtPnNlY29uZCwgaW5kZXhCYWNrZW5k
LnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5z
ZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zNDks
NiArMzM3LDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtE
ZWxldGVkKCk7CiAgICAgICAgICAgICBtX2luZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAg
fQorCisgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOwor
ICAgICAgICBtX21ldGFkYXRhLmluZGV4ZXMucmVtb3ZlKG5hbWUpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5k
ZXggODM0YmQ1MGZjMDUzMWRjYTdlZGQ3NWEwYWMyZTY4YjRhMmY4MjEzYi4uMjc2M2FkMjdkNWFm
YTE1ZjNkNWY3OTczMzg2NTdlOGI4NTk0NzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlS
YW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCkBAIC00OSwxOCArNTAsMTggQEAgY2xhc3MgSURCQW55OwogCiBj
bGFzcyBJREJPYmplY3RTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUs
IElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRh
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJPYmplY3RTdG9yZShpZGJPYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShtZXRhZGF0YSwgYmFja2VuZCwg
dHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICAv
LyBJbXBsZW1lbnQgdGhlIElEQk9iamVjdFN0b3JlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29u
c3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBT
dHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBQYXNz
UmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0
aDsgfQogICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0Owot
ICAgIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgYXV0b0lu
Y3JlbWVudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbjsgfQorICAgIGJvb2wgYXV0b0luY3Jl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCiAgICAg
UGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBhZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykgeyByZXR1cm4gYWRkKGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykg
eyByZXR1cm4gcHV0KGNvbnRleHQsIHZhbHVlLCAwLCBlYyk7ICB9CkBAIC05NiwxMSArOTcsMTQg
QEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsg
fQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhZGF0
YSgpIHsgbV9tZXRhZGF0YSA9IG1fcHJldmlvdXNNZXRhZGF0YTsgfQogCiBwcml2YXRlOgotICAg
IElEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+
LCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25Gcm9tUGVuZGlu
Z0xpc3QoKTsKIAorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG1fcHJldmlvdXNNZXRhZGF0YTsKICAgICBSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogICAgIGJvb2wgbV9kZWxldGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCBkYzQxMzQzOWE3ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2Zi
N2MwY2RmLi5kZDMzYzMxNzg0YTZkNzBlNjE4ODRhNGE2ZWRkM2M5M2Y0MjgzNDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNzIsNiArNzIsMTQgQEAgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXAKIHsKIH0KIAorSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV9hdXRvSW5jcmVtZW50KTsKKyAgICBmb3Ig
KEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBt
X2luZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1ldGFkYXRhLmluZGV4ZXMuc2V0KGl0LT5m
aXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQor
CiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omlu
ZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVz
ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXgg
ZDM3MjI1M2EzMzQzZjBiZGRkZGMxMTczMGIxODA2ZDE2NDI5NDVjNi4uYzNkMWM1MzMxZDk0ZjQ1
ZGY3MTM4Y2YwNDk4OGE0MDFjZjU2N2M5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2lu
Y2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNDAsNiArNDEsNyBAQCBj
bGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsK
IGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZv
aWQgc2V0SWQoaW50NjRfdCBpZCkgeyBtX2lkID0gaWQ7IH0KIAorICAgIHZpcnR1YWwgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5
UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjQxZTU3NjQx
NmQ2NzE2ZjJkZjJiZTlmMTI4MjU2YzA1OTU3MjZiZi4uMmNkZDc2NzY3ZTRlNWU3M2U1Yzk3NTJi
YjkwNThmOWJjNjVlODNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTU4LDE1ICsxNTgsMjEgQEAgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXAKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUo
b2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSA9IG1fZGF0YWJhc2UtPm1ldGFkYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRh
ZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG1kaXQgPSBtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAhPSBtZXRhZGF0YS5vYmplY3RT
dG9yZXMuZW5kKCkpOworCisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWRpdC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQs
IHRoaXMpOwogICAgIG9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAg
cmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNy
ZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBP
YmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAg
UmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAg
IG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5hbWUsIG9iamVjdFN0b3JlKTsKKyAgICBtX29iamVjdFN0
b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
OjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTc3LDYgKzE4Myw3
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBpdC0+
c2Vjb25kOwogICAgICAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAg
b2JqZWN0U3RvcmUtPm1hcmtEZWxldGVkKCk7CisgICAgICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVw
U2V0LmFkZChvYmplY3RTdG9yZSk7CiAgICAgfQogfQogCkBAIC0yMzksNiArMjQ2LDEwIEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQogICAgICAgICByZXF1ZXN0LT5hYm9ydCgpOwog
ICAgIH0KIAorICAgIGlmIChtX21vZGUgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdF
KSB7CisgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9vYmpl
Y3RTdG9yZUNsZWFudXBTZXQuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQu
ZW5kKCk7ICsraXQpCisgICAgICAgICAgICAoKml0KS0+cmVzZXRNZXRhZGF0YSgpOworICAgIH0K
ICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5p
c2hlZCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKaW5kZXggNGY5NWY1YjE5ZDA5NDk4YjhjMDNhYzYyZTgxNmU5NzgzODgy
MzJkMi4uMmRiZDBjZjFhZGM4NWUzZTkyZjMyZWU4ODQ5NDI4MjY4NTUzMTVjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRh
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtMTQzLDYgKzE0NCw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlTWFwOwogICAgIElEQk9iamVj
dFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVNYXA7CiAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRy
PElEQk9iamVjdFN0b3JlPiA+IElEQk9iamVjdFN0b3JlU2V0OworICAgIElEQk9iamVjdFN0b3Jl
U2V0IG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0OworCiAgICAgSGFzaFNldDxJREJDdXJzb3IqPiBt
X29wZW5DdXJzb3JzOwogCiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGRhYTAyNmUwNTk4MzkzZTRlYzA4NmJhMWE5ZTZjYTA2ZmUxMmUz
NGUuLjEwMmNiYzRhMDZhM2YxMDExYTFiODA0Mzc1Mzk5ZGJmNmI0ZTBjZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTE0ODgsNiArMTQ4OCw3IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJNZXRhZGF0YS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA3NGRiMjU4
YmUyMGZlYmE2NzZkOGQwZTQ3MDY2MzFlY2Y3MTRiODBmLi42ZmE0M2YxMDE0NTQ3YmI2MmY4MmQ1
ODllOGY2YzM4MzQyMWVlNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC01NjEs
NiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCS2V5UmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk1ldGFkYXRh
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggNDEwZDlmYWNmOGE3MWEy
M2RjNjI5ODkyYWYzYmMzNmU1MTFmNGEyMy4uMWMzM2QxYjA4MGQ3NTY4MmVkY2VkMmZkZmFiZWE0
YjFlZTRkODY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJN
ZXRhZGF0YS5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CkBAIC02Miw2ICs2NiwxMSBAQCBzdHJ1Y3QgV2Vi
SURCTWV0YWRhdGEgewogICAgICAgICAgICAgLCB1bmlxdWUoZmFsc2UpCiAgICAgICAgICAgICAs
IG11bHRpRW50cnkoZmFsc2UpIHsgfQogICAgIH07CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRh
Jik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSgpIGNvbnN0Owor
I2VuZGlmCiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1ODY2MWViYWI4M2Y1YmNmOGE0Y2E4OWFi
ZTdkYjgxMDg0YzkwNWY0Li4xMDdlYzYzYjNiNzg4M2UwOWVlYTMzN2M1OTE1YzM1YWQ0MGExZDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VC
YWNrZW5kUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2Fs
bGJhY2tzLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEsMTEgQEAgSURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiB7CiB9CiAK
K0lEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFkYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YWRhdGEoKTsKK30KKwog
U3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZTgxN2VkZjE5OTVkYTJh
ODY3ZTk1NTkwNmQ5ODk3MGViMzQ0ZjkyYi4uYjA1NTUyY2NiZjExNzIwNWNjZTU3NGNlOWFhZDI4
NWY5ZWJiZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0
ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VC
YWNrZW5kUHJveHkoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0
YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4
IDI2NjJmODAxZjc1ZjIwZTMxNTFlNGU4NzA4YjVlZmE3MzZjYzdhZTYuLjM5ODAzZTE0NTkzZWQ3
MzQwOTZhYTZjNzgzMjg1OWNjMmI2ZTI1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNpbmNs
dWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKKyNpbmNs
dWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKICNpbmNsdWRl
ICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbklt
cGwuaCIKIApAQCAtNTEsNiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+V2ViSURCRGF0
YWJhc2VJbXBsKCkKIHsKIH0KIAorV2ViSURCTWV0YWRhdGEgV2ViSURCRGF0YWJhc2VJbXBsOjpt
ZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5tZXRhZGF0
YSgpOworfQorCiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBsOjpuYW1lKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMTkwZDdlMmRjMzI5YjA2
ZmIzYWU2Zjg5ODRiMzFiMmQyNTJiYWI4Mi4uNWU5ODllMDBlZWRiYTIwMWJkZWQwYTZkYjc5Nzk1
NzViZTk1MDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNr
czsKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YWRhdGE7CiBjbGFzcyBXZWJJREJPYmplY3RTdG9y
ZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2ICs1MCw3IEBAIHB1YmxpYzoK
ICAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlSW1wbCgp
OwogCisgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2ZXJz
aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3JlTmFt
ZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
Qk1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRh
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43MzUwNjNlZjBmZjMzYmI4YTZjNmQyZWViODA2NTcwYjAxZmQ1OWNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0
YWRhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRoLmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIG5hbWUgPSBtZXRhZGF0YS5uYW1lOwor
ICAgIHZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uOworICAgIG9iamVjdFN0b3JlcyA9IFdlYlZl
Y3RvcjxPYmplY3RTdG9yZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS5vYmplY3RTdG9y
ZXMuc2l6ZSgpKSk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChJREJEYXRhYmFzZU1l
dGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRvciA9IG1l
dGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFkYXRhLm9i
amVjdFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlID0gc3RvcmVJdGVyYXRvci0+c2Vjb25kOwor
ICAgICAgICBPYmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZTsKKyAgICAgICAgd2ViT2JqZWN0U3Rv
cmUubmFtZSA9IG9iamVjdFN0b3JlLm5hbWU7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmtleVBh
dGggPSBvYmplY3RTdG9yZS5rZXlQYXRoOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5hdXRvSW5j
cmVtZW50ID0gb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudDsKKyAgICAgICAgd2ViT2JqZWN0U3Rv
cmUuaW5kZXhlcyA9IFdlYlZlY3RvcjxJbmRleD4oc3RhdGljX2Nhc3Q8c2l6ZV90PihvYmplY3RT
dG9yZS5pbmRleGVzLnNpemUoKSkpOworCisgICAgICAgIHNpemVfdCBqID0gMDsKKyAgICAgICAg
Zm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaW5k
ZXhJdGVyYXRvciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJdGVyYXRvciAh
PSBvYmplY3RTdG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3IpIHsKKyAgICAgICAg
ICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4ID0gaW5kZXhJdGVyYXRvci0+c2Vjb25k
OworICAgICAgICAgICAgSW5kZXggd2ViSW5kZXg7CisgICAgICAgICAgICB3ZWJJbmRleC5uYW1l
ID0gaW5kZXgubmFtZTsKKyAgICAgICAgICAgIHdlYkluZGV4LmtleVBhdGggPSBpbmRleC5rZXlQ
YXRoOworICAgICAgICAgICAgd2ViSW5kZXgudW5pcXVlID0gaW5kZXgudW5pcXVlOworICAgICAg
ICAgICAgd2ViSW5kZXgubXVsdGlFbnRyeSA9IGluZGV4Lm11bHRpRW50cnk7CisgICAgICAgICAg
ICB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2orK10gPSB3ZWJJbmRleDsKKyAgICAgICAgfQorICAg
ICAgICBvYmplY3RTdG9yZXNbaSsrXSA9IHdlYk9iamVjdFN0b3JlOworICAgIH0KK30KKworV2Vi
SURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdAoreworICAg
IElEQkRhdGFiYXNlTWV0YWRhdGEgZGIobmFtZSwgdmVyc2lvbik7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvYmplY3RTdG9yZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgT2Jq
ZWN0U3RvcmUgd2ViT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZXNbaV07CisgICAgICAgIElEQk9i
amVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwgd2ViT2Jq
ZWN0U3RvcmUua2V5UGF0aCwgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCk7CisKKyAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKTsg
KytqKSB7CisgICAgICAgICAgICBjb25zdCBJbmRleCB3ZWJJbmRleCA9IHdlYk9iamVjdFN0b3Jl
LmluZGV4ZXNbal07CisgICAgICAgICAgICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdlYkluZGV4
Lm5hbWUsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgubXVsdGlF
bnRyeSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5pbmRleGVzLnNldChpbmRleC5uYW1lLCBp
bmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZGIub2JqZWN0U3RvcmVzLnNldChvYmplY3RTdG9y
ZS5uYW1lLCBvYmplY3RTdG9yZSk7CisgICAgfQorICAgIHJldHVybiBkYjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA4MTNlMjkxMzRhMDc4MGYxMzBiZWVjNmViZjFhYzJjYTYyZTljMmEyLi5mY2Q1N2ZiNGNj
MmFjZjExMGJiZmQzYzJjMTA0ZWE3NDIwYmZjNTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTItMDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMgcm91
bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qczogQWRkZWQuCisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3Vj
Y2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4ucmVxdWVzdC5vbnN1
Y2Nlc3MpOgorICAgICAgICAoZmlyc3RPcGVuKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVz
dC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAg
IChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAg
ICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Blbik6
CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3Mu
dHJhbnMub25hYm9ydCk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHRoaXJkT3Blbik6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNj
ZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoZm91cnRo
T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmb3Vy
dGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4pOgorICAgICAg
ICAoY2hlY2tTdGF0ZSk6CisKIDIwMTItMDYtMTkgIEtlbiBCdWNoYW5hbiAgPGtlbnJiQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBYnNvbHV0ZSBwb3NpdGlvbmVkIG9iamVjdHMgc2hvdWxkIG5v
dCBiZSBhZGRlZCB0byBhbm9ueW1vdXMgYmxvY2sgbGlzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM2
ZDQ3NWFhNDI3YmFjZmFmZjEzNDdhMzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsODggQEAKK1Rlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3Nu
YXBzaG90dGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0g
c2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVk
REIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNl
bGYubG9jYXRpb24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uo
ZGJuYW1lKQorCitmaXJzdE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUp
Citjb25uZWN0aW9uMSA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0
VmVyc2lvbignMScpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0b3JlMSA9
IGNvbm5lY3Rpb24xLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjFzdG9y
ZTEuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lv
biBpcyAiMSIKK1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQor
UEFTUyBjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25uZWN0aW9u
J3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24x
LmNsb3NlKCkKKworc2Vjb25kT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFt
ZSkKK2Nvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMi5z
ZXRWZXJzaW9uKCcyJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24yLmNyZWF0
ZU9iamVjdFN0b3JlKCdzdG9yZTInKQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAn
cGF0aCcpCitQQVNTIGNvbm5lY3Rpb24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24y
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5k
ZXhOYW1lcy5sZW5ndGggaXMgMgorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNu
YXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3BlbigpOgor
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVxdWVzdC5y
ZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5zID0gcmVx
dWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKQorY29u
bmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24z
c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24zLnZl
cnNpb24gaXMgIjMiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlz
IDMKK1BBU1MgY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVj
dGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFucy5hYm9y
dCgpCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xv
c2UKK2Nvbm5lY3Rpb24zLmNsb3NlKCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3Qg
PSBjb25uZWN0aW9uNC5zZXRWZXJzaW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nv
bm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRzdG9yZTEg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUlu
ZGV4KCdpbmRleDQnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQ
QVNTIGNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVj
dGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRp
ZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9zZSgpCisK
K2NoZWNrU3RhdGUoKToKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29u
bmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0
b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBp
cyAiMiIKK1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFT
UyBjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVj
dGlvbjMudmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGggaXMgMgorUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAy
CisKK1BBU1MgY29ubmVjdGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2Jq
ZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5h
bWVzLmxlbmd0aCBpcyAzCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9t
ZXRhZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NDJjZmU1OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUyZTNmCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEu
aHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9tZXRhZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9tZXRhZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJlYzNlZWNm
MDAwN2VlYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBv
cnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9u
L3NuYXBzaG90dGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQ
cmVmaXhlcygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5h
bWUiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNl
KGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rpb24gZmly
c3RPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbigpOiIpOwor
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAg
cmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5v
bnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEg
PSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVj
dGlvbjEuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOwor
ICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0aW9uMS5j
cmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4
TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBz
aG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJjb25uZWN0aW9uMS5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25kT3Blbigp
OworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZWNv
bmRPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4oKToiKTsK
KyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAg
IHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24y
ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5l
Y3Rpb24yLnNldFZlcnNpb24oJzInKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdz
dG9yZTInKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEgPSB0
cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisKKyAgICAg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7
CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5n
dGgiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4
TmFtZXMubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhw
ZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBz
aG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJjb25uZWN0aW9uMi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRPcGVuKCk7
CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRoaXJk
T3BlbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToiKTsKKyAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJl
cXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0g
cmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rp
b24zLnNldFZlcnNpb24oJzMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9y
ZTMnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAgICAgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIzIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgi
LCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFt
ZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhw
ZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBz
aG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5k
TG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRoT3Blbigp
OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgcmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBm
b3VydGhPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW4oKToi
KTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rp
b240ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNv
bm5lY3Rpb240LnNldFZlcnNpb24oJzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZTQnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmlu
ZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVu
ZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGll
cyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFs
QW5kTG9nKCJjb25uZWN0aW9uNC5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0
ZSgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBj
aGVja1N0YXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3RhdGUoKToi
KTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIx
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjEiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgi
LCAiMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29u
bmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjJzdG9y
ZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lv
biIsICI0Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5s
ZW5ndGgiLCAiMyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
Cit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148681</attachid>
            <date>2012-06-20 16:55:30 -0700</date>
            <delta_ts>2012-06-20 17:32:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120620165530.patch</filename>
            <type>text/plain</type>
            <size>58370</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjcwYThiNmUyYTQwZmFm
OGEzYjU0YWI5Zjg4YWNkNTU2ZDM0Y2Y1OC4uY2Q4NTc4OTgzY2QyNDA2NDJhNjMxZTA3YmVjOGYw
ODFkMzE5ZWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSBhIG5ldyB0
eXBlIChJREJEYXRhYmFzZU1ldGFkYXRhKSB0aGF0IGNhcHR1cmVzIHRoZSAic2NoZW1hIiBvZiBh
bgorICAgICAgICBJREIgZGF0YWJhc2UgKG5hbWUsIHZlcnNpb24sIHByb3BlcnRpZXMgb2Ygc3Rv
cmVzLCBwcm9wZXJ0aWVzIG9mIGluZGV4ZXMpLgorICAgICAgICBBZGQgYSBtZXRob2QgZm9yIHRo
ZSBmcm9udCBlbmQgdG8gcmVxdWVzdCB0aGlzIGZyb20gdGhlIGJhY2sgZW5kIG9uY2UgdXAKKyAg
ICAgICAgZnJvbnQgdG8gYXZvaWQgbGF0ZXIgY2FsbHMgKHdoaWNoIG1heSBiZSBzbG93IElQQyBj
YWxscyBpbiBwb3J0cykuIEltcGxlbWVudAorICAgICAgICBJREIgc3BlYyBsb2dpYyB0aGF0IHRo
ZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGZvciBhIHBhcnRpY3VsYXIgSURCRGF0YWJhc2UK
KyAgICAgICAgY29ubmVjdGlvbiwgYW5kIG9ubHkgY2hhbmdlIHdpdGhpbiBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLCBhbmQgdGhlIHNwZWMncworICAgICAgICBmdW5reSByZXF1aXJlbWVu
dCBmb3IgYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMuCisKKyAgICAgICAgVGVz
dDogc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKTogRmV0Y2ggbWV0YWRhdGEgZnJvbSBiYWNrIGVuZCB3aGVuIGNvbm5lY3Rp
b24gaXMgY3JlYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlv
bkNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uRmlu
aXNoZWQpOiBVcGRhdGUgbWV0YWRhdGEgYXQgdGhlIGVuZCBvZiBhIHRyYW5zYWN0aW9uIGluIAor
ICAgICAgICBjYXNlIGl0IHdhcyByb2xsZWQgYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1l
bmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6IFVwZGF0ZSBsb2NhbCBjb3B5IG9mIG1ldGFkYXRhLgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKTogVXBkYXRlIGxvY2Fs
IGNvcHkgb2YgbWV0YWRhdGEuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKTogTW92ZSBpbXBsZW1l
bnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVy
c2lvbik6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5kLgorICAgICAgICAoSURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om1ldGFkYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKTogQ29uc3RydWN0
IGEgbWV0YWRhdGEgc25hcHNob3QuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHA6IFN0b3JlIGEgY29weSBvZiB0aGUgbWV0YWRhdGEsIHdoaWNoIHdpbGwgbmV2ZXIK
KyAgICAgICAgY2hhbmdlIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGluZGV4LgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6OklEQkluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8g
ZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9iamVjdFN0b3JlKTogUmV0
dXJuIFJlZlB0ciAodW5yZWxhdGVkIHRpZHlpbmcpLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGgpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojp1bmlxdWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250
LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KTogTW92ZSBpbXBs
ZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6IENvbnN0cnVjdCBhIG1ldGFkYXRh
IHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDogQWRkZWQgbmV3IHN0
cnVjdHMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
TWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VNZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6CisgICAg
ICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2Jq
ZWN0U3RvcmUpOiBTdG9yZSBhICJsaXZlIiBjb3B5IG9mIHRoZSBtZXRhZGF0YSwgYW5kCisgICAg
ICAgIGFuZCBjb3B5IGluIGNhc2Ugb2YgYW4gYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKTogTW92
ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgpOiBVcGRhdGUgbWV0YWRhdGEgdG8gaW5jbHVkZSBuZXcgaW5k
ZXguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOiBQYXNzIGFsb25n
IG1ldGFkYXRhIHRvIGluc3RhbmNlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KTogRGVsZXRlIGluZGV4IGZyb20gbWV0YWRhdGEuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKTogTW92ZSBpbXBsZW1lbnRhdGlv
biB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNh
Y3Rpb24pOiBSZXR1cm4gUmVmUHRyICh1bnJlbGF0ZWQgdGlkeWluZykuCisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCk6IE1vdmUgaW1wbGVtZW50YXRpb24g
dG8gZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnJlc2V0TWV0
YWRhdGEpOiBJbiBjYXNlIG9mIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0LAorICAg
ICAgICByb2xsIGJhY2sgdGhlIG1ldGFkYXRhLgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEp
OiBDb25zdHJ1Y3QgYSBtZXRhZGF0YSBzbmFwc2hvdC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKTogUGFzcyBhbG9uZyBtZXRhZGF0
YSB0byBpbnN0YW5jZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQpOiBUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcgdHJh
bnNhY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVE
ZWxldGVkKTpUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6IFJldmVydCBzdG9yZXMgbWV0YWRh
dGEgcG90ZW50aWFsbHkgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMTkgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydGlvbiBmb3IgZXZlbnQncyB0YXJn
ZXQgaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI2YzM3ZTFjOWE2Njk3
MzM3NmUzZmE3OWNjNmI5ZWE1OTE0MzQ2MTIuLjViMmU1ZThmMDE0YmU2MDIwNWRiYjhlY2Y1YzE4
NjNkNzMxZjVkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTItMDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMg
cm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGNvbnZlcnNpb25zIHRvL2Zyb20gV2ViQ29yZSBJREIgbWV0YWRhdGEgdHlwZSBhbmQg
cGx1bWJpbmcgZm9yIHJvdXRpbmcgdGhlCisgICAgICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6bWV0YWRhdGEoKSBjYWxsIHRocm91Z2ggdGhlIHB1YmxpYyBBUEkuLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDogTmV3IGZpbGUgYWRkZWQuCisgICAgICAgICogcHVibGljL1dlYklEQk1l
dGFkYXRhLmg6IENvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJJREJNZXRhZGF0YSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcDogUGx1bWJpbmcuCisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oOiBQbHVtYmluZy4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDogUGx1bWJpbmcu
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6IFBsdW1iaW5n
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAg
ICAgICogc3JjL1dlYklEQk1ldGFkYXRhLmNwcDogQWRkZWQgLSBjb252ZXJzaW9uIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpX
ZWJJREJNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRv
ciBJREJEYXRhYmFzZU1ldGFkYXRhKToKKwogMjAxMi0wNi0xOSAgS2VubmV0aCBSdXNzZWxsICA8
a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDc3
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cAppbmRleCAyMDA4ZWQ4YjRmY2JjYmI1NzMzNjRkYTk3ZWE4MGQwOWJkZGIxODNhLi4wYTQ5NDAw
YmI4NjU1ZWFlOTA0ZmNlNjlkOWVkN2I0MDg2YmI3ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC02NCw2ICs2NCw3IEBAIElE
QkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKHRoaXMpOworICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRh
KCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQpAQCAtODEsNiArODIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAg
ICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgICAgIG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisgICAgICAgIG1fbWV0YWRhdGEgPSBt
X2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQogfQogCkBAIC05MywxMiArOTUsMjIgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAg
ICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAg
ICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9IDA7CisgICAgICAgIG1fbWV0YWRhdGEg
PSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQogCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5n
ICYmIG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgY2xvc2VDb25uZWN0aW9uKCk7
CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdAoreworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5h
bWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFk
YXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVj
dFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytp
dCkKKyAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgb2Jq
ZWN0U3RvcmVOYW1lcy0+c29ydCgpOworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVh
c2UoKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9u
cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbikgewpAQCAtMTM2LDcgKzE0OCwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVj
dFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFz
ZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZShtZXRhZGF0YSwgb2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChuYW1l
LCBtZXRhZGF0YSk7CisKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3Rv
cmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVs
ZWFzZSgpOwogfQpAQCAtMTQ5LDggKzE2NCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0K
IAogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmICghZWMpCisgICAgaWYgKCFlYykg
ewogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVk
KG5hbWUpOworICAgICAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7Cisg
ICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFz
ZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggYWRhZDMyZDg2YWM2NDc4NWYwZGRiNjE5
MDdmZWFjY2M5YzBkOTE0Ni4uMjAwNTVhMjgyYjI1NTIwNWI0ZGRjODk4NmZmZTgwNzMxNjU0YWEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNTcsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2FjdGlv
bkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKik7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAot
ICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAg
ICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigpOyB9
Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVzKCk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnZlcnNpb247IH0KKyAg
ICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAog
ICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlz
IHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0
ZU9iamVjdFN0b3JlKG5hbWUsIERpY3Rpb25hcnkoKSwgZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cygpOworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVu
dCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwpAQCAtMTA1LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsb3NlQ29ubmVj
dGlvbigpOwogCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uOwogICAgIEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb24qPiBtX3RyYW5zYWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
MTJmMjkwMjVhYjNhODk1NjJjNWUxMTk0ZjM5ODAwN2RjZDY3NjBmYS4uZDdkNWVlM2ZlYTFjYWIy
ZmNlM2E0MDI3ZTkwZWRjYTY1ZDliZTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEz
Myw2ICsxMzMsMTQgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2luZ1N0b3Jl
OwogfQogCitJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFk
YXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwg
bV92ZXJzaW9uKTsKKyAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0
KQorICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29u
ZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9N
U3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggY2ZiY2EzYjYzNTMw
NjZhNzc1YzRjMTc4MmZmMTA0MTk2OWRkOWJhMi4uMWZlY2QzYmM0ZTUwYTI5Y2JkNmQyMWE2NmZk
MGFiN2IzNDdmMjk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwog
ICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAorICAg
IHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDI0ODA3NDc0YjhjY2YwYmE5ODc0NmY5MGZmNjcw
MGQ0NjY3YjQzOS4uZDU4MTc3N2Y5NTE3M2IzZDVkZTE1Y2JjMTFjMzBjMGYxNDQ2MGVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSURCRGF0
YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwor
c3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2UKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAorICAgIHZpcnR1
YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKaW5kZXggZDZkNzYyMmJiMmE0YTliZDhlN2VhZDA4OWRmYjU1NzQ4YjFi
ZGVhMi4uZDY4YTQwNmM5YmJjM2E1MGM5YzY0NWMzNmZlMWU1YzIwNDBhYTFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNDIsOCArNDIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBk
ZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJJbmRleDo6SURCSW5kZXgo
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9i
YWNrZW5kKGJhY2tlbmQpCitJREJJbmRleDo6SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
LCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggYzdlNWY3OGNmYjU3NjE2NzZmNjA2MDljZTM2
OTZlNDkwODRhOGZjMi4uY2I2ODhjNjE5YWU0ZTc1MWYwMmFjNGQwM2NjZGYyNmNhZDEzNDg5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0zMCw2
ICszMCw4IEBACiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURC
TWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJl
cXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC00MiwxOCArNDQsMTggQEAgY2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNz
IElEQkluZGV4IDogcHVibGljIFJlZkNvdW50ZWQ8SURCSW5kZXg+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4g
Y3JlYXRlKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkluZGV4KGJhY2tlbmQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBv
YmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAgfklEQkluZGV4KCk7CiAKICAg
ICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQotICAg
IGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQotICAg
IGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlFbnRyeSgp
OyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5u
YW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFN0b3JlOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBG
SVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRl
ZC4KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3Io
Y29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04Myw4ICs4
NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVl
OyB9CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+LCBJREJPYmplY3RTdG9yZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5k
ZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiwgSURCT2JqZWN0U3RvcmUqLCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5k
ZXhNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA5ODYxNGRmYjM1MGQ0MmIyNjhiYzQyZThiNjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZh
YWYyZjUyNDIzNWY4NTA3YTZlZjQ4ZTViMmVjN2Q5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRl
ICJJREJUcmFjaW5nLmgiCiAKQEAgLTY3LDYgKzY4LDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6
On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAorSURCSW5kZXhNZXRhZGF0YSBJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0
YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2
b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24s
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3
ZDE3ZTQwMWJlMGI4YTNkMzU3ZDBkZGQwNzNmMDJmZWQyNi4uNjQxMGNiYWMzZmM2NDkwYTllNDVm
ZDg3YmJkMGM5MTYxMzNlMWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw2ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29u
c3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4
QmFja2VuZEludGVyZmFjZS4KKyAgICB2aXJ0dWFsIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAg
ICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYmVm
NzNiY2U1ZDAzMWYxYWI0N2VkMzFiYThhMjNiZDgxNjY4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEs
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJREJNZXRhZGF0YV9oCisjZGVmaW5lIElEQk1ldGFkYXRhX2gKKwor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsK
Kworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEo
KSB7IH0KKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9u
KHZlcnNpb24pIHsgfQorICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0
U3RvcmVNYXA7CisgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgeworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7
IH0KKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUo
bmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVu
dChhdXRvSW5jcmVtZW50KSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtl
eVBhdGg7CisgICAgYm9vbCBhdXRvSW5jcmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgSURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsK
K307CisKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkg
eyB9CisgICAgSURCSW5kZXhNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDog
bmFtZShuYW1lKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUo
dW5pcXVlKQorICAgICAgICAsIG11bHRpRW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5n
IG5hbWU7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJv
b2wgbXVsdGlFbnRyeTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjZW5kaWYgLy8gSURCVHJhY2luZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMmFmY2IzMGUxNDg1MDJk
OTFiNzg3NmNkYzYxMjJiZjJmNTI1NDhkOC4uNzlhNzk4MDU1MGJkNjJlNzlmOWQzYWQ4ZmY2ZmI4
OTk0ZmQ4YjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJJbmRleC5o
IgogI2luY2x1ZGUgIklEQktleS5oIgpAQCAtNDQsOCArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQor
SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
aWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0
YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX3ByZXZpb3VzTWV0YWRhdGEobWV0YWRhdGEpCisgICAg
LCBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQogewpAQCAtNTUsMzQgKzU4LDE0IEBAIElEQk9i
amVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gaWRiT2JqCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiB9CiAK
LVN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6bmFtZSIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKLX0K
LQotUGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKLXsK
LSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjprZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1f
YmFja2VuZC0+a2V5UGF0aCgpOwotfQotCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+aW5kZXhOYW1lcygp
OwotfQotCi1JREJUcmFuc2FjdGlvbiogSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29u
c3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbiIpOwotICAg
IHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwotfQotCi1ib29sIElEQk9iamVjdFN0b3JlOjph
dXRvSW5jcmVtZW50KCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjph
dXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVudCgpOwor
ICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0
YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZp
cnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7CisgICAgcmV0dXJuIGluZGV4TmFtZXMucmVs
ZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzAzLDggKzI4NiwxMCBAQCBQYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVs
ZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBJREJJbmRleE1ldGFkYXRh
IG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRy
PElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2Vu
ZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAu
c2V0KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFk
YXRhKTsKIAogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzE1LDEw
IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4
QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbV9tZXRh
ZGF0YS5pbmRleGVzLmZpbmQobmFtZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbV9tZXRhZGF0YS5p
bmRleGVzLmVuZCgpKTsKKworICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6
Y3JlYXRlKG1kaXQtPnNlY29uZCwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJl
dHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zNDksNiArMzM3LDkgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7CiAgICAgICAgICAgICBt
X2luZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX21l
dGFkYXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOworICAgICAgICBtX21ldGFkYXRhLmluZGV4
ZXMucmVtb3ZlKG5hbWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggODM0YmQ1MGZjMDUzMWRjYTdlZGQ3
NWEwYWMyZTY4YjRhMmY4MjEzYi4uMjc2M2FkMjdkNWFmYTE1ZjNkNWY3OTczMzg2NTdlOGI4NTk0
NzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCkBAIC00
OSwxOCArNTAsMTggQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShpZGJP
YmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJPYmplY3RTdG9yZShtZXRhZGF0YSwgYmFja2VuZCwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAg
ICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVj
dFN0b3JlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0aDsgfQogICAgIFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwotICAgIElEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2FjdGlvbjsgfQorICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBh
ZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNvbnRl
eHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQsIHZh
bHVlLCAwLCBlYyk7ICB9CkBAIC05NiwxMSArOTcsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBt
YXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25G
aW5pc2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhZGF0YSgpIHsgbV9tZXRhZGF0YSA9IG1fcHJl
dmlvdXNNZXRhZGF0YTsgfQogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsKKyAg
ICBJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogICAg
IHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25Gcm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1f
cHJldmlvdXNNZXRhZGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9u
OwogICAgIGJvb2wgbV9kZWxldGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBk
YzQxMzQzOWE3ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2ZiN2MwY2RmLi5kZDMzYzMxNzg0YTZkNzBl
NjE4ODRhNGE2ZWRkM2M5M2Y0MjgzNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtNzIsNiArNzIsMTQgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXAKIHsKIH0KIAorSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNv
bnN0Cit7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5
UGF0aCwgbV9hdXRvSW5jcmVtZW50KTsKKyAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCisg
ICAgICAgIG1ldGFkYXRhLmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRh
dGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggZDM3MjI1M2EzMzQzZjBiZGRkZGMxMTcz
MGIxODA2ZDE2NDI5NDVjNi4uYzNkMWM1MzMxZDk0ZjQ1ZGY3MTM4Y2YwNDk4OGE0MDFjZjU2N2M5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNDAsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6
IHB1YmxpYyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNjEs
NiArNjMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBt
X2lkID0gaWQ7IH0KIAorICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5UGF0aDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5h
bWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjQxZTU3NjQxNmQ2NzE2ZjJkZjJiZTlmMTI4MjU2YzA1
OTU3MjZiZi4uMmNkZDc2NzY3ZTRlNWU3M2U1Yzk3NTJiYjkwNThmOWJjNjVlODNiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtMTU4LDE1ICsxNTgsMjEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJh
bnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmpl
Y3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlz
KTsKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSA9IG1fZGF0YWJhc2Ut
Pm1ldGFkYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNv
bnN0X2l0ZXJhdG9yIG1kaXQgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZmluZChuYW1lKTsKKyAg
ICBBU1NFUlQobWRpdCAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworCisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUo
bWRpdC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVjdFN0b3Jl
Q3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2
b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKICAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5h
bWUsIG9iamVjdFN0b3JlKTsKKyAgICBtX29iamVjdFN0b3JlQ2xlYW51cFNldC5hZGQob2JqZWN0
U3RvcmUpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKQpAQCAtMTc3LDYgKzE4Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246
Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIFJlZlB0cjxJ
REJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBpdC0+c2Vjb25kOwogICAgICAgICBtX29iamVj
dFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgb2JqZWN0U3RvcmUtPm1hcmtEZWxldGVk
KCk7CisgICAgICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFkZChvYmplY3RTdG9yZSk7CiAg
ICAgfQogfQogCkBAIC0yMzksNiArMjQ2LDEwIEBAIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJv
cnQoKQogICAgICAgICByZXF1ZXN0LT5hYm9ydCgpOwogICAgIH0KIAorICAgIGlmIChtX21vZGUg
PT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKSB7CisgICAgICAgIGZvciAoSURCT2Jq
ZWN0U3RvcmVTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuYmVnaW4o
KTsgaXQgIT0gbV9vYmplY3RTdG9yZUNsZWFudXBTZXQuZW5kKCk7ICsraXQpCisgICAgICAgICAg
ICAoKml0KS0+cmVzZXRNZXRhZGF0YSgpOworICAgIH0KICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7
CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNGY5
NWY1YjE5ZDA5NDk4YjhjMDNhYzYyZTgxNmU5NzgzODgyMzJkMi4uMmRiZDBjZjFhZGM4NWUzZTky
ZjMyZWU4ODQ5NDI4MjY4NTUzMTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3MuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTQzLDYgKzE0NCw5IEBAIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPElEQk9iamVjdFN0b3JlPiA+
IElEQk9iamVjdFN0b3JlTWFwOwogICAgIElEQk9iamVjdFN0b3JlTWFwIG1fb2JqZWN0U3RvcmVN
YXA7CiAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPElEQk9iamVjdFN0b3JlPiA+IElEQk9i
amVjdFN0b3JlU2V0OworICAgIElEQk9iamVjdFN0b3JlU2V0IG1fb2JqZWN0U3RvcmVDbGVhbnVw
U2V0OworCiAgICAgSGFzaFNldDxJREJDdXJzb3IqPiBtX29wZW5DdXJzb3JzOwogCiAgICAgRXZl
bnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGIwYzcy
YmMzMWQ5N2NlMWQwYTA1NjhmNTM4YTczYzBiYjE1ZWMzYzYuLjRkMzkwZWE3MTRmMzM5NDk3YzU2
YjdmMWFkODQxMzk0NWM1OWJhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0ODgsNiArMTQ4OCw3
IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
ZThiNWZkMjRiMGMzZTFjZjgzYjBmZTdmNjdlOTc3ZTIyYjAyMGVkLi4yYTE5MDJjZjEzMDU3N2Rm
ZmNjOTVkYTA4YzQxMjRhYzEwNjQyNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjc0Miw2ICsxMjc0Miw3IEBACiAJCUJD
QzVCREZFMEMwRTkzMTEwMDExQzJEQiAvKiBKU0NTU1N0eWxlU2hlZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTU3R5bGVTaGVldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQzVCREZGMEMwRTkzMTEwMDExQzJEQiAvKiBKU0NTU1N0
eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTU3R5bGVT
aGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M2NEY2MDBEQ0ZCODRFMDA4
MUVGM0IgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAxMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUg
PSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUJDQzY1MTQ1MTU5Mjk0QzMwMEFDQzlFNCAvKiBJ
REJNZXRhZGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJREJNZXRhZGF0
YS5oOyBwYXRoID0gTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNDOENGQ0EwOTg2Q0QyNDAwMTQwQkYyIC8qIENvbG9yRGF0YS5n
cGVyZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ29sb3JEYXRhLmdwZXJmOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0NCQUQzQTBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNDQkFEM0UwQzE4QzE0MjAwQ0U4OTBGIC8qIEpTSFRNTENvbGxlY3Rpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbGxlY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc1NDYsNiArMTc1NDcsNyBAQAogCQkJCTk3MTJB
NThEMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJ
OTcxMkE1OEUxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJDb2RpbmcuY3BwICovLAogCQkJ
CTk3MTJBNThGMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmggKi8sCisJCQkJ
QkNDNjUxNDUxNTkyOTRDMzAwQUNDOUU0IC8qIElEQk1ldGFkYXRhLmggKi8sCiAJCQkJOTcxMkE1
OTAxNTAwNEVEQTAwNDhBRjEwIC8qIElEQk9iamVjdFN0b3JlLmNwcCAqLywKIAkJCQk5NzEyQTU5
MTE1MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuaCAqLywKIAkJCQk5NzEyQTU5MjE1
MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUuaWRsICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCmluZGV4IDc0ZGIyNThiZTIwZmViYTY3NmQ4ZDBlNDcwNjYzMWVjZjcxNGI4MGYu
LjZmYTQzZjEwMTQ1NDdiYjYyZjgyZDU4OWU4ZjZjMzgzNDIxZWU2ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKQEAgLTU2MSw2ICs1NjEsNyBAQAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCS2V5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlQYXRoLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXlSYW5nZS5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViSURCTWV0YWRhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklE
Qk9iamVjdFN0b3JlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBs
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJN
ZXRhZGF0YS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEu
aAppbmRleCA0MTBkOWZhY2Y4YTcxYTIzZGM2Mjk4OTJhZjNiYzM2ZTUxMWY0YTIzLi4xYzMzZDFi
MDgwZDc1NjgyZWRjZWQyZmRmYWJlYTRiMWVlNGQ4NjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9y
LmgiCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYklEQk1ldGFkYXRhIHsKQEAgLTYy
LDYgKzY2LDExIEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAgICAgICAgICAgICAsIHVuaXF1
ZShmYWxzZSkKICAgICAgICAgICAgICwgbXVsdGlFbnRyeShmYWxzZSkgeyB9CiAgICAgfTsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmKTsKKyAgICBvcGVyYXRvciBXZWJDb3JlOjpJREJEYXRh
YmFzZU1ldGFkYXRhKCkgY29uc3Q7CisjZW5kaWYKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCmluZGV4IDU4
NjYxZWJhYjgzZjViY2Y4YTRjYTg5YWJlN2RiODEwODRjOTA1ZjQuLjEwN2VjNjNiM2I3ODgzZTA5
ZWVhMzM3YzU5MTVjMzVhZDQwYTFkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0Lmgi
CkBAIC02MCw2ICs2MSwxMSBAQCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6fklEQkRhdGFiYXNl
QmFja2VuZFByb3h5KCkKIHsKIH0KIAorSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6bWV0YWRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYklEQkRhdGFi
YXNlLT5tZXRhZGF0YSgpOworfQorCiBTdHJpbmcgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om5h
bWUoKSBjb25zdAogewogICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5uYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHku
aAppbmRleCBlODE3ZWRmMTk5NWRhMmE4NjdlOTU1OTA2ZDk4OTcwZWIzNDRmOTJiLi5iMDU1NTJj
Y2JmMTE3MjA1Y2NlNTc0Y2U5YWFkMjg1ZjllYmJlZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQyLDYgKzQy
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2U+KTsKICAg
ICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpOwogCisgICAgdmlydHVhbCBXZWJD
b3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBT
dHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3Rv
cmVOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggMjY2MmY4MDFmNzVmMjBlMzE1MWU0ZTg3MDhiNWVmYTcz
NmNjN2FlNi4uMzk4MDNlMTQ1OTNlZDczNDA5NmFhNmM3ODMyODU5Y2MyYjZlMjVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBA
IC0zMiw5ICszMiwxMSBAQAogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJXZWJJ
REJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlSW1wbC5oIgogI2luY2x1
ZGUgIldlYklEQlRyYW5zYWN0aW9uSW1wbC5oIgogCkBAIC01MSw2ICs1MywxMSBAQCBXZWJJREJE
YXRhYmFzZUltcGw6On5XZWJJREJEYXRhYmFzZUltcGwoKQogewogfQogCitXZWJJREJNZXRhZGF0
YSBXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9k
YXRhYmFzZUJhY2tlbmQtPm1ldGFkYXRhKCk7Cit9CisKIFdlYlN0cmluZyBXZWJJREJEYXRhYmFz
ZUltcGw6Om5hbWUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAppbmRleCAxOTBkN2UyZGMzMjliMDZmYjNhZTZmODk4NGIzMWIyZDI1MmJhYjgyLi41ZTk4OWUw
MGVlZGJhMjAxYmRlZDBhNmRiNzk3OTU3NWJlOTUwOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNDAsNiArNDAsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTsKIGNsYXNz
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOworY2xhc3MgV2ViSURCRGF0YWJhc2VNZXRhZGF0YTsK
IGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKQEAg
LTQ5LDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdlYklEQkRhdGFiYXNlSW1wbChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVh
bCB+V2ViSURCRGF0YWJhc2VJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1l
dGFkYXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIHZlcnNpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYkRPTVN0
cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTA2M2VmMGZmMzNiYjhh
NmM2ZDJlZWI4MDY1NzBiMDFmZDU5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJREJNZXRhZGF0YS5oIgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgorI2lu
Y2x1ZGUgIldlYklEQktleVBhdGguaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRh
dGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCit7CisgICAg
bmFtZSA9IG1ldGFkYXRhLm5hbWU7CisgICAgdmVyc2lvbiA9IG1ldGFkYXRhLnZlcnNpb247Cisg
ICAgb2JqZWN0U3RvcmVzID0gV2ViVmVjdG9yPE9iamVjdFN0b3JlPihzdGF0aWNfY2FzdDxzaXpl
X3Q+KG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5zaXplKCkpKTsKKworICAgIHNpemVfdCBpID0gMDsK
KyAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVy
YXRvciBzdG9yZUl0ZXJhdG9yID0gbWV0YWRhdGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7IHN0b3Jl
SXRlcmF0b3IgIT0gbWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK3N0b3JlSXRlcmF0b3Ip
IHsKKyAgICAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUgPSBz
dG9yZUl0ZXJhdG9yLT5zZWNvbmQ7CisgICAgICAgIE9iamVjdFN0b3JlIHdlYk9iamVjdFN0b3Jl
OworICAgICAgICB3ZWJPYmplY3RTdG9yZS5uYW1lID0gb2JqZWN0U3RvcmUubmFtZTsKKyAgICAg
ICAgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCA9IG9iamVjdFN0b3JlLmtleVBhdGg7CisgICAgICAg
IHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQgPSBvYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50
OworICAgICAgICB3ZWJPYmplY3RTdG9yZS5pbmRleGVzID0gV2ViVmVjdG9yPEluZGV4PihzdGF0
aWNfY2FzdDxzaXplX3Q+KG9iamVjdFN0b3JlLmluZGV4ZXMuc2l6ZSgpKSk7CisKKyAgICAgICAg
c2l6ZV90IGogPSAwOworICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4
TWFwOjpjb25zdF9pdGVyYXRvciBpbmRleEl0ZXJhdG9yID0gb2JqZWN0U3RvcmUuaW5kZXhlcy5i
ZWdpbigpOyBpbmRleEl0ZXJhdG9yICE9IG9iamVjdFN0b3JlLmluZGV4ZXMuZW5kKCk7ICsraW5k
ZXhJdGVyYXRvcikgeworICAgICAgICAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXgg
PSBpbmRleEl0ZXJhdG9yLT5zZWNvbmQ7CisgICAgICAgICAgICBJbmRleCB3ZWJJbmRleDsKKyAg
ICAgICAgICAgIHdlYkluZGV4Lm5hbWUgPSBpbmRleC5uYW1lOworICAgICAgICAgICAgd2ViSW5k
ZXgua2V5UGF0aCA9IGluZGV4LmtleVBhdGg7CisgICAgICAgICAgICB3ZWJJbmRleC51bmlxdWUg
PSBpbmRleC51bmlxdWU7CisgICAgICAgICAgICB3ZWJJbmRleC5tdWx0aUVudHJ5ID0gaW5kZXgu
bXVsdGlFbnRyeTsKKyAgICAgICAgICAgIHdlYk9iamVjdFN0b3JlLmluZGV4ZXNbaisrXSA9IHdl
YkluZGV4OworICAgICAgICB9CisgICAgICAgIG9iamVjdFN0b3Jlc1tpKytdID0gd2ViT2JqZWN0
U3RvcmU7CisgICAgfQorfQorCitXZWJJREJNZXRhZGF0YTo6b3BlcmF0b3IgSURCRGF0YWJhc2VN
ZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBkYihuYW1lLCB2ZXJz
aW9uKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3Jlcy5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb25zdCBPYmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZSA9IG9iamVjdFN0
b3Jlc1tpXTsKKyAgICAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSh3ZWJP
YmplY3RTdG9yZS5uYW1lLCB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoLCB3ZWJPYmplY3RTdG9yZS5h
dXRvSW5jcmVtZW50KTsKKworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHdlYk9iamVj
dFN0b3JlLmluZGV4ZXMuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgIGNvbnN0IEluZGV4IHdl
YkluZGV4ID0gd2ViT2JqZWN0U3RvcmUuaW5kZXhlc1tqXTsKKyAgICAgICAgICAgIElEQkluZGV4
TWV0YWRhdGEgaW5kZXgod2ViSW5kZXgubmFtZSwgd2ViSW5kZXgua2V5UGF0aCwgd2ViSW5kZXgu
dW5pcXVlLCB3ZWJJbmRleC5tdWx0aUVudHJ5KTsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmlu
ZGV4ZXMuc2V0KGluZGV4Lm5hbWUsIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICBkYi5vYmpl
Y3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlLm5hbWUsIG9iamVjdFN0b3JlKTsKKyAgICB9CisgICAg
cmV0dXJuIGRiOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllOGIxNDc5NTI1NTMxNTcwMGUyNmYzYWYxNTE4
NDAxMmY1YmNiNWQuLjEyNjIyOGE1NWM5Mjk2YTY3ODcxN2ZmNzU1NmE5NDIxOTYwNTkzYjkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMi0wNi0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJv
bnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRt
bDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRh
LmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZmlyc3RPcGVuLnJlcXVlc3Qu
b25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAo
Zmlyc3RPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAg
KGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4pOgorICAg
ICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFu
cy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcyk6
CisgICAgICAgIChzZWNvbmRPcGVuKToKKyAgICAgICAgKHRoaXJkT3Blbi5yZXF1ZXN0Lm9uc3Vj
Y2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmFib3J0KToKKyAgICAgICAgKHRoaXJkT3Bl
bi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgICh0aGlyZE9w
ZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuKToKKyAgICAgICAgKGZv
dXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21w
bGV0ZSk6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAg
ICAoZm91cnRoT3Blbik6CisgICAgICAgIChjaGVja1N0YXRlKToKKwogMjAxMi0wNi0xOSAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bTWFjXSBT
a2lwIG9uZSBtb3JlIGNyYXNoaW5nIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQzNmQ0NzVhYTQy
N2JhY2ZhZmYxMzQ3YTM2NDFmODVmOTc4ZDI3OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg4
IEBACitUZXN0IEluZGV4ZWREQiBkYXRhYmFzZSBtZXRhZGF0YSBtdXRhdGlvbi9zbmFwc2hvdHRp
bmcKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHNlbGYuaW5k
ZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYubW96SW5kZXhlZERCIHx8IHNl
bGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitkYm5hbWUgPSBzZWxmLmxvY2F0
aW9uLnBhdGhuYW1lCityZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkK
KworZmlyc3RPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVj
dGlvbjEgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb24xLnNldFZlcnNpb24o
JzEnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0
aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24xc3RvcmUxLmNyZWF0
ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24xLnZlcnNpb24gaXMgIjEi
CitQQVNTIGNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgY29u
bmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMQorQ29ubmVjdGlvbidzIHByb3Bl
cnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uMS5jbG9zZSgp
CisKK3NlY29uZE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25u
ZWN0aW9uMiA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjIuc2V0VmVyc2lv
bignMicpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMi5jcmVhdGVPYmplY3RT
dG9yZSgnc3RvcmUyJykKK2Nvbm5lY3Rpb24yc3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0
b3JlMScpCitjb25uZWN0aW9uMnN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgyJywgJ3BhdGgnKQor
UEFTUyBjb25uZWN0aW9uMi52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0aW9uMi5vYmplY3RT
dG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMu
bGVuZ3RoIGlzIDIKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRl
ZCBvbiBjbG9zZQorY29ubmVjdGlvbjIuY2xvc2UoKQorCit0aGlyZE9wZW4oKToKK3JlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0aW9uMyA9IHJlcXVlc3QucmVzdWx0City
ZXF1ZXN0ID0gY29ubmVjdGlvbjMuc2V0VmVyc2lvbignMycpCit0cmFucyA9IHJlcXVlc3QucmVz
dWx0Citjb25uZWN0aW9uMy5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUzJykKK2Nvbm5lY3Rpb24z
c3RvcmUxID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlMScpCitjb25uZWN0aW9uM3N0b3JlMS5j
cmVhdGVJbmRleCgnaW5kZXgzJywgJ3BhdGgnKQorUEFTUyBjb25uZWN0aW9uMy52ZXJzaW9uIGlz
ICIzIgorUEFTUyBjb25uZWN0aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitQQVNT
IGNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKK0Nvbm5lY3Rpb24ncyBw
cm9wZXJ0aWVzIHNob3VsZCBiZSByZXZlcnRlZCBvbiBhYm9ydAordHJhbnMuYWJvcnQoKQorQ29u
bmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25u
ZWN0aW9uMy5jbG9zZSgpCisKK2ZvdXJ0aE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYm5hbWUpCitjb25uZWN0aW9uNCA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVj
dGlvbjQuc2V0VmVyc2lvbignNCcpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9u
NC5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmU0JykKK2Nvbm5lY3Rpb240c3RvcmUxID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlMScpCitjb25uZWN0aW9uNHN0b3JlMS5jcmVhdGVJbmRleCgnaW5k
ZXg0JywgJ3BhdGgnKQorUEFTUyBjb25uZWN0aW9uNC52ZXJzaW9uIGlzICI0IgorUEFTUyBjb25u
ZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitQQVNTIGNvbm5lY3Rpb240c3Rv
cmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3Vs
ZCBiZSBzbmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjQuY2xvc2UoKQorCitjaGVja1N0
YXRlKCk6CitQQVNTIGNvbm5lY3Rpb24xLnZlcnNpb24gaXMgIjEiCitQQVNTIGNvbm5lY3Rpb24x
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK1BBU1MgY29ubmVjdGlvbjFzdG9yZTEuaW5k
ZXhOYW1lcy5sZW5ndGggaXMgMQorCitQQVNTIGNvbm5lY3Rpb24yLnZlcnNpb24gaXMgIjIiCitQ
QVNTIGNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVj
dGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMgorCitQQVNTIGNvbm5lY3Rpb24zLnZl
cnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlz
IDIKK1BBU1MgY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMgorCitQQVNT
IGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNvbm5lY3Rpb240Lm9iamVjdFN0b3Jl
TmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5n
dGggaXMgMworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEu
aHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTQyY2ZlNTllYzQ1ZWMwNzRlODNlYjM4YmY1OGJmMmIxYjg1MmUzZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvbWV0YWRhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0
YWRhdGEuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRh
dGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTRjNDdjNzExZWVmYjU4MjY4NzZhMWMyZWMzZWVjZjAwMDdlZWM0
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9tZXRhZGF0YS5qcwpAQCAtMCwwICsxLDE2NiBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0
cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2Rlc2Ny
aXB0aW9uKCJUZXN0IEluZGV4ZWREQiBkYXRhYmFzZSBtZXRhZGF0YSBtdXRhdGlvbi9zbmFwc2hv
dHRpbmciKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmVtb3ZlVmVuZG9yUHJlZml4ZXMo
KTsKKyAgICBldmFsQW5kTG9nKCJkYm5hbWUgPSBzZWxmLmxvY2F0aW9uLnBhdGhuYW1lIik7Cisg
ICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUp
Iik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmaXJzdE9wZW47Cit9CisKK2Z1bmN0aW9uIGZpcnN0T3Blbigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmaXJzdE9wZW4oKToiKTsKKyAgICBldmFs
QW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xID0gcmVxdWVz
dC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24xLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJy
b3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xc3RvcmUxID0gY29ubmVjdGlvbjEuY3JlYXRlT2Jq
ZWN0U3RvcmUoJ3N0b3JlMScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
MXN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgxJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24xLnZlcnNpb24iLCAiMSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCIsICIxIik7CisKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJl
IHNuYXBzaG90dGVkIG9uIGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjEuY2xvc2UoKSIpOworICAgICAgICAgICAgICAgIHNlY29uZE9wZW4oKTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gc2Vjb25kT3Blbigp
Cit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJzZWNvbmRPcGVuKCk6Iik7CisgICAgZXZh
bEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMiA9IHJlcXVl
c3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uMi5z
ZXRWZXJzaW9uKCcyJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAg
ICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUyJyki
KTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUxID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ3N0b3JlMScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9u
MnN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgyJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24yLnZlcnNpb24iLCAiMiIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIi
KTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCIsICIyIik7CisKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJv
cnRDYWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJl
IHNuYXBzaG90dGVkIG9uIGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjIuY2xvc2UoKSIpOworICAgICAgICAgICAgICAgIHRoaXJkT3BlbigpOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0aGlyZE9wZW4oKQor
eworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZygidGhpcmRPcGVuKCk6Iik7CisgICAgZXZhbEFu
ZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMyA9IHJlcXVlc3Qu
cmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uMy5zZXRW
ZXJzaW9uKCczJykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUzJykiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxID0gdHJhbnMub2JqZWN0
U3RvcmUoJ3N0b3JlMScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uM3N0
b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgzJywgJ3BhdGgnKSIpOworCisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24zLnZlcnNpb24iLCAiMyIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlKCJjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0
aCIsICIzIik7CisKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSB1bmV4cGVjdGVkQ29t
cGxldGVDYWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJl
IHNuYXBzaG90dGVkIG9uIGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjMuY2xvc2UoKSIpOworICAgICAgICAgICAgICAgIGZvdXJ0aE9wZW4oKTsKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hv
dWxkIGJlIHJldmVydGVkIG9uIGFib3J0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFu
cy5hYm9ydCgpIik7CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gZm91cnRoT3Bl
bigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJmb3VydGhPcGVuKCk6Iik7CisgICAg
ZXZhbEFuZExvZygicmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNCA9IHJl
cXVlc3QucmVzdWx0Iik7CisgICAgICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9u
NC5zZXRWZXJzaW9uKCc0JykiKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmU0
JykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxID0gdHJhbnMu
b2JqZWN0U3RvcmUoJ3N0b3JlMScpIik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0
aW9uNHN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXg0JywgJ3BhdGgnKSIpOworCisgICAgICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb240LnZlcnNpb24iLCAiNCIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjMiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVz
Lmxlbmd0aCIsICIzIik7CisKKyAgICAgICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVk
QWJvcnRDYWxsYmFjazsKKyAgICAgICAgICAgIHRyYW5zLm9uY29tcGxldGUgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxk
IGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygi
Y29ubmVjdGlvbjQuY2xvc2UoKSIpOworICAgICAgICAgICAgICAgIGNoZWNrU3RhdGUoKTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisgICAgfTsKK30KKworZnVuY3Rpb24gY2hlY2tTdGF0
ZSgpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJjaGVja1N0YXRlKCk6Iik7CisKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24xLnZlcnNpb24iLCAiMSIpOworICAg
IHNob3VsZEJlKCJjb25uZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7Cisg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsK
KyAgICBkZWJ1ZygiIik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb24y
LnZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMi5vYmplY3RTdG9yZU5h
bWVzLmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4
TmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImNvbm5lY3Rpb24zLnZlcnNpb24iLCAiMiIpOworICAgIHNob3VsZEJlKCJjb25u
ZWN0aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIyIik7CisgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBkZWJ1ZygiIik7
CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImNvbm5lY3Rpb240LnZlcnNpb24iLCAiNCIp
OworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIz
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwg
IjMiKTsKKyAgICBkZWJ1ZygiIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordGVzdCgp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148690</attachid>
            <date>2012-06-20 17:32:47 -0700</date>
            <delta_ts>2012-06-21 10:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120620173247.patch</filename>
            <type>text/plain</type>
            <size>58752</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjcwYThiNmUyYTQwZmFm
OGEzYjU0YWI5Zjg4YWNkNTU2ZDM0Y2Y1OC4uY2Q4NTc4OTgzY2QyNDA2NDJhNjMxZTA3YmVjOGYw
ODFkMzE5ZWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSBhIG5ldyB0
eXBlIChJREJEYXRhYmFzZU1ldGFkYXRhKSB0aGF0IGNhcHR1cmVzIHRoZSAic2NoZW1hIiBvZiBh
bgorICAgICAgICBJREIgZGF0YWJhc2UgKG5hbWUsIHZlcnNpb24sIHByb3BlcnRpZXMgb2Ygc3Rv
cmVzLCBwcm9wZXJ0aWVzIG9mIGluZGV4ZXMpLgorICAgICAgICBBZGQgYSBtZXRob2QgZm9yIHRo
ZSBmcm9udCBlbmQgdG8gcmVxdWVzdCB0aGlzIGZyb20gdGhlIGJhY2sgZW5kIG9uY2UgdXAKKyAg
ICAgICAgZnJvbnQgdG8gYXZvaWQgbGF0ZXIgY2FsbHMgKHdoaWNoIG1heSBiZSBzbG93IElQQyBj
YWxscyBpbiBwb3J0cykuIEltcGxlbWVudAorICAgICAgICBJREIgc3BlYyBsb2dpYyB0aGF0IHRo
ZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGZvciBhIHBhcnRpY3VsYXIgSURCRGF0YWJhc2UK
KyAgICAgICAgY29ubmVjdGlvbiwgYW5kIG9ubHkgY2hhbmdlIHdpdGhpbiBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLCBhbmQgdGhlIHNwZWMncworICAgICAgICBmdW5reSByZXF1aXJlbWVu
dCBmb3IgYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMuCisKKyAgICAgICAgVGVz
dDogc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKTogRmV0Y2ggbWV0YWRhdGEgZnJvbSBiYWNrIGVuZCB3aGVuIGNvbm5lY3Rp
b24gaXMgY3JlYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlv
bkNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uRmlu
aXNoZWQpOiBVcGRhdGUgbWV0YWRhdGEgYXQgdGhlIGVuZCBvZiBhIHRyYW5zYWN0aW9uIGluIAor
ICAgICAgICBjYXNlIGl0IHdhcyByb2xsZWQgYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1l
bmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6IFVwZGF0ZSBsb2NhbCBjb3B5IG9mIG1ldGFkYXRhLgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKTogVXBkYXRlIGxvY2Fs
IGNvcHkgb2YgbWV0YWRhdGEuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKTogTW92ZSBpbXBsZW1l
bnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVy
c2lvbik6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5kLgorICAgICAgICAoSURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om1ldGFkYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKTogQ29uc3RydWN0
IGEgbWV0YWRhdGEgc25hcHNob3QuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHA6IFN0b3JlIGEgY29weSBvZiB0aGUgbWV0YWRhdGEsIHdoaWNoIHdpbGwgbmV2ZXIK
KyAgICAgICAgY2hhbmdlIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGluZGV4LgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6OklEQkluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8g
ZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9iamVjdFN0b3JlKTogUmV0
dXJuIFJlZlB0ciAodW5yZWxhdGVkIHRpZHlpbmcpLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGgpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojp1bmlxdWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250
LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KTogTW92ZSBpbXBs
ZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6IENvbnN0cnVjdCBhIG1ldGFkYXRh
IHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDogQWRkZWQgbmV3IHN0
cnVjdHMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
TWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VNZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6CisgICAg
ICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2Jq
ZWN0U3RvcmUpOiBTdG9yZSBhICJsaXZlIiBjb3B5IG9mIHRoZSBtZXRhZGF0YSwgYW5kCisgICAg
ICAgIGFuZCBjb3B5IGluIGNhc2Ugb2YgYW4gYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKTogTW92
ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgpOiBVcGRhdGUgbWV0YWRhdGEgdG8gaW5jbHVkZSBuZXcgaW5k
ZXguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOiBQYXNzIGFsb25n
IG1ldGFkYXRhIHRvIGluc3RhbmNlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KTogRGVsZXRlIGluZGV4IGZyb20gbWV0YWRhdGEuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKTogTW92ZSBpbXBsZW1lbnRhdGlv
biB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNh
Y3Rpb24pOiBSZXR1cm4gUmVmUHRyICh1bnJlbGF0ZWQgdGlkeWluZykuCisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCk6IE1vdmUgaW1wbGVtZW50YXRpb24g
dG8gZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnJlc2V0TWV0
YWRhdGEpOiBJbiBjYXNlIG9mIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGFib3J0LAorICAg
ICAgICByb2xsIGJhY2sgdGhlIG1ldGFkYXRhLgorICAgICAgICAoSURCT2JqZWN0U3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEp
OiBDb25zdHJ1Y3QgYSBtZXRhZGF0YSBzbmFwc2hvdC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKTogUGFzcyBhbG9uZyBtZXRhZGF0
YSB0byBpbnN0YW5jZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQpOiBUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcgdHJh
bnNhY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVE
ZWxldGVkKTpUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6IFJldmVydCBzdG9yZXMgbWV0YWRh
dGEgcG90ZW50aWFsbHkgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMTkgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFzc2VydGlvbiBmb3IgZXZlbnQncyB0YXJn
ZXQgaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI2YzM3ZTFjOWE2Njk3
MzM3NmUzZmE3OWNjNmI5ZWE1OTE0MzQ2MTIuLjViMmU1ZThmMDE0YmU2MDIwNWRiYjhlY2Y1YzE4
NjNkNzMxZjVkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTItMDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMg
cm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGNvbnZlcnNpb25zIHRvL2Zyb20gV2ViQ29yZSBJREIgbWV0YWRhdGEgdHlwZSBhbmQg
cGx1bWJpbmcgZm9yIHJvdXRpbmcgdGhlCisgICAgICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6bWV0YWRhdGEoKSBjYWxsIHRocm91Z2ggdGhlIHB1YmxpYyBBUEkuLgorCisgICAgICAg
ICogV2ViS2l0Lmd5cDogTmV3IGZpbGUgYWRkZWQuCisgICAgICAgICogcHVibGljL1dlYklEQk1l
dGFkYXRhLmg6IENvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJJREJNZXRhZGF0YSk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcDogUGx1bWJpbmcuCisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oOiBQbHVtYmluZy4KKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDogUGx1bWJpbmcu
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6IFBsdW1iaW5n
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklEQkRhdGFiYXNlSW1wbCk6CisgICAg
ICAgICogc3JjL1dlYklEQk1ldGFkYXRhLmNwcDogQWRkZWQgLSBjb252ZXJzaW9uIGZ1bmN0aW9u
cy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpX
ZWJJREJNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRv
ciBJREJEYXRhYmFzZU1ldGFkYXRhKToKKwogMjAxMi0wNi0xOSAgS2VubmV0aCBSdXNzZWxsICA8
a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMDc3
Mi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cAppbmRleCAyMDA4ZWQ4YjRmY2JjYmI1NzMzNjRkYTk3ZWE4MGQwOWJkZGIxODNhLi4wYTQ5NDAw
YmI4NjU1ZWFlOTA0ZmNlNjlkOWVkN2I0MDg2YmI3ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC02NCw2ICs2NCw3IEBAIElE
QkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlCiAgICAgLy8gV2UgcGFzcyBhIHJlZmVyZW5jZSBvZiB0aGlz
IG9iamVjdCBiZWZvcmUgaXQgY2FuIGJlIGFkb3B0ZWQuCiAgICAgcmVsYXhBZG9wdGlvblJlcXVp
cmVtZW50KCk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKHRoaXMpOworICAgIG1fbWV0YWRhdGEgPSBtX2JhY2tlbmQtPm1ldGFkYXRh
KCk7CiB9CiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQpAQCAtODEsNiArODIsNyBAQCB2
b2lkIElEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNyZWF0ZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAg
ICAgQVNTRVJUKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik7CiAgICAgICAgIG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247CisgICAgICAgIG1fbWV0YWRhdGEgPSBt
X2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQogfQogCkBAIC05MywxMiArOTUsMjIgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCiAgICAgaWYgKHRyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSkgewogICAgICAg
ICBBU1NFUlQobV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPT0gdHJhbnNhY3Rpb24pOwogICAg
ICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9IDA7CisgICAgICAgIG1fbWV0YWRhdGEg
PSBtX2JhY2tlbmQtPm1ldGFkYXRhKCk7CiAgICAgfQogCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5n
ICYmIG1fdHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKICAgICAgICAgY2xvc2VDb25uZWN0aW9uKCk7
CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdAoreworICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5h
bWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CisgICAgZm9yIChJREJEYXRhYmFzZU1ldGFk
YXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLm9iamVj
dFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytp
dCkKKyAgICAgICAgb2JqZWN0U3RvcmVOYW1lcy0+YXBwZW5kKGl0LT5maXJzdCk7CisgICAgb2Jq
ZWN0U3RvcmVOYW1lcy0+c29ydCgpOworICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVh
c2UoKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9u
cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbikgewpAQCAtMTM2LDcgKzE0OCwxMCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVj
dFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFz
ZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CisgICAgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KTsKKyAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZShtZXRhZGF0YSwgb2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChuYW1l
LCBtZXRhZGF0YSk7CisKICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3Rv
cmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVs
ZWFzZSgpOwogfQpAQCAtMTQ5LDggKzE2NCwxMCBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0K
IAogICAgIG1fYmFja2VuZC0+ZGVsZXRlT2JqZWN0U3RvcmUobmFtZSwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwotICAgIGlmICghZWMpCisgICAgaWYgKCFlYykg
ewogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVEZWxldGVk
KG5hbWUpOworICAgICAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5yZW1vdmUobmFtZSk7Cisg
ICAgfQogfQogCiBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0PiBJREJEYXRhYmFz
ZTo6c2V0VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggYWRhZDMyZDg2YWM2NDc4NWYwZGRiNjE5
MDdmZWFjY2M5YzBkOTE0Ni4uMjAwNTVhMjgyYjI1NTIwNWI0ZGRjODk4NmZmZTgwNzMxNjU0YWEw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVj
dFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNTcsOSArNTgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB0cmFuc2FjdGlv
bkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uKik7CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAot
ICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAg
ICBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dmVyc2lvbigpOyB9
Ci0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNrZW5kLT5vYmplY3RTdG9yZU5hbWVzKCk7IH0KKyAgICBjb25zdCBTdHJp
bmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLnZlcnNpb247IH0KKyAg
ICBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAog
ICAgIC8vIEZJWE1FOiBUcnkgdG8gbW9kaWZ5IHRoZSBjb2RlIGdlbmVyYXRvciBzbyB0aGlzIGlz
IHVubmVlZGVkLgogICAgIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGNyZWF0
ZU9iamVjdFN0b3JlKG5hbWUsIERpY3Rpb25hcnkoKSwgZWMpOyB9CkBAIC04Nyw2ICs4OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdDsKIAogICAgIHZvaWQgcmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cygpOworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+KTsKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVu
dCwgZWMpOyB9CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwpAQCAtMTA1LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsb3NlQ29ubmVj
dGlvbigpOwogCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uOwogICAgIEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb24qPiBtX3RyYW5zYWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
MTJmMjkwMjVhYjNhODk1NjJjNWUxMTk0ZjM5ODAwN2RjZDY3NjBmYS4uZDdkNWVlM2ZlYTFjYWIy
ZmNlM2E0MDI3ZTkwZWRjYTY1ZDliZTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEz
Myw2ICsxMzMsMTQgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFja2luZ1N0b3Jl
OwogfQogCitJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFk
YXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwg
bV92ZXJzaW9uKTsKKyAgICBmb3IgKE9iamVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0
KQorICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29u
ZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdAogewogICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzID0gRE9N
U3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggY2ZiY2EzYjYzNTMw
NjZhNzc1YzRjMTc4MmZmMTA0MTk2OWRkOWJhMi4uMWZlY2QzYmM0ZTUwYTI5Y2JkNmQyMWE2NmZk
MGFiN2IzNDdmMjk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwog
ICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAorICAg
IHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyB2ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDI0ODA3NDc0YjhjY2YwYmE5ODc0NmY5MGZmNjcw
MGQ0NjY3YjQzOS4uZDU4MTc3N2Y5NTE3M2IzZDVkZTE1Y2JjMTFjMzBjMGYxNDQ2MGVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgSURCRGF0
YWJhc2VDYWxsYmFja3M7CiBjbGFzcyBJREJLZXlQYXRoOwogY2xhc3MgSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwor
c3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKQEAgLTUyLDYgKzUzLDcgQEAgY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2UKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UoKSB7IH0KIAorICAgIHZpcnR1
YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHZlcnNpb24oKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJJbmRleC5jcHAKaW5kZXggZDZkNzYyMmJiMmE0YTliZDhlN2VhZDA4OWRmYjU1NzQ4YjFi
ZGVhMi4uZDY4YTQwNmM5YmJjM2E1MGM5YzY0NWMzNmZlMWU1YzIwNDBhYTFlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcApAQCAtNDIsOCArNDIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBk
ZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpORVhUOwogCi1JREJJbmRleDo6SURCSW5kZXgo
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0
b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9i
YWNrZW5kKGJhY2tlbmQpCitJREJJbmRleDo6SURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgbWV0YWRhdGEsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
LCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX2JhY2tlbmQoYmFja2VuZCkK
ICAgICAsIG1fb2JqZWN0U3RvcmUob2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKaW5kZXggYzdlNWY3OGNmYjU3NjE2NzZmNjA2MDljZTM2
OTZlNDkwODRhOGZjMi4uY2I2ODhjNjE5YWU0ZTc1MWYwMmFjNGQwM2NjZGYyNmNhZDEzNDg5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCkBAIC0zMCw2
ICszMCw4IEBACiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURC
TWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlJl
cXVlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC00MiwxOCArNDQsMTggQEAgY2xhc3MgSURCT2JqZWN0U3RvcmU7CiAKIGNsYXNz
IElEQkluZGV4IDogcHVibGljIFJlZkNvdW50ZWQ8SURCSW5kZXg+IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleD4g
Y3JlYXRlKGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3Jl
LCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkluZGV4KGJhY2tlbmQsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4KG1ldGFkYXRhLCBiYWNrZW5kLCBv
YmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAgfklEQkluZGV4KCk7CiAKICAg
ICAvLyBJbXBsZW1lbnQgdGhlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNrZW5kLT5uYW1lKCk7IH0KLSAgICBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUoKSBj
b25zdCB7IHJldHVybiBtX29iamVjdFN0b3JlLmdldCgpOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsgfQotICAg
IGJvb2wgdW5pcXVlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT51bmlxdWUoKTsgfQotICAg
IGJvb2wgbXVsdGlFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bXVsdGlFbnRyeSgp
OyB9CisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5u
YW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFN0b3JlOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBh
dGgoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBG
SVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRl
ZC4KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3Io
Y29udGV4dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04Myw4ICs4
NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVl
OyB9CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+LCBJREJPYmplY3RTdG9yZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5k
ZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiwgSURCT2JqZWN0U3RvcmUqLCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5k
ZXhNZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAppbmRleCA5ODYxNGRmYjM1MGQ0MmIyNjhiYzQyZThiNjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZh
YWYyZjUyNDIzNWY4NTA3YTZlZjQ4ZTViMmVjN2Q5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRl
ICJJREJUcmFjaW5nLmgiCiAKQEAgLTY3LDYgKzY4LDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6
On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAorSURCSW5kZXhNZXRhZGF0YSBJREJJbmRl
eEJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0
YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2
b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24s
IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3
ZDE3ZTQwMWJlMGI4YTNkMzU3ZDBkZGQwNzNmMDJmZWQyNi4uNjQxMGNiYWMzZmM2NDkwYTllNDVm
ZDg3YmJkMGM5MTYxMzNlMWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw2ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFkZGluZ0tleUFsbG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29u
c3QgSURCS2V5KiBwcmltYXJ5S2V5ID0gMCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4
QmFja2VuZEludGVyZmFjZS4KKyAgICB2aXJ0dWFsIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAg
ICAgdmlydHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYmVm
NzNiY2U1ZDAzMWYxYWI0N2VkMzFiYThhMjNiZDgxNjY4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEs
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJREJNZXRhZGF0YV9oCisjZGVmaW5lIElEQk1ldGFkYXRhX2gKKwor
I2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsK
Kworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEo
KSB7IH0KKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9u
KHZlcnNpb24pIHsgfQorICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0
U3RvcmVNYXA7CisgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgeworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7
IH0KKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUo
bmFtZSkKKyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVu
dChhdXRvSW5jcmVtZW50KSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtl
eVBhdGg7CisgICAgYm9vbCBhdXRvSW5jcmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgSURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsK
K307CisKK3N0cnVjdCBJREJJbmRleE1ldGFkYXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkg
eyB9CisgICAgSURCSW5kZXhNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDog
bmFtZShuYW1lKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUo
dW5pcXVlKQorICAgICAgICAsIG11bHRpRW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5n
IG5hbWU7CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJv
b2wgbXVsdGlFbnRyeTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjZW5kaWYgLy8gSURCVHJhY2luZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMmFmY2IzMGUxNDg1MDJk
OTFiNzg3NmNkYzYxMjJiZjJmNTI1NDhkOC4uNzlhNzk4MDU1MGJkNjJlNzlmOWQzYWQ4ZmY2ZmI4
OTk0ZmQ4YjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJJbmRleC5o
IgogI2luY2x1ZGUgIklEQktleS5oIgpAQCAtNDQsOCArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKIAotSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uKQotICAgIDogbV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQor
SURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
aWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0
YWRhdGEobWV0YWRhdGEpCisgICAgLCBtX3ByZXZpb3VzTWV0YWRhdGEobWV0YWRhdGEpCisgICAg
LCBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0
aW9uKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQogewpAQCAtNTUsMzQgKzU4LDE0IEBAIElEQk9i
amVjdFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gaWRiT2JqCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiB9CiAK
LVN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJ
REJPYmplY3RTdG9yZTo6bmFtZSIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKLX0K
LQotUGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKLXsK
LSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjprZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1f
YmFja2VuZC0+a2V5UGF0aCgpOwotfQotCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9i
amVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVj
dFN0b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+aW5kZXhOYW1lcygp
OwotfQotCi1JREJUcmFuc2FjdGlvbiogSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29u
c3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbiIpOwotICAg
IHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwotfQotCi1ib29sIElEQk9iamVjdFN0b3JlOjph
dXRvSW5jcmVtZW50KCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjph
dXRvSW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVudCgpOwor
ICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3Jl
YXRlKCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0
YS5pbmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZp
cnN0KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7CisgICAgcmV0dXJuIGluZGV4TmFtZXMucmVs
ZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzAzLDggKzI4NiwxMCBAQCBQYXNzUmVm
UHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBS
ZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVs
ZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBJREJJbmRleE1ldGFkYXRh
IG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRy
PElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2Vu
ZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAu
c2V0KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFk
YXRhKTsKIAogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zMzAsNyArMzE1LDEw
IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4
QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbV9tZXRh
ZGF0YS5pbmRleGVzLmZpbmQobmFtZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbV9tZXRhZGF0YS5p
bmRleGVzLmVuZCgpKTsKKworICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6
Y3JlYXRlKG1kaXQtPnNlY29uZCwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFu
c2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJl
dHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zNDksNiArMzM3LDkgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7CiAgICAgICAgICAgICBt
X2luZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX21l
dGFkYXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOworICAgICAgICBtX21ldGFkYXRhLmluZGV4
ZXMucmVtb3ZlKG5hbWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggODM0YmQ1MGZjMDUzMWRjYTdlZGQ3
NWEwYWMyZTY4YjRhMmY4MjEzYi4uMjc2M2FkMjdkNWFmYTE1ZjNkNWY3OTczMzg2NTdlOGI4NTk0
NzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1l
dGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCkBAIC00
OSwxOCArNTAsMTggQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShpZGJP
YmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJPYmplY3RTdG9yZShtZXRhZGF0YSwgYmFja2VuZCwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAg
ICAgfklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVj
dFN0b3JlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBQYXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEua2V5UGF0aDsgfQogICAgIFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0OwotICAgIElEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbigpIGNvbnN0OwotICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
cmFuc2FjdGlvbjsgfQorICAgIGJvb2wgYXV0b0luY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGEuYXV0b0luY3JlbWVudDsgfQogCiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBh
ZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gYWRkKGNvbnRl
eHQsIHZhbHVlLCAwLCBlYyk7ICB9CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBwdXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gcHV0KGNvbnRleHQsIHZh
bHVlLCAwLCBlYyk7ICB9CkBAIC05NiwxMSArOTcsMTQgQEAgcHVibGljOgogCiAgICAgdm9pZCBt
YXJrRGVsZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25G
aW5pc2hlZCgpOworICAgIHZvaWQgcmVzZXRNZXRhZGF0YSgpIHsgbV9tZXRhZGF0YSA9IG1fcHJl
dmlvdXNNZXRhZGF0YTsgfQogCiBwcml2YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsKKyAg
ICBJREJPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogICAg
IHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25Gcm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0YTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1f
cHJldmlvdXNNZXRhZGF0YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9u
OwogICAgIGJvb2wgbV9kZWxldGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBk
YzQxMzQzOWE3ZTVmY2VmY2Q3MWJhMTFlOWVhMzZiN2ZiN2MwY2RmLi5kZDMzYzMxNzg0YTZkNzBl
NjE4ODRhNGE2ZWRkM2M5M2Y0MjgzNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtNzIsNiArNzIsMTQgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXAKIHsKIH0KIAorSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNv
bnN0Cit7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5
UGF0aCwgbV9hdXRvSW5jcmVtZW50KTsKKyAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCisg
ICAgICAgIG1ldGFkYXRhLmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRh
dGEoKSk7CisgICAgcmV0dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggZDM3MjI1M2EzMzQzZjBiZGRkZGMxMTcz
MGIxODA2ZDE2NDI5NDVjNi4uYzNkMWM1MzMxZDk0ZjQ1ZGY3MTM4Y2YwNDk4OGE0MDFjZjU2N2M5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgpAQCAtNDAsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6
IHB1YmxpYyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNjEs
NiArNjMsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBt
X2lkID0gaWQ7IH0KIAorICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0
YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25h
bWU7IH0KICAgICB2aXJ0dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5UGF0aDsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5h
bWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjQxZTU3NjQxNmQ2NzE2ZjJkZjJiZTlmMTI4MjU2YzA1
OTU3MjZiZi4uZTEzNWVmMTgwYzZkODFhM2IyNmUwZWVkM2IyYzY1YzI2YzNmZDVkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNw
cApAQCAtMTU4LDI1ICsxNTgsMzQgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJh
bnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBpZiAo
ZWMpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmpl
Y3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlz
KTsKKyAgICBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSA9IG1fZGF0YWJhc2Ut
Pm1ldGFkYXRhKCk7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNv
bnN0X2l0ZXJhdG9yIG1kaXQgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZmluZChuYW1lKTsKKyAg
ICBBU1NFUlQobWRpdCAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworCisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUo
bWRpdC0+c2Vjb25kLCBvYmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVjdFN0b3Jl
Q3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVh
c2UoKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2
b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1l
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKICAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBv
YmplY3RTdG9yZSA9IHBycE9iamVjdFN0b3JlOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5h
bWUsIG9iamVjdFN0b3JlKTsKKyAgICBpZiAoaXNWZXJzaW9uQ2hhbmdlKCkpCisgICAgICAgIG1f
b2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFkZChvYmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAg
QVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFu
Z2UoKSk7CiAgICAgSURCT2JqZWN0U3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9y
ZU1hcC5maW5kKG5hbWUpOwogICAgIGlmIChpdCAhPSBtX29iamVjdFN0b3JlTWFwLmVuZCgpKSB7
CiAgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBpdC0+c2Vjb25k
OwogICAgICAgICBtX29iamVjdFN0b3JlTWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgb2JqZWN0
U3RvcmUtPm1hcmtEZWxldGVkKCk7CisgICAgICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmFk
ZChvYmplY3RTdG9yZSk7CiAgICAgfQogfQogCkBAIC0yMzksNiArMjQ4LDExIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb246Om9uQWJvcnQoKQogICAgICAgICByZXF1ZXN0LT5hYm9ydCgpOwogICAgIH0K
IAorICAgIGlmIChpc1ZlcnNpb25DaGFuZ2UoKSkgeworICAgICAgICBmb3IgKElEQk9iamVjdFN0
b3JlU2V0OjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmJlZ2luKCk7IGl0
ICE9IG1fb2JqZWN0U3RvcmVDbGVhbnVwU2V0LmVuZCgpOyArK2l0KQorICAgICAgICAgICAgKCpp
dCktPnJlc2V0TWV0YWRhdGEoKTsKKyAgICB9CisgICAgbV9vYmplY3RTdG9yZUNsZWFudXBTZXQu
Y2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAgICAgbV9kYXRhYmFzZS0+dHJhbnNh
Y3Rpb25GaW5pc2hlZCh0aGlzKTsKIApAQCAtMjUxLDYgKzI2NSw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb246Om9uQWJvcnQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25Db21wbGV0ZSgpCiB7CiAg
ICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIG1fb2JqZWN0U3RvcmVDbGVh
bnVwU2V0LmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogICAgIG1fZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDRmOTVmNWIxOWQwOTQ5OGI4YzAz
YWM2MmU4MTZlOTc4Mzg4MjMyZDIuLjJkYmQwY2YxYWRjODVlM2U5MmYzMmVlODg0OTQyODI2ODU1
MzE1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNs
dWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KQEAgLTE0Myw2ICsxNDQsOSBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYg
SGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZU1h
cDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFwOwogCisgICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZVNldDsKKyAg
ICBJREJPYmplY3RTdG9yZVNldCBtX29iamVjdFN0b3JlQ2xlYW51cFNldDsKKwogICAgIEhhc2hT
ZXQ8SURCQ3Vyc29yKj4gbV9vcGVuQ3Vyc29yczsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2
ZW50VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiMGM3MmJjMzFkOTdjZTFkMGEwNTY4
ZjUzOGE3M2MwYmIxNWVjM2M2Li40ZDM5MGVhNzE0ZjMzOTQ5N2M1NmI3ZjFhZDg0MTM5NDVjNTli
YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDg4LDYgKzE0ODgsNyBAQAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAgICAgICAg
J01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU4YjVmZDI0YjBjM2UxY2Y4
M2IwZmU3ZjY3ZTk3N2UyMmIwMjBlZC4uMmExOTAyY2YxMzA1NzdkZmZjYzk1ZGEwOGM0MTI0YWMx
MDY0MjY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI3NDIsNiArMTI3NDIsNyBAQAogCQlCQ0M1QkRGRTBDMEU5MzExMDAx
MUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NTU1N0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0M1QkRGRjBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NTU1N0eWxlU2hlZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNjRGNjAwRENGQjg0RTAwODFFRjNCIC8qIEVuZ2xpc2gg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9
IEVuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQlCQ0M2NTE0NTE1OTI5NEMzMDBBQ0M5RTQgLyogSURCTWV0YWRhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSURCTWV0YWRhdGEuaDsgcGF0aCA9IE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEuZ3BlcmYgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IENvbG9yRGF0YS5ncGVyZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNDQkFEM0EwQzE4QkZGODAwQ0U4OTBGIC8qIEpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ29sbGVjdGlvbkN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQ0JBRDNFMEMxOEMxNDIw
MENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3NTQ2LDYgKzE3NTQ3LDcgQEAKIAkJCQk5NzEyQTU4RDE1MDA0RURBMDA0OEFG
MTAgLyogSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oICovLAogCQkJCTk3MTJBNThFMTUwMDRFREEw
MDQ4QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCAqLywKIAkJCQk5NzEyQTU4RjE1MDA0RURB
MDA0OEFGMTAgLyogSURCTGV2ZWxEQkNvZGluZy5oICovLAorCQkJCUJDQzY1MTQ1MTU5Mjk0QzMw
MEFDQzlFNCAvKiBJREJNZXRhZGF0YS5oICovLAogCQkJCTk3MTJBNTkwMTUwMDRFREEwMDQ4QUYx
MCAvKiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJOTcxMkE1OTExNTAwNEVEQTAwNDhBRjEw
IC8qIElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJOTcxMkE1OTIxNTAwNEVEQTAwNDhBRjEwIC8q
IElEQk9iamVjdFN0b3JlLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA3
NGRiMjU4YmUyMGZlYmE2NzZkOGQwZTQ3MDY2MzFlY2Y3MTRiODBmLi42ZmE0M2YxMDE0NTQ3YmI2
MmY4MmQ1ODllOGY2YzM4MzQyMWVlNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBA
IC01NjEsNiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSURCS2V5UmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk1l
dGFkYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggNDEwZDlmYWNm
OGE3MWEyM2RjNjI5ODkyYWYzYmMzNmU1MTFmNGEyMy4uMWMzM2QxYjA4MGQ3NTY4MmVkY2VkMmZk
ZmFiZWE0YjFlZTRkODY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJNZXRhZGF0YS5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CkBAIC02Miw2ICs2NiwxMSBAQCBzdHJ1
Y3QgV2ViSURCTWV0YWRhdGEgewogICAgICAgICAgICAgLCB1bmlxdWUoZmFsc2UpCiAgICAgICAg
ICAgICAsIG11bHRpRW50cnkoZmFsc2UpIHsgfQogICAgIH07CisKKyNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KKyAgICBXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1l
dGFkYXRhJik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSgpIGNv
bnN0OworI2VuZGlmCiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1ODY2MWViYWI4M2Y1YmNmOGE0
Y2E4OWFiZTdkYjgxMDg0YzkwNWY0Li4xMDdlYzYzYjNiNzg4M2UwOWVlYTMzN2M1OTE1YzM1YWQ0
MGExZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0
YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEsMTEg
QEAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiB7
CiB9CiAKK0lEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFk
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YWRhdGEoKTsK
K30KKwogU3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZTgxN2VkZjE5
OTVkYTJhODY3ZTk1NTkwNmQ5ODk3MGViMzQ0ZjkyYi4uYjA1NTUyY2NiZjExNzIwNWNjZTU3NGNl
OWFhZDI4NWY5ZWJiZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURCRGF0
YWJhc2VCYWNrZW5kUHJveHkoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VN
ZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3Bw
CmluZGV4IDI2NjJmODAxZjc1ZjIwZTMxNTFlNGU4NzA4YjVlZmE3MzZjYzdhZTYuLjM5ODAzZTE0
NTkzZWQ3MzQwOTZhYTZjNzgzMjg1OWNjMmI2ZTI1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEgQEAK
ICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIK
KyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKICNp
bmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2Fj
dGlvbkltcGwuaCIKIApAQCAtNTEsNiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+V2Vi
SURCRGF0YWJhc2VJbXBsKCkKIHsKIH0KIAorV2ViSURCTWV0YWRhdGEgV2ViSURCRGF0YWJhc2VJ
bXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5t
ZXRhZGF0YSgpOworfQorCiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBsOjpuYW1lKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMTkwZDdlMmRj
MzI5YjA2ZmIzYWU2Zjg5ODRiMzFiMmQyNTJiYWI4Mi4uNWU5ODllMDBlZWRiYTIwMWJkZWQwYTZk
Yjc5Nzk1NzViZTk1MDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNh
bGxiYWNrczsKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YWRhdGE7CiBjbGFzcyBXZWJJREJPYmpl
Y3RTdG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2ICs1MCw3IEBAIHB1
YmxpYzoKICAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNl
SW1wbCgpOwogCisgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQk1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1l
dGFkYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzUwNjNlZjBmZjMzYmI4YTZjNmQyZWViODA2NTcwYjAx
ZmQ1OWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCTWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQ
YXRoLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6
OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIG5hbWUgPSBtZXRhZGF0YS5u
YW1lOworICAgIHZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uOworICAgIG9iamVjdFN0b3JlcyA9
IFdlYlZlY3RvcjxPYmplY3RTdG9yZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuc2l6ZSgpKSk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChJREJEYXRh
YmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRv
ciA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFk
YXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlID0gc3RvcmVJdGVyYXRvci0+c2Vj
b25kOworICAgICAgICBPYmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZTsKKyAgICAgICAgd2ViT2Jq
ZWN0U3RvcmUubmFtZSA9IG9iamVjdFN0b3JlLm5hbWU7CisgICAgICAgIHdlYk9iamVjdFN0b3Jl
LmtleVBhdGggPSBvYmplY3RTdG9yZS5rZXlQYXRoOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5h
dXRvSW5jcmVtZW50ID0gb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudDsKKyAgICAgICAgd2ViT2Jq
ZWN0U3RvcmUuaW5kZXhlcyA9IFdlYlZlY3RvcjxJbmRleD4oc3RhdGljX2Nhc3Q8c2l6ZV90Pihv
YmplY3RTdG9yZS5pbmRleGVzLnNpemUoKSkpOworCisgICAgICAgIHNpemVfdCBqID0gMDsKKyAg
ICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0
b3IgaW5kZXhJdGVyYXRvciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJdGVy
YXRvciAhPSBvYmplY3RTdG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3IpIHsKKyAg
ICAgICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4ID0gaW5kZXhJdGVyYXRvci0+
c2Vjb25kOworICAgICAgICAgICAgSW5kZXggd2ViSW5kZXg7CisgICAgICAgICAgICB3ZWJJbmRl
eC5uYW1lID0gaW5kZXgubmFtZTsKKyAgICAgICAgICAgIHdlYkluZGV4LmtleVBhdGggPSBpbmRl
eC5rZXlQYXRoOworICAgICAgICAgICAgd2ViSW5kZXgudW5pcXVlID0gaW5kZXgudW5pcXVlOwor
ICAgICAgICAgICAgd2ViSW5kZXgubXVsdGlFbnRyeSA9IGluZGV4Lm11bHRpRW50cnk7CisgICAg
ICAgICAgICB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2orK10gPSB3ZWJJbmRleDsKKyAgICAgICAg
fQorICAgICAgICBvYmplY3RTdG9yZXNbaSsrXSA9IHdlYk9iamVjdFN0b3JlOworICAgIH0KK30K
KworV2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdAor
eworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgZGIobmFtZSwgdmVyc2lvbik7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29u
c3QgT2JqZWN0U3RvcmUgd2ViT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZXNbaV07CisgICAgICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwg
d2ViT2JqZWN0U3RvcmUua2V5UGF0aCwgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCk7CisK
KyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNp
emUoKTsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBJbmRleCB3ZWJJbmRleCA9IHdlYk9iamVj
dFN0b3JlLmluZGV4ZXNbal07CisgICAgICAgICAgICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdl
YkluZGV4Lm5hbWUsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgu
bXVsdGlFbnRyeSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5pbmRleGVzLnNldChpbmRleC5u
YW1lLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZGIub2JqZWN0U3RvcmVzLnNldChvYmpl
Y3RTdG9yZS5uYW1lLCBvYmplY3RTdG9yZSk7CisgICAgfQorICAgIHJldHVybiBkYjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA5ZThiMTQ3OTUyNTUzMTU3MDBlMjZmM2FmMTUxODQwMTJmNWJjYjVkLi4xMjYy
MjhhNTVjOTI5NmE2Nzg3MTdmZjc1NTZhOTQyMTk2MDU5M2I5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJ
UEMgcm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qczogQWRkZWQuCisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0
Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0
Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4ucmVxdWVz
dC5vbnN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RPcGVuKToKKyAgICAgICAgKHNlY29uZE9wZW4u
cmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6Cisg
ICAgICAgIChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToK
KyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25k
T3Blbik6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1
Y2Nlc3MudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nl
c3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuLnJlcXVlc3Qub25zdWNj
ZXNzKToKKyAgICAgICAgKHRoaXJkT3Blbik6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qu
b25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAo
Zm91cnRoT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAg
IChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4pOgor
ICAgICAgICAoY2hlY2tTdGF0ZSk6CisKIDIwMTItMDYtMTkgIENzYWJhIE9zenRyb2dvbsOhYyAg
PG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01hY10gU2tpcCBvbmUgbW9yZSBjcmFz
aGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0
YWRhdGEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRh
dGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MzZkNDc1YWE0MjdiYWNmYWZmMTM0N2EzNjQx
Zjg1Zjk3OGQyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4OCBAQAorVGVzdCBJbmRleGVk
REIgZGF0YWJhc2UgbWV0YWRhdGEgbXV0YXRpb24vc25hcHNob3R0aW5nCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitpbmRleGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndl
YmtpdEluZGV4ZWREQiB8fCBzZWxmLm1vekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8
IHNlbGYuT0luZGV4ZWREQjsKKworZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZQorcmVx
dWVzdCA9IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCisKK2ZpcnN0T3BlbigpOgor
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24xID0gcmVxdWVzdC5y
ZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMS5zZXRWZXJzaW9uKCcxJykKK3RyYW5zID0gcmVx
dWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24xc3RvcmUxID0gY29ubmVjdGlvbjEuY3JlYXRlT2JqZWN0
U3RvcmUoJ3N0b3JlMScpCitjb25uZWN0aW9uMXN0b3JlMS5jcmVhdGVJbmRleCgnaW5kZXgxJywg
J3BhdGgnKQorUEFTUyBjb25uZWN0aW9uMS52ZXJzaW9uIGlzICIxIgorUEFTUyBjb25uZWN0aW9u
MS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitQQVNTIGNvbm5lY3Rpb24xc3RvcmUxLmlu
ZGV4TmFtZXMubGVuZ3RoIGlzIDEKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBz
bmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjEuY2xvc2UoKQorCitzZWNvbmRPcGVuKCk6
CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVjdGlvbjIgPSByZXF1ZXN0
LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKQordHJhbnMgPSBy
ZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpCitj
b25uZWN0aW9uMnN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlv
bjJzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4MicsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjIu
dmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgg
aXMgMgorUEFTUyBjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCitDb25u
ZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5l
Y3Rpb24yLmNsb3NlKCkKKwordGhpcmRPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJuYW1lKQorY29ubmVjdGlvbjMgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rp
b24zLnNldFZlcnNpb24oJzMnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjMu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMycpCitjb25uZWN0aW9uM3N0b3JlMSA9IHRyYW5zLm9i
amVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjNzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4
MycsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjMudmVyc2lvbiBpcyAiMyIKK1BBU1MgY29ubmVj
dGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uM3N0b3Jl
MS5pbmRleE5hbWVzLmxlbmd0aCBpcyAzCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQg
YmUgcmV2ZXJ0ZWQgb24gYWJvcnQKK3RyYW5zLmFib3J0KCkKK0Nvbm5lY3Rpb24ncyBwcm9wZXJ0
aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBjbG9zZQorY29ubmVjdGlvbjMuY2xvc2UoKQor
Citmb3VydGhPcGVuKCk6CityZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKQorY29ubmVj
dGlvbjQgPSByZXF1ZXN0LnJlc3VsdAorcmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24o
JzQnKQordHJhbnMgPSByZXF1ZXN0LnJlc3VsdAorY29ubmVjdGlvbjQuY3JlYXRlT2JqZWN0U3Rv
cmUoJ3N0b3JlNCcpCitjb25uZWN0aW9uNHN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZTEnKQorY29ubmVjdGlvbjRzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4NCcsICdwYXRoJykKK1BB
U1MgY29ubmVjdGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxl
bmd0aCBpcyAzCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UKK2Nvbm5lY3Rpb240LmNsb3NlKCkKKworY2hlY2tTdGF0ZSgpOgorUEFTUyBjb25u
ZWN0aW9uMS52ZXJzaW9uIGlzICIxIgorUEFTUyBjb25uZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCBpcyAxCitQQVNTIGNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlz
IDEKKworUEFTUyBjb25uZWN0aW9uMi52ZXJzaW9uIGlzICIyIgorUEFTUyBjb25uZWN0aW9uMi5v
YmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rpb24yc3RvcmUxLmluZGV4
TmFtZXMubGVuZ3RoIGlzIDIKKworUEFTUyBjb25uZWN0aW9uMy52ZXJzaW9uIGlzICIyIgorUEFT
UyBjb25uZWN0aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAyCitQQVNTIGNvbm5lY3Rp
b24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDIKKworUEFTUyBjb25uZWN0aW9uNC52ZXJz
aW9uIGlzICI0IgorUEFTUyBjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAz
CitQQVNTIGNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIGlzIDMKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0MmNmZTU5ZWM0
NWVjMDc0ZTgzZWIzOGJmNThiZjJiMWI4NTJlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL21ldGFkYXRh
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE0YzQ3YzcxMWVlZmI1ODI2ODc2YTFjMmVjM2VlY2YwMDA3ZWVjNDQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvbWV0YWRhdGEuanMK
QEAgLTAsMCArMSwxNjYgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRT
Y3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAg
IGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRl
eGVkREIgZGF0YWJhc2UgbWV0YWRhdGEgbXV0YXRpb24vc25hcHNob3R0aW5nIik7CisKK2Z1bmN0
aW9uIHRlc3QoKQoreworICAgIHJlbW92ZVZlbmRvclByZWZpeGVzKCk7CisgICAgZXZhbEFuZExv
ZygiZGJuYW1lID0gc2VsZi5sb2NhdGlvbi5wYXRobmFtZSIpOworICAgIGV2YWxBbmRMb2coInJl
cXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKSIpOworICAgIHJlcXVlc3Qu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNz
ID0gZmlyc3RPcGVuOworfQorCitmdW5jdGlvbiBmaXJzdE9wZW4oKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1ZygiZmlyc3RPcGVuKCk6Iik7CisgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVj
dGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMSA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAg
ICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBjb25uZWN0aW9uMS5zZXRWZXJzaW9uKCcxJykiKTsK
KyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBldmFsQW5k
TG9nKCJ0cmFucyA9IHJlcXVlc3QucmVzdWx0Iik7CisgICAgICAgICAgICBldmFsQW5kTG9nKCJj
b25uZWN0aW9uMXN0b3JlMSA9IGNvbm5lY3Rpb24xLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEn
KSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEuY3JlYXRlSW5k
ZXgoJ2luZGV4MScsICdwYXRoJykiKTsKKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJjb25uZWN0aW9uMS52ZXJzaW9uIiwgIjEiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
b25uZWN0aW9uMS5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworCisg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIkNvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBj
bG9zZSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xLmNsb3NlKCki
KTsKKyAgICAgICAgICAgICAgICBzZWNvbmRPcGVuKCk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHNlY29uZE9wZW4oKQoreworICAgIGRlYnVnKCIi
KTsKKyAgICBkZWJ1Zygic2Vjb25kT3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsK
KyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAg
ICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjIuc2V0VmVyc2lvbignMicpIik7
CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
ICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFu
ZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygi
Y29ubmVjdGlvbjIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMicpIik7CisgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uMnN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEn
KSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEuY3JlYXRlSW5k
ZXgoJ2luZGV4MicsICdwYXRoJykiKTsKKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCJjb25uZWN0aW9uMi52ZXJzaW9uIiwgIjIiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
b25uZWN0aW9uMi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIyIik7CisgICAgICAgICAgICBz
aG91bGRCZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworCisg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAg
ICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIkNvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBj
bG9zZSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNsb3NlKCki
KTsKKyAgICAgICAgICAgICAgICB0aGlyZE9wZW4oKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
IH07CisgICAgfTsKK30KKworZnVuY3Rpb24gdGhpcmRPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7
CisgICAgZGVidWcoInRoaXJkT3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAg
ICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjMuc2V0VmVyc2lvbignMycpIik7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExv
ZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29u
bmVjdGlvbjMuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlMycpIik7CisgICAgICAgICAgICBldmFs
QW5kTG9nKCJjb25uZWN0aW9uM3N0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9yZTEnKSIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEuY3JlYXRlSW5kZXgo
J2luZGV4MycsICdwYXRoJykiKTsKKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJjb25uZWN0aW9uMy52ZXJzaW9uIiwgIjMiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjb25u
ZWN0aW9uMy5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIzIik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOworCisgICAg
ICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7Cisg
ICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIkNvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBvbiBj
bG9zZSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNsb3NlKCki
KTsKKyAgICAgICAgICAgICAgICBmb3VydGhPcGVuKCk7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgZGVidWcoIkNvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSByZXZlcnRlZCBv
biBhYm9ydCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMuYWJvcnQoKSIpOworICAg
ICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aE9wZW4oKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiZm91cnRoT3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjQgPSByZXF1ZXN0LnJlc3VsdCIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjQuc2V0VmVyc2lvbignNCcp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZh
bEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbjQuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlNCcpIik7CisgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNHN0b3JlMSA9IHRyYW5zLm9iamVjdFN0b3JlKCdzdG9y
ZTEnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEuY3JlYXRl
SW5kZXgoJ2luZGV4NCcsICdwYXRoJykiKTsKKworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb25uZWN0aW9uNC52ZXJzaW9uIiwgIjQiKTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjb25uZWN0aW9uNC5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCIsICIzIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOwor
CisgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgZGVidWcoIkNvbm5lY3Rpb24ncyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzbmFwc2hvdHRlZCBv
biBjbG9zZSIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNsb3Nl
KCkiKTsKKyAgICAgICAgICAgICAgICBjaGVja1N0YXRlKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIGNoZWNrU3RhdGUoKQoreworICAgIGRlYnVn
KCIiKTsKKyAgICBkZWJ1ZygiY2hlY2tTdGF0ZSgpOiIpOworCisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJjb25uZWN0aW9uMS52ZXJzaW9uIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiY29ubmVj
dGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIHNob3VsZEJlKCJjb25u
ZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIxIik7CisgICAgZGVidWcoIiIpOwor
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb25uZWN0aW9uMi52ZXJzaW9uIiwgIjIiKTsK
KyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMiIp
OworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIy
Iik7CisgICAgZGVidWcoIiIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJjb25uZWN0
aW9uMy52ZXJzaW9uIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3Rv
cmVOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIHNob3VsZEJlKCJjb25uZWN0aW9uM3N0b3JlMS5p
bmRleE5hbWVzLmxlbmd0aCIsICIyIik7CisgICAgZGVidWcoIiIpOworCisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJjb25uZWN0aW9uNC52ZXJzaW9uIiwgIjQiKTsKKyAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgIHNob3VsZEJl
KCJjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCIsICIzIik7CisgICAgZGVidWco
IiIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148838</attachid>
            <date>2012-06-21 10:53:08 -0700</date>
            <delta_ts>2012-06-22 13:51:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88467-20120621105307.patch</filename>
            <type>text/plain</type>
            <size>59068</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMzNjY2MwOTViMzlj
MTM5MzQ5NDUyZjY4YjMzMDA0YjkzNGM2Ni4uOTViNmNhYzQ5Yzg4Y2UyYjBiYjU2ZTVlMTBhZWMz
M2VjMDhjYjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmluZSBhIG5ldyB0
eXBlIChJREJEYXRhYmFzZU1ldGFkYXRhKSB0aGF0IGNhcHR1cmVzIHRoZSAic2NoZW1hIiBvZiBh
bgorICAgICAgICBJREIgZGF0YWJhc2UgKG5hbWUsIHZlcnNpb24sIHByb3BlcnRpZXMgb2Ygc3Rv
cmVzLCBwcm9wZXJ0aWVzIG9mIGluZGV4ZXMpLgorICAgICAgICBBZGQgYSBtZXRob2QgZm9yIHRo
ZSBmcm9udCBlbmQgdG8gcmVxdWVzdCB0aGlzIGZyb20gdGhlIGJhY2sgZW5kIG9uY2UgdXAKKyAg
ICAgICAgZnJvbnQgdG8gYXZvaWQgbGF0ZXIgY2FsbHMgKHdoaWNoIG1heSBiZSBzbG93IElQQyBj
YWxscyBpbiBwb3J0cykuIEltcGxlbWVudAorICAgICAgICBJREIgc3BlYyBsb2dpYyB0aGF0IHRo
ZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGZvciBhIHBhcnRpY3VsYXIgSURCRGF0YWJhc2UK
KyAgICAgICAgY29ubmVjdGlvbiwgYW5kIG9ubHkgY2hhbmdlIHdpdGhpbiBhIHZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uLCBhbmQgdGhlIHNwZWMncworICAgICAgICBmdW5reSByZXF1aXJlbWVu
dCBmb3IgYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbnMuCisKKyAgICAgICAgVGVz
dDogc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6
OklEQkRhdGFiYXNlKTogRmV0Y2ggbWV0YWRhdGEgZnJvbSBiYWNrIGVuZCB3aGVuIGNvbm5lY3Rp
b24gaXMgY3JlYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2FjdGlv
bkNyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uRmlu
aXNoZWQpOiBVcGRhdGUgbWV0YWRhdGEgYXQgdGhlIGVuZCBvZiBhIHRyYW5zYWN0aW9uIGluIAor
ICAgICAgICBjYXNlIGl0IHdhcyByb2xsZWQgYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1l
bmQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpj
cmVhdGVPYmplY3RTdG9yZSk6IFVwZGF0ZSBsb2NhbCBjb3B5IG9mIG1ldGFkYXRhLgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKTogVXBkYXRlIGxvY2Fs
IGNvcHkgb2YgbWV0YWRhdGEuCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKTogTW92ZSBpbXBsZW1l
bnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dmVy
c2lvbik6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5kLgorICAgICAgICAoSURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om1ldGFkYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKTogQ29uc3RydWN0
IGEgbWV0YWRhdGEgc25hcHNob3QuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleC5jcHA6IFN0b3JlIGEgY29weSBvZiB0aGUgbWV0YWRhdGEsIHdoaWNoIHdpbGwgbmV2ZXIK
KyAgICAgICAgY2hhbmdlIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIGluZGV4LgorICAgICAg
ICAoV2ViQ29yZTo6SURCSW5kZXg6OklEQkluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6bmFtZSk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8g
ZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9iamVjdFN0b3JlKTogUmV0
dXJuIFJlZlB0ciAodW5yZWxhdGVkIHRpZHlpbmcpLgorICAgICAgICAoV2ViQ29yZTo6SURCSW5k
ZXg6OmtleVBhdGgpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4Ojp1bmlxdWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250
LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjptdWx0aUVudHJ5KTogTW92ZSBpbXBs
ZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChJREJJbmRleCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSk6IENvbnN0cnVjdCBhIG1ldGFkYXRh
IHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDogQWRkZWQgbmV3IHN0
cnVjdHMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
TWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VNZXRh
ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6CisgICAg
ICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6SURCT2Jq
ZWN0U3RvcmUpOiBTdG9yZSBhICJsaXZlIiBjb3B5IG9mIHRoZSBtZXRhZGF0YSwgYW5kCisgICAg
ICAgIGFuZCBjb3B5IGluIGNhc2Ugb2YgYW4gYWJvcnRlZCB2ZXJzaW9uIGNoYW5nZSB0cmFuc2Fj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKTogTW92
ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgpOiBVcGRhdGUgbWV0YWRhdGEgdG8gaW5jbHVkZSBuZXcgaW5k
ZXguCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgpOiBQYXNzIGFsb25n
IG1ldGFkYXRhIHRvIGluc3RhbmNlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KTogRGVsZXRlIGluZGV4IGZyb20gbWV0YWRhdGEuCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6Om5hbWUpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKTogTW92ZSBpbXBsZW1lbnRhdGlv
biB0byBmcm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6dHJhbnNh
Y3Rpb24pOiBSZXR1cm4gUmVmUHRyICh1bnJlbGF0ZWQgdGlkeWluZykuCisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6YXV0b0luY3JlbWVudCk6IE1vdmUgaW1wbGVtZW50YXRpb24g
dG8gZnJvbnQtZW5kLgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om1ldGFkYXRh
KTogQWxsb3cgY29weWluZyB0aGUgbWV0YWRhdGEsIGluIGNhc2Ugb2YgYWJvcnQuCisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cmVzZXRNZXRhZGF0YSk6IEFsbG93IHNldHRpbmcg
dGhlIG1ldGFkYXRhLCBpbiBjYXNlIG9mIGFib3J0LgorICAgICAgICAoSURCT2JqZWN0U3RvcmUp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRh
dGEpOiBDb25zdHJ1Y3QgYSBtZXRhZGF0YSBzbmFwc2hvdC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKTogUGFzcyBhbG9uZyBtZXRh
ZGF0YSB0byBpbnN0YW5jZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQpOiBUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcg
dHJhbnNhY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3Rv
cmVEZWxldGVkKTpUcmFjayBzdG9yZXMgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b25BYm9ydCk6IFJldmVydCBzdG9yZXMgbWV0
YWRhdGEgcG90ZW50aWFsbHkgY2hhbmdlZCBkdXJpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKElEQlRyYW5zYWN0
aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKIDIwMTItMDYtMjEgIFRhaWp1IFRzdWlr
aSAgPHR6aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgcmVx
dWVzdElkIGFsbG9jYXRpb24gZnJvbSBGaWxlU3lzdGVtIGZyb250ZW5kIHRvIGJhY2tlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjc1NTZhY2NjMDFmNjhhY2Q4ZTU1ZmQ0ZmY4OGRh
YmNkNjU1Y2ZiMS4uNDAyODRhYWQ4NTQ1Y2Y1ZTAxZThmMzZjMDA4NGE1ODQ4ZjA1Njk0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0wNi0xOSAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25h
cHNob3QgbWV0YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY29udmVyc2lv
bnMgdG8vZnJvbSBXZWJDb3JlIElEQiBtZXRhZGF0YSB0eXBlIGFuZCBwbHVtYmluZyBmb3Igcm91
dGluZyB0aGUKKyAgICAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjptZXRhZGF0YSgp
IGNhbGwgdGhyb3VnaCB0aGUgcHVibGljIEFQSS4uCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOiBO
ZXcgZmlsZSBhZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViSURCTWV0YWRhdGEuaDogQ29udmVy
c2lvbiBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYklEQk1ldGFk
YXRhKToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwOiBQbHVtYmlu
Zy4KKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFkYXRhKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5
Lmg6IFBsdW1iaW5nLgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAg
ICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwOiBQbHVtYmluZy4KKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRGF0YWJhc2VJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwuaDogUGx1bWJpbmcuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
TWV0YWRhdGEuY3BwOiBBZGRlZCAtIGNvbnZlcnNpb24gZnVuY3Rpb25zLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0
YWRhdGEpOgorCiAyMDEyLTA2LTIwICBaZWV2IExpZWJlciAgPHpsaWViZXJAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtDaHJvbWl1bV0gRGFtYWdlIHRyYWNrZXIgaXMgbm90IHVzZWQgd2l0aG91
dCBwYXJ0aWFsIHN3YXAsIGNhdXNpbmcgdmFsaWQgcmVuZGVyIHBhc3NlcyB0byBiZSByZW1vdmVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAK
aW5kZXggMjAwOGVkOGI0ZmNiY2JiNTczMzY0ZGE5N2VhODBkMDliZGRiMTgzYS4uMGE0OTQwMGJi
ODY1NWVhZTkwNGZjZTY5ZDllZDdiNDA4NmJiN2ZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBJREJE
YXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZQogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBv
YmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJl
bWVudCgpOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGw6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgp
OwogfQogCiBJREJEYXRhYmFzZTo6fklEQkRhdGFiYXNlKCkKQEAgLTgxLDYgKzgyLDcgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKICAgICBpZiAodHJhbnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAg
IEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uOworICAgICAgICBtX21ldGFkYXRhID0gbV9i
YWNrZW5kLT5tZXRhZGF0YSgpOwogICAgIH0KIH0KIApAQCAtOTMsMTIgKzk1LDIyIEBAIHZvaWQg
SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uRmluaXNoZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKQogICAgIGlmICh0cmFuc2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAg
QVNTRVJUKG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAg
ICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gPSAwOworICAgICAgICBtX21ldGFkYXRhID0g
bV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogICAgIH0KIAogICAgIGlmIChtX2Nsb3NlUGVuZGluZyAm
JiBtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIGNsb3NlQ29ubmVjdGlvbigpOwog
fQogCitQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5h
bWVzKCkgY29uc3QKK3sKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1l
cyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0
YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5vYmplY3RT
dG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQp
CisgICAgICAgIG9iamVjdFN0b3JlTmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOworICAgIG9iamVj
dFN0b3JlTmFtZXMtPnNvcnQoKTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmVOYW1lcy5yZWxlYXNl
KCk7Cit9CisKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pIHsKQEAgLTEzNiw3ICsxNDgsMTAgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
RGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RT
dG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2Uo
KSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUo
bWV0YWRhdGEsIG9iamVjdFN0b3JlQmFja2VuZC5yZWxlYXNlKCksIG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLmdldCgpKTsKKyAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5zZXQobmFtZSwg
bWV0YWRhdGEpOworCiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3Jl
Q3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVh
c2UoKTsKIH0KQEAgLTE0OSw4ICsxNjQsMTAgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAK
ICAgICBtX2JhY2tlbmQtPmRlbGV0ZU9iamVjdFN0b3JlKG5hbWUsIG1fdmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKLSAgICBpZiAoIWVjKQorICAgIGlmICghZWMpIHsK
ICAgICAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRlZChu
YW1lKTsKKyAgICAgICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOworICAg
IH0KIH0KIAogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6
OnNldFZlcnNpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IGFkYWQzMmQ4NmFjNjQ3ODVmMGRkYjYxOTA3
ZmVhY2NjOWMwZDkxNDYuLmEyNDhjZDgwZGViODM3YTNiMTViZGFhMzhkMWRmMTMwZWQzYTMxYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RT
dG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KQEAgLTU3LDkgKzU4LDkgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNhY3Rpb25G
aW5pc2hlZChJREJUcmFuc2FjdGlvbiopOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAg
ICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAg
U3RyaW5nIHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsgfQot
ICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZC0+b2JqZWN0U3RvcmVOYW1lcygpOyB9CisgICAgY29uc3QgU3RyaW5n
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBjb25zdCBTdHJp
bmcgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsgfQorICAgIFBh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAg
Ly8gRklYTUU6IFRyeSB0byBtb2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5u
ZWVkZWQuCiAgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2Jq
ZWN0U3RvcmUobmFtZSwgRGljdGlvbmFyeSgpLCBlYyk7IH0KQEAgLTg3LDYgKzg4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OwogCiAgICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7
CisgICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGE7IH0KICAgICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRp
b25Db2RlJiBlYykgeyByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVj
KTsgfQogICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsK
QEAgLTEwNSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbG9zZUNvbm5lY3Rpb24o
KTsKIAorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbV9tZXRhZGF0YTsKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbjsKICAgICBIYXNoU2V0PElEQlRyYW5z
YWN0aW9uKj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDc4ZTBl
ZTA4YTI3ZGY4NzkxZWIyN2NlOGY2MDk1MzE3YWRlNWY1YmIuLmI2MzZkODBhNjlmYjU2NWJhMDYy
NWQ4MTYyOGJmMjRlMTQ2NTU2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzQsNiAr
MTM0LDE0IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZTsKIH0K
IAorSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgp
IGNvbnN0Cit7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVy
c2lvbik7CisgICAgZm9yIChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29i
amVjdFN0b3Jlcy5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAg
ICAgICAgbWV0YWRhdGEub2JqZWN0U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1l
dGFkYXRhKCkpOworICAgIHJldHVybiBtZXRhZGF0YTsKK30KKwogUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QK
IHsKICAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmlu
Z0xpc3Q6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDE1NTcxYThjNDgwMzMxMjM3
NjIwZDZhYWY0NzYyZDU0NzBlODM3ZTMuLjM2ZWIyNDFmZWJiODc3Mzg5MmVhOTg5M2M1YWU1MzZm
ZDg2OTJiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgb3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2
b2lkIGRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKKyAgICB2aXJ0
dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcg
dmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IDQyNDgwNzQ3NGI4Y2NmMGJhOTg3NDZmOTBmZjY3MDBkNDY2
N2I0MzkuLmQ1ODE3NzdmOTUxNzNiM2Q1ZGUxNWNiYzExYzMwYzBmMTQ0NjBlZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNl
Q2FsbGJhY2tzOwogY2xhc3MgSURCS2V5UGF0aDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKK3N0cnVj
dCBJREJEYXRhYmFzZU1ldGFkYXRhOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBA
IC01Miw2ICs1Myw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJREJEYXRhYmFzZUJhY2tlCiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIElE
QkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJp
bmcgbmFtZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5h
bWVzKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguY3BwCmluZGV4IDM0ZGYxODk0NDQyMGU5YjYwM2Y0YjIzODllODVkYjJhZWEyNDk4Y2Eu
LjMxZTdmNWQ0ZTc2MmZjY2RiZGE0MzE2Nzk0OTlkYWJhYWFiYWQwZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTQyLDggKzQyLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVs
dERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCSW5kZXg6OklEQkluZGV4KFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSog
b2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2Vu
ZChiYWNrZW5kKQorSURCSW5kZXg6OklEQkluZGV4KGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1l
dGFkYXRhLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURC
T2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisg
ICAgOiBtX21ldGFkYXRhKG1ldGFkYXRhKQorICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAg
LCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2Fj
dGlvbikKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGM3ZTVmNzhjZmI1NzYxNjc2ZjYwNjA5Y2UzNjk2ZTQ5
MDg0YThmYzIuLjgyMDFkNWQzMzNkYjkxZDVmMzAwODIwOTQ0YzA3ZjZiODhiOThkOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtMzAsNiArMzAs
OCBAQAogI2luY2x1ZGUgIklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgpAQCAtNDIsMTggKzQ0LDE4IEBAIGNsYXNzIElEQk9iamVjdFN0b3JlOwogCiBjbGFzcyBJREJJ
bmRleCA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkluZGV4PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0
ZShjb25zdCBJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJJbmRleChiYWNrZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChtZXRhZGF0YSwgYmFja2VuZCwgb2JqZWN0
U3RvcmUsIHRyYW5zYWN0aW9uKSk7CiAgICAgfQogICAgIH5JREJJbmRleCgpOwogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2VuZC0+bmFtZSgpOyB9Ci0gICAgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmplY3RTdG9yZS5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8SURCQW55PiBr
ZXlQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7IH0KLSAgICBib29s
IHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7IH0KLSAgICBib29s
IG11bHRpRW50cnkoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmQtPm11bHRpRW50cnkoKTsgfQor
ICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9
CisgICAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJl
dHVybiBtX29iamVjdFN0b3JlOyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBj
b25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTog
VHJ5IHRvIG1vZGlmeSB0aGUgY29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAg
ICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4
dCwgc3RhdGljX2Nhc3Q8SURCS2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04Myw4ICs4NSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAK
IHByaXZhdGU6Ci0gICAgSURCSW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2U+LCBJREJPYmplY3RTdG9yZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5kZXgoY29u
c3QgSURCSW5kZXhNZXRhZGF0YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiwgSURCT2JqZWN0U3RvcmUqLCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5kZXhNZXRh
ZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IG1f
YmFja2VuZDsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRl
eCA5ODYxNGRmYjM1MGQ0MmIyNjhiYzQyZThiNjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZhYWYyZjUy
NDIzNWY4NTA3YTZlZjQ4ZTViMmVjN2Q5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURC
S2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5o
IgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJU
cmFjaW5nLmgiCiAKQEAgLTY3LDYgKzY4LDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJ
bmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAorSURCSW5kZXhNZXRhZGF0YSBJREJJbmRleEJhY2tl
bmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0YWRhdGEo
bV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5k
SW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3ZDE3ZTQw
MWJlMGI4YTNkMzU3ZDBkZGQwNzNmMDJmZWQyNi4uNjQxMGNiYWMzZmM2NDkwYTllNDVmZDg3YmJk
MGM5MTYxMzNlMWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGFkZGluZ0tleUFsbG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURC
S2V5KiBwcmltYXJ5S2V5ID0gMCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZS4KKyAgICB2aXJ0dWFsIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25z
dDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmly
dHVhbCBJREJLZXlQYXRoIGtleVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdW5pcXVlKCkgeyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjYmVmNzNiY2U1
ZDAzMWYxYWI0N2VkMzFiYThhMjNiZDgxNjY4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEsODcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJREJNZXRhZGF0YV9oCisjZGVmaW5lIElEQk1ldGFkYXRhX2gKKworI2luY2x1
ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKKworc3Ry
dWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKSB7IH0K
KyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2ZXJzaW9uKQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9uKHZlcnNp
b24pIHsgfQorICAgIFN0cmluZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0U3RvcmVN
YXA7CisgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEgeworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7IH0KKyAg
ICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUobmFtZSkK
KyAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRv
SW5jcmVtZW50KSB7IH0KKyAgICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7
CisgICAgYm9vbCBhdXRvSW5jcmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
SURCSW5kZXhNZXRhZGF0YT4gSW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsKK307CisK
K3N0cnVjdCBJREJJbmRleE1ldGFkYXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkgeyB9Cisg
ICAgSURCSW5kZXhNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDogbmFtZShu
YW1lKQorICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUodW5pcXVl
KQorICAgICAgICAsIG11bHRpRW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5nIG5hbWU7
CisgICAgSURCS2V5UGF0aCBrZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJvb2wgbXVs
dGlFbnRyeTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CisjZW5kaWYgLy8gSURCVHJhY2luZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggYjVkNzgxNGNjMjEwZTY2ZDRkZDhk
Mjg4NTcxYmQwMThhM2MwMjM4Zi4uNWNmZGEwNWU1YmU1N2Y1ZTQ4NWI5NWRmZTNiMjJjMjNkNTI0
NmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlz
dC5oIgogI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJJbmRleC5oIgogI2lu
Y2x1ZGUgIklEQktleS5oIgpAQCAtNDQsOCArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29y
OjpORVhUOwogCi1JREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCi0gICAgOiBtX2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCitJREJPYmpl
Y3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0
YWRhdGEsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmpl
Y3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIDogbV9tZXRhZGF0YSht
ZXRhZGF0YSkKKyAgICAsIG1fYmFja2VuZChpZGJPYmplY3RTdG9yZSkKICAgICAsIG1fdHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX2RlbGV0ZWQoZmFsc2UpCiB7CkBAIC01NSwzNCAr
NTcsMTQgQEAgSURCT2JqZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmoKICAgICByZWxheEFkb3B0aW9uUmVxdWly
ZW1lbnQoKTsKIH0KIAotU3RyaW5nIElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKLXsKLSAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpuYW1lIik7Ci0gICAgcmV0dXJuIG1fYmFja2Vu
ZC0+bmFtZSgpOwotfQotCi1QYXNzUmVmUHRyPElEQkFueT4gSURCT2JqZWN0U3RvcmU6OmtleVBh
dGgoKSBjb25zdAotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmtleVBhdGgiKTsK
LSAgICByZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7Ci19Ci0KIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMiKTsKLSAgICByZXR1cm4gbV9iYWNrZW5k
LT5pbmRleE5hbWVzKCk7Ci19Ci0KLUlEQlRyYW5zYWN0aW9uKiBJREJPYmplY3RTdG9yZTo6dHJh
bnNhY3Rpb24oKSBjb25zdAotewotICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OnRyYW5z
YWN0aW9uIik7Ci0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7Ci19Ci0KLWJvb2wgSURC
T2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBjb25zdAotewotICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQiKTsKLSAgICByZXR1cm4gbV9iYWNrZW5kLT5hdXRv
SW5jcmVtZW50KCk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01T
dHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6Oklu
ZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fbWV0YWRhdGEuaW5kZXhlcy5iZWdpbigpOyBp
dCAhPSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGluZGV4TmFtZXMt
PmFwcGVuZChpdC0+Zmlyc3QpOworICAgIGluZGV4TmFtZXMtPnNvcnQoKTsKKyAgICByZXR1cm4g
aW5kZXhOYW1lcy5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yNzksOCArMjYx
LDEwIEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktlCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGlu
ZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElE
QkluZGV4TWV0YWRhdGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5
KTsKKyAgICBSZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRhZGF0
YSwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAg
ICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOworICAgIG1fbWV0YWRhdGEuaW5kZXhlcy5z
ZXQobmFtZSwgbWV0YWRhdGEpOwogCiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KQEAg
LTMwNiw3ICsyOTAsMTAgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6Omlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICBpZiAoZWMpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4
OjpjcmVhdGUoaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQo
KSk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9y
IG1kaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAh
PSBtX21ldGFkYXRhLmluZGV4ZXMuZW5kKCkpOworCisgICAgUmVmUHRyPElEQkluZGV4PiBpbmRl
eCA9IElEQkluZGV4OjpjcmVhdGUobWRpdC0+c2Vjb25kLCBpbmRleEJhY2tlbmQucmVsZWFzZSgp
LCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2luZGV4TWFwLnNldChuYW1lLCBp
bmRleCk7CiAgICAgcmV0dXJuIGluZGV4LnJlbGVhc2UoKTsKIH0KQEAgLTMyNSw2ICszMTIsOSBA
QCB2b2lkIElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgaXQtPnNlY29uZC0+bWFya0RlbGV0ZWQoKTsK
ICAgICAgICAgICAgIG1faW5kZXhNYXAucmVtb3ZlKG5hbWUpOwogICAgICAgICB9CisKKyAgICAg
ICAgQVNTRVJUKG1fbWV0YWRhdGEuaW5kZXhlcy5jb250YWlucyhuYW1lKSk7CisgICAgICAgIG1f
bWV0YWRhdGEuaW5kZXhlcy5yZW1vdmUobmFtZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCA4MzRiZDUw
ZmMwNTMxZGNhN2VkZDc1YTBhYzJlNjhiNGEyZjgyMTNiLi44MTgxZWI5MzFmYTcwY2M1OTAwNDJm
MjI1NjJjZjc4ZGMyY2NmNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJJ
bmRleC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisj
aW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb24uaCIKQEAgLTQ5LDE4ICs1MCwxOCBAQCBjbGFzcyBJREJBbnk7CiAKIGNsYXNzIElEQk9i
amVjdFN0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8SURCT2JqZWN0U3RvcmU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNh
Y3Rpb24qIHRyYW5zYWN0aW9uKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9i
amVjdFN0b3JlKGlkYk9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlKG1ldGFkYXRhLCBiYWNrZW5kLCB0cmFuc2FjdGlv
bikpOwogICAgIH0KICAgICB+SURCT2JqZWN0U3RvcmUoKSB7IH0KIAogICAgIC8vIEltcGxlbWVu
dCB0aGUgSURCT2JqZWN0U3RvcmUgSURMCi0gICAgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICBQ
YXNzUmVmUHRyPElEQkFueT4ga2V5UGF0aCgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0cjxJREJB
bnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhLmtleVBhdGg7IH0KICAgICBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKLSAgICBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24oKSBjb25zdDsKLSAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb247IH0KKyAgICBib29sIGF1dG9JbmNyZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX21ldGFkYXRhLmF1dG9JbmNyZW1lbnQ7IH0KIAogICAgIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gYWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0
dXJuIGFkZChjb250ZXh0LCB2YWx1ZSwgMCwgZWMpOyAgfQogICAgIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gcHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIHB1
dChjb250ZXh0LCB2YWx1ZSwgMCwgZWMpOyAgfQpAQCAtOTcsMTAgKzk4LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAgICAgdm9pZCB0
cmFuc2FjdGlvbkZpbmlzaGVkKCk7CiAKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorICAgIHZvaWQgc2V0TWV0YWRhdGEo
Y29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpIHsgbV9tZXRhZGF0YSA9IG1l
dGFkYXRhOyB9CisKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOworICAgIElEQk9i
amVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4sIElEQlRyYW5zYWN0aW9uKik7CiAgICAgdm9pZCBy
ZW1vdmVUcmFuc2FjdGlvbkZyb21QZW5kaW5nTGlzdCgpOwogCisgICAgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSBtX21ldGFkYXRhOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rp
b247CiAgICAgYm9vbCBtX2RlbGV0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4
IGQ5YWYyYjk3MzNmZjgzMTZlNTc4YTU5MTY4MDQ5NGM4MDJjOWQzNzEuLjljNzM2NmU0YjliNWU3
N2U1MzU0NjVkZjViZWI5ZjdjZDU3NzRmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CkBAIC03Miw2ICs3MiwxNCBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcAogewogfQogCitJREJP
YmplY3RTdG9yZU1ldGFkYXRhIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkg
Y29uc3QKK3sKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9r
ZXlQYXRoLCBtX2F1dG9JbmNyZW1lbnQpOworICAgIGZvciAoSW5kZXhNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1faW5kZXhlcy5lbmQoKTsgKytpdCkK
KyAgICAgICAgbWV0YWRhdGEuaW5kZXhlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRh
ZGF0YSgpKTsKKyAgICByZXR1cm4gbWV0YWRhdGE7Cit9CisKIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVh
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaAppbmRleCBiYWNkOWRmYzEyYzNlMzJjYjhiMjQ3
ODU1MmQ1M2YwMTE4MmMyMDhkLi4wN2FiOWZjZTNkZDg0ZmI4MGI3NTA4NGZjYTMyYjRhYzA2Nzdl
MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgor
I2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CkBAIC00MCw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw7CiBjbGFzcyBJREJJbmRleEJhY2tlbmRJbXBsOwogY2xhc3MgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK3N0cnVjdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
IDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CkBAIC02
MSw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBzZXRJZChpbnQ2NF90IGlkKSB7
IG1faWQgPSBpZDsgfQogCisgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZTsgfQogICAgIHZpcnR1YWwgSURCS2V5UGF0aCBrZXlQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9rZXlQYXRoOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4
TmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA2NDFlNTc2NDE2ZDY3MTZmMmRmMmJlOWYxMjgyNTZj
MDU5NTcyNmJmLi43MDg3YzY1N2UwNjY4NmMxN2QxNWIzNmQ4OGM2OTI0OWQyM2U5YjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCkBAIC0xNTgsMjUgKzE1OCwzNCBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJU
cmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcAogICAgIGlm
IChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZShvYmplY3RTdG9yZUJhY2tlbmQsIHRo
aXMpOworICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhID0gbV9kYXRhYmFz
ZS0+bWV0YWRhdGEoKTsKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6
Y29uc3RfaXRlcmF0b3IgbWRpdCA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5maW5kKG5hbWUpOwor
ICAgIEFTU0VSVChtZGl0ICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKSk7CisKKyAgICBS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZShtZGl0LT5zZWNvbmQsIG9iamVjdFN0b3JlQmFja2VuZCwgdGhpcyk7CiAgICAgb2JqZWN0U3Rv
cmVDcmVhdGVkKG5hbWUsIG9iamVjdFN0b3JlKTsKICAgICByZXR1cm4gb2JqZWN0U3RvcmUucmVs
ZWFzZSgpOwogfQogCi12b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSkK
K3ZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlQ3JlYXRlZChjb25zdCBTdHJpbmcmIG5h
bWUsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IHBycE9iamVjdFN0b3JlKQogewogICAgIEFT
U0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IG9iamVjdFN0b3JlID0gcHJwT2JqZWN0U3RvcmU7CiAgICAgbV9vYmplY3RTdG9yZU1hcC5zZXQo
bmFtZSwgb2JqZWN0U3RvcmUpOworICAgIGlmIChpc1ZlcnNpb25DaGFuZ2UoKSkKKyAgICAgICAg
bV9vYmplY3RTdG9yZUNsZWFudXBNYXAuc2V0KG9iamVjdFN0b3JlLCBvYmplY3RTdG9yZS0+bWV0
YWRhdGEoKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlRGVsZXRlZChj
b25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQp
OworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgSURCT2JqZWN0U3RvcmVNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZU1hcC5maW5kKG5hbWUpOwogICAgIGlmIChpdCAh
PSBtX29iamVjdFN0b3JlTWFwLmVuZCgpKSB7CiAgICAgICAgIFJlZlB0cjxJREJPYmplY3RTdG9y
ZT4gb2JqZWN0U3RvcmUgPSBpdC0+c2Vjb25kOwogICAgICAgICBtX29iamVjdFN0b3JlTWFwLnJl
bW92ZShuYW1lKTsKICAgICAgICAgb2JqZWN0U3RvcmUtPm1hcmtEZWxldGVkKCk7CisgICAgICAg
IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLnNldChvYmplY3RTdG9yZSwgb2JqZWN0U3RvcmUtPm1l
dGFkYXRhKCkpOwogICAgIH0KIH0KIApAQCAtMjM5LDYgKzI0OCwxMSBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpvbkFib3J0KCkKICAgICAgICAgcmVxdWVzdC0+YWJvcnQoKTsKICAgICB9CiAKKyAg
ICBpZiAoaXNWZXJzaW9uQ2hhbmdlKCkpIHsKKyAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1l
dGFkYXRhTWFwOjppdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmJlZ2luKCk7
IGl0ICE9IG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmVuZCgpOyArK2l0KQorICAgICAgICAgICAg
aXQtPmZpcnN0LT5zZXRNZXRhZGF0YShpdC0+c2Vjb25kKTsKKyAgICB9CisgICAgbV9vYmplY3RT
dG9yZUNsZWFudXBNYXAuY2xlYXIoKTsKICAgICBjbG9zZU9wZW5DdXJzb3JzKCk7CiAgICAgbV9k
YXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKIApAQCAtMjUxLDYgKzI2NSw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQWJvcnQoKQogdm9pZCBJREJUcmFuc2FjdGlvbjo6b25D
b21wbGV0ZSgpCiB7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uRmluaXNoZWQpOworICAgIG1f
b2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNsZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwog
ICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDRmOTVm
NWIxOWQwOTQ5OGI4YzAzYWM2MmU4MTZlOTc4Mzg4MjMyZDIuLjBiMmRlYzZlYzA4ZjFkMWUyYjk2
MGVkYjAxMTZmY2Y4OWQxY2Y5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTE0Myw2ICsxNDQsOSBAQCBwcml2YXRl
OgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJ
REJPYmplY3RTdG9yZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFw
OwogCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJREJPYmplY3RTdG9yZT4sIElEQk9iamVj
dFN0b3JlTWV0YWRhdGE+IElEQk9iamVjdFN0b3JlTWV0YWRhdGFNYXA7CisgICAgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YU1hcCBtX29iamVjdFN0b3JlQ2xlYW51cE1hcDsKKwogICAgIEhhc2hTZXQ8
SURCQ3Vyc29yKj4gbV9vcGVuQ3Vyc29yczsKIAogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50
VGFyZ2V0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNGYxNDFhMWNiMjY1NjdiZmU4NDkxMWU4
NGUyY2NjODNiYWJlZGVhLi43YTQ3NGM0MDljMWZlM2I0NjcxZTVhMjU4OTlhZTI2MTg4YmI0MmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDkxLDYgKzE0OTEsNyBAQAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCcsCisgICAgICAgICAgICAn
TW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDkyZmMxMjMzNWE0YTdmYzVjYjA4
NjVjNzhmYTZhNWUwNTlhN2ZjYi4uYjk1MjdhZGNlNGIxODZkOWViZGU3MDI5YjFiOWRiOTcyZTRk
ODgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI3NDYsNiArMTI3NDYsNyBAQAogCQlCQ0M1QkRGRTBDMEU5MzExMDAxMUMy
REIgLyogSlNDU1NTdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NTU1N0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0M1QkRGRjBDMEU5MzExMDAxMUMyREIgLyogSlNDU1NTdHlsZVNoZWV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NTU1N0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNjRGNjAwRENGQjg0RTAwODFFRjNCIC8qIEVuZ2xpc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVu
Z2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQlCQ0M2NTE0NTE1OTI5NEMzMDBBQ0M5RTQgLyogSURCTWV0YWRhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSURCTWV0YWRhdGEuaDsgcGF0aCA9IE1vZHVsZXMv
aW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QzhDRkNBMDk4NkNEMjQwMDE0MEJGMiAvKiBDb2xvckRhdGEuZ3BlcmYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IENvbG9yRGF0YS5ncGVyZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNDQkFEM0EwQzE4QkZGODAwQ0U4OTBGIC8qIEpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ29sbGVjdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQ0JBRDNFMEMxOEMxNDIwMENF
ODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0hUTUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NTUyLDYgKzE3NTUzLDcgQEAKIAkJCQk5NzEyQTU4RDE1MDA0RURBMDA0OEFGMTAg
LyogSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oICovLAogCQkJCTk3MTJBNThFMTUwMDRFREEwMDQ4
QUYxMCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCAqLywKIAkJCQk5NzEyQTU4RjE1MDA0RURBMDA0
OEFGMTAgLyogSURCTGV2ZWxEQkNvZGluZy5oICovLAorCQkJCUJDQzY1MTQ1MTU5Mjk0QzMwMEFD
QzlFNCAvKiBJREJNZXRhZGF0YS5oICovLAogCQkJCTk3MTJBNTkwMTUwMDRFREEwMDQ4QUYxMCAv
KiBJREJPYmplY3RTdG9yZS5jcHAgKi8sCiAJCQkJOTcxMkE1OTExNTAwNEVEQTAwNDhBRjEwIC8q
IElEQk9iamVjdFN0b3JlLmggKi8sCiAJCQkJOTcxMkE1OTIxNTAwNEVEQTAwNDhBRjEwIC8qIElE
Qk9iamVjdFN0b3JlLmlkbCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA3NGRi
MjU4YmUyMGZlYmE2NzZkOGQwZTQ3MDY2MzFlY2Y3MTRiODBmLi42ZmE0M2YxMDE0NTQ3YmI2MmY4
MmQ1ODllOGY2YzM4MzQyMWVlNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC01
NjEsNiArNTYxLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViSURCS2V5UGF0aC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSURCS2V5UmFuZ2UuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk1ldGFk
YXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggNDEwZDlmYWNmOGE3
MWEyM2RjNjI5ODkyYWYzYmMzNmU1MTFmNGEyMy4uMWMzM2QxYjA4MGQ3NTY4MmVkY2VkMmZkZmFi
ZWE0YjFlZTRkODY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJNZXRhZGF0YS5oCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0
cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CkBAIC02Miw2ICs2NiwxMSBAQCBzdHJ1Y3Qg
V2ViSURCTWV0YWRhdGEgewogICAgICAgICAgICAgLCB1bmlxdWUoZmFsc2UpCiAgICAgICAgICAg
ICAsIG11bHRpRW50cnkoZmFsc2UpIHsgfQogICAgIH07CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KKyAgICBXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFk
YXRhJik7CisgICAgb3BlcmF0b3IgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSgpIGNvbnN0
OworI2VuZGlmCiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1ODY2MWViYWI4M2Y1YmNmOGE0Y2E4
OWFiZTdkYjgxMDg0YzkwNWY0Li4xMDdlYzYzYjNiNzg4M2UwOWVlYTMzN2M1OTE1YzM1YWQ0MGEx
ZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRE9NU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
Q2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgpAQCAtNjAsNiArNjEsMTEgQEAg
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6On5JREJEYXRhYmFzZUJhY2tlbmRQcm94eSgpCiB7CiB9
CiAKK0lEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om1ldGFkYXRh
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bWV0YWRhdGEoKTsKK30K
KwogU3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpuYW1lKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKaW5kZXggZTgxN2VkZjE5OTVk
YTJhODY3ZTk1NTkwNmQ5ODk3MGViMzQ0ZjkyYi4uYjA1NTUyY2NiZjExNzIwNWNjZTU3NGNlOWFh
ZDI4NWY5ZWJiZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCkBAIC00Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7CiAgICAgdmlydHVhbCB+SURCRGF0YWJh
c2VCYWNrZW5kUHJveHkoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRh
ZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCmlu
ZGV4IDI2NjJmODAxZjc1ZjIwZTMxNTFlNGU4NzA4YjVlZmE3MzZjYzdhZTYuLjM5ODAzZTE0NTkz
ZWQ3MzQwOTZhYTZjNzgzMjg1OWNjMmI2ZTI1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAtMzIsOSArMzIsMTEgQEAKICNp
bmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaCIKKyNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKICNpbmNs
dWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlv
bkltcGwuaCIKIApAQCAtNTEsNiArNTMsMTEgQEAgV2ViSURCRGF0YWJhc2VJbXBsOjp+V2ViSURC
RGF0YWJhc2VJbXBsKCkKIHsKIH0KIAorV2ViSURCTWV0YWRhdGEgV2ViSURCRGF0YWJhc2VJbXBs
OjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5tZXRh
ZGF0YSgpOworfQorCiBXZWJTdHJpbmcgV2ViSURCRGF0YWJhc2VJbXBsOjpuYW1lKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMTkwZDdlMmRjMzI5
YjA2ZmIzYWU2Zjg5ODRiMzFiMmQyNTJiYWI4Mi4uNWU5ODllMDBlZWRiYTIwMWJkZWQwYTZkYjc5
Nzk1NzViZTk1MDk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrczsKK2NsYXNzIFdlYklEQkRhdGFiYXNlTWV0YWRhdGE7CiBjbGFzcyBXZWJJREJPYmplY3RT
dG9yZTsKIGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOwogCkBAIC00OSw2ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICBXZWJJREJEYXRhYmFzZUltcGwoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlSW1w
bCgpOwogCisgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmluZyB2
ZXJzaW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJET01TdHJpbmdMaXN0IG9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFk
YXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MzUwNjNlZjBmZjMzYmI4YTZjNmQyZWViODA2NTcwYjAxZmQ1
OWNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
TWV0YWRhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViSURCTWV0YWRhdGEuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKKyNpbmNsdWRlICJXZWJJREJLZXlQYXRo
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViVmVjdG9yLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQoreworICAgIG5hbWUgPSBtZXRhZGF0YS5uYW1l
OworICAgIHZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uOworICAgIG9iamVjdFN0b3JlcyA9IFdl
YlZlY3RvcjxPYmplY3RTdG9yZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS5vYmplY3RT
dG9yZXMuc2l6ZSgpKSk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgZm9yIChJREJEYXRhYmFz
ZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRvciA9
IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFkYXRh
Lm9iamVjdFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0ZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlID0gc3RvcmVJdGVyYXRvci0+c2Vjb25k
OworICAgICAgICBPYmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZTsKKyAgICAgICAgd2ViT2JqZWN0
U3RvcmUubmFtZSA9IG9iamVjdFN0b3JlLm5hbWU7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmtl
eVBhdGggPSBvYmplY3RTdG9yZS5rZXlQYXRoOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5hdXRv
SW5jcmVtZW50ID0gb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudDsKKyAgICAgICAgd2ViT2JqZWN0
U3RvcmUuaW5kZXhlcyA9IFdlYlZlY3RvcjxJbmRleD4oc3RhdGljX2Nhc3Q8c2l6ZV90PihvYmpl
Y3RTdG9yZS5pbmRleGVzLnNpemUoKSkpOworCisgICAgICAgIHNpemVfdCBqID0gMDsKKyAgICAg
ICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3Ig
aW5kZXhJdGVyYXRvciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJdGVyYXRv
ciAhPSBvYmplY3RTdG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3IpIHsKKyAgICAg
ICAgICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4ID0gaW5kZXhJdGVyYXRvci0+c2Vj
b25kOworICAgICAgICAgICAgSW5kZXggd2ViSW5kZXg7CisgICAgICAgICAgICB3ZWJJbmRleC5u
YW1lID0gaW5kZXgubmFtZTsKKyAgICAgICAgICAgIHdlYkluZGV4LmtleVBhdGggPSBpbmRleC5r
ZXlQYXRoOworICAgICAgICAgICAgd2ViSW5kZXgudW5pcXVlID0gaW5kZXgudW5pcXVlOworICAg
ICAgICAgICAgd2ViSW5kZXgubXVsdGlFbnRyeSA9IGluZGV4Lm11bHRpRW50cnk7CisgICAgICAg
ICAgICB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2orK10gPSB3ZWJJbmRleDsKKyAgICAgICAgfQor
ICAgICAgICBvYmplY3RTdG9yZXNbaSsrXSA9IHdlYk9iamVjdFN0b3JlOworICAgIH0KK30KKwor
V2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdAorewor
ICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgZGIobmFtZSwgdmVyc2lvbik7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTdG9yZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3Qg
T2JqZWN0U3RvcmUgd2ViT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZXNbaV07CisgICAgICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgb2JqZWN0U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwgd2Vi
T2JqZWN0U3RvcmUua2V5UGF0aCwgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCk7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNpemUo
KTsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBJbmRleCB3ZWJJbmRleCA9IHdlYk9iamVjdFN0
b3JlLmluZGV4ZXNbal07CisgICAgICAgICAgICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdlYklu
ZGV4Lm5hbWUsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgubXVs
dGlFbnRyeSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5pbmRleGVzLnNldChpbmRleC5uYW1l
LCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZGIub2JqZWN0U3RvcmVzLnNldChvYmplY3RT
dG9yZS5uYW1lLCBvYmplY3RTdG9yZSk7CisgICAgfQorICAgIHJldHVybiBkYjsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNTU5MmUyMzkwMmNhOWU4ZDlhZDllODY4MTQ2NDNlYWU1ODllNjAxLi5hZGE5Y2Zk
NTAyMDUyYzg0ZTc3YjRmM2VkMTU1MmFmZjZkOTA5Zjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTItMDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBJbmRleGVkREI6IFNuYXBzaG90IG1ldGFkYXRhIGluIGZyb250IGVuZCB0byBhdm9pZCBJUEMg
cm91bmQtdHJpcHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4NDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qczogQWRkZWQuCisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9u
c3VjY2Vzcy50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9u
c3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4ucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAoZmlyc3RPcGVuKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVx
dWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6CisgICAg
ICAgIChzZWNvbmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAg
ICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Bl
bik6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nl
c3MudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3Mu
cmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAodGhpcmRPcGVuLnJlcXVlc3Qub25zdWNjZXNz
KToKKyAgICAgICAgKHRoaXJkT3Blbik6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25z
dWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoZm91
cnRoT3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChm
b3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4pOgorICAg
ICAgICAoY2hlY2tTdGF0ZSk6CisKIDIwMTItMDYtMjEgIFRhaWp1IFRzdWlraSAgPHR6aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgcmVxdWVzdElkIGFsbG9j
YXRpb24gZnJvbSBGaWxlU3lzdGVtIGZyb250ZW5kIHRvIGJhY2tlbmQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDM2ZDQ3NWFhNDI3YmFjZmFmZjEzNDdhMzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsODggQEAKK1Rlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0
aW9uL3NuYXBzaG90dGluZworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhl
ZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJ
bmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFt
ZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUKK3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKQorCitmaXJzdE9wZW4oKToKK3JlcXVlc3QgPSBpbmRleGVkREIub3Blbihk
Ym5hbWUpCitjb25uZWN0aW9uMSA9IHJlcXVlc3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlv
bjEuc2V0VmVyc2lvbignMScpCit0cmFucyA9IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0
b3JlMSA9IGNvbm5lY3Rpb24xLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlv
bjFzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEu
dmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgg
aXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25u
ZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5l
Y3Rpb24xLmNsb3NlKCkKKworc2Vjb25kT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRibmFtZSkKK2Nvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0
aW9uMi5zZXRWZXJzaW9uKCcyJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24y
LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5v
YmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRl
eDInLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5l
Y3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9y
ZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMgorQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxk
IGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3Bl
bigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVx
dWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5z
ID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMn
KQorY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5l
Y3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rp
b24zLnZlcnNpb24gaXMgIjMiCitQQVNTIGNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMwor
Q29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFu
cy5hYm9ydCgpCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UKK2Nvbm5lY3Rpb24zLmNsb3NlKCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3Jl
cXVlc3QgPSBjb25uZWN0aW9uNC5zZXRWZXJzaW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1
bHQKK2Nvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRz
dG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNy
ZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMg
IjQiCitQQVNTIGNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1Mg
Y29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHBy
b3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9z
ZSgpCisKK2NoZWNrU3RhdGUoKToKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BB
U1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0
aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVy
c2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMg
MgorUEFTUyBjb25uZWN0aW9uMnN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1Mg
Y29ubmVjdGlvbjMudmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25uZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0
aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjQudmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlv
bjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5p
bmRleE5hbWVzLmxlbmd0aCBpcyAzCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9tZXRhZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRh
dGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NDJjZmU1OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUy
ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0
YWRhdGEuaHRtbApAQCAtMCwwICsxLDEwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9tZXRhZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3Jlc291cmNlcy9tZXRhZGF0YS5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9tZXRhZGF0YS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJl
YzNlZWNmMDAwN2VlYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRhLmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMn
KTsKK30KKworZGVzY3JpcHRpb24oIlRlc3QgSW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11
dGF0aW9uL3NuYXBzaG90dGluZyIpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVW
ZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24u
cGF0aG5hbWUiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURh
dGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rp
b24gZmlyc3RPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZpcnN0T3Blbigp
OiIpOworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7
CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVj
dGlvbjEgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0g
Y29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3Vs
dCIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0
aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24xc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIs
ICIxIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUx
LmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25k
T3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlv
biBzZWNvbmRPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4o
KToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIp
OworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5l
Y3Rpb24yID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9
IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzInKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1
bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0
b3JlKCdzdG9yZTInKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9y
ZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisK
KyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIs
ICIyIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1l
cy5sZW5ndGgiLCAiMiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUx
LmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRP
cGVuKCk7CisgICAgICAgICAgICB9OworICAgICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9u
IHRoaXJkT3BlbigpCit7CisgICAgZGVidWcoIiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToi
KTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVl
c3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rp
b24zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNv
bm5lY3Rpb24zLnNldFZlcnNpb24oJzMnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1
bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3Jl
KCdzdG9yZTMnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEg
PSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAg
ICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIz
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5s
ZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmlu
ZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9
IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVy
dGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBl
dmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRo
T3BlbigpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3Mg
cHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5j
dGlvbiBmb3VydGhPcGVuKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9w
ZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1l
KSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNv
bm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVz
dCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24oJzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5y
ZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZTQnKSIpOworICAgICAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRz
dG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7
CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lv
biIsICI0Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3Rv
cmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9y
dCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0
ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAg
ICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5jbG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hl
Y2tTdGF0ZSgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5j
dGlvbiBjaGVja1N0YXRlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3Rh
dGUoKToiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lv
biIsICIxIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5s
ZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24y
Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlv
bjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAg
c2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAg
ICBzaG91bGRCZSgiY29ubmVjdGlvbjNzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOwor
ICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQu
dmVyc2lvbiIsICI0Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFt
ZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhO
YW1lcy5sZW5ndGgiLCAiMyIpOworICAgIGRlYnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgp
OworfQorCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149096</attachid>
            <date>2012-06-22 13:51:33 -0700</date>
            <delta_ts>2012-06-22 15:09:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-88467-20120622135133.patch</filename>
            <type>text/plain</type>
            <size>58984</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2ODY3MmM5ZDBiMmM1
NjM3MTViY2E2YmQyOTE4NmFmOTc4ODlkZi4uYmFlM2RhNDliMTkwNzBjM2Q2NjllMWMzYTFlNDdj
ZWZhNjdlYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgRGVmaW5lIGEgbmV3IHR5cGUg
KElEQkRhdGFiYXNlTWV0YWRhdGEpIHRoYXQgY2FwdHVyZXMgdGhlICJzY2hlbWEiIG9mIGFuCisg
ICAgICAgIElEQiBkYXRhYmFzZSAobmFtZSwgdmVyc2lvbiwgcHJvcGVydGllcyBvZiBzdG9yZXMs
IHByb3BlcnRpZXMgb2YgaW5kZXhlcykuCisgICAgICAgIEFkZCBhIG1ldGhvZCBmb3IgdGhlIGZy
b250IGVuZCB0byByZXF1ZXN0IHRoaXMgZnJvbSB0aGUgYmFjayBlbmQgb25jZSB1cAorICAgICAg
ICBmcm9udCB0byBhdm9pZCBsYXRlciBjYWxscyAod2hpY2ggbWF5IGJlIHNsb3cgSVBDIGNhbGxz
IGluIHBvcnRzKS4gSW1wbGVtZW50CisgICAgICAgIElEQiBzcGVjIGxvZ2ljIHRoYXQgdGhlIG1l
dGFkYXRhIHNob3VsZCBiZSBmcm96ZW4gZm9yIGEgcGFydGljdWxhciBJREJEYXRhYmFzZQorICAg
ICAgICBjb25uZWN0aW9uLCBhbmQgb25seSBjaGFuZ2Ugd2l0aGluIGEgdmVyc2lvbiBjaGFuZ2Ug
dHJhbnNhY3Rpb24sIGFuZCB0aGUgc3BlYydzCisgICAgICAgIGZ1bmt5IHJlcXVpcmVtZW50IGZv
ciBhYm9ydGVkIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9ucy4KKworICAgICAgICBUZXN0OiBz
dG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURC
RGF0YWJhc2UpOiBGZXRjaCBtZXRhZGF0YSBmcm9tIGJhY2sgZW5kIHdoZW4gY29ubmVjdGlvbiBp
cyBjcmVhdGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uQ3Jl
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25GaW5pc2hl
ZCk6IFVwZGF0ZSBtZXRhZGF0YSBhdCB0aGUgZW5kIG9mIGEgdHJhbnNhY3Rpb24gaW4gCisgICAg
ICAgIGNhc2UgaXQgd2FzIHJvbGxlZCBiYWNrLgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6Om9iamVjdFN0b3JlTmFtZXMpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKTogVXBkYXRlIGxvY2FsIGNvcHkgb2YgbWV0YWRhdGEuCisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUpOiBVcGRhdGUgbG9jYWwgY29w
eSBvZiBtZXRhZGF0YS4KKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om5hbWUpOiBNb3ZlIGltcGxlbWVudGF0
aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp2ZXJzaW9u
KTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9udC1lbmQuCisgICAgICAgIChJREJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bWV0YWRhdGEpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOiBDb25zdHJ1Y3QgYSBt
ZXRhZGF0YSBzbmFwc2hvdC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKElEQkRhdGFiYXNl
QmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmNwcDogU3RvcmUgYSBjb3B5IG9mIHRoZSBtZXRhZGF0YSwgd2hpY2ggd2lsbCBuZXZlcgorICAg
ICAgICBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUgaW5kZXguCisgICAgICAgIChX
ZWJDb3JlOjpJREJJbmRleDo6SURCSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4OjpuYW1lKTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBmcm9u
dC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b2JqZWN0U3RvcmUpOiBSZXR1cm4g
UmVmUHRyICh1bnJlbGF0ZWQgdGlkeWluZykuCisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6
a2V5UGF0aCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5kLgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OnVuaXF1ZSk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5k
LgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om11bHRpRW50cnkpOiBNb3ZlIGltcGxlbWVu
dGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAgKElEQkluZGV4KToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkluZGV4QmFja2VuZEltcGw6Om1ldGFkYXRhKTogQ29uc3RydWN0IGEgbWV0YWRhdGEgc25h
cHNob3QuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oOiBBZGRlZCBuZXcgc3RydWN0
cy4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRh
ZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgIChJREJEYXRhYmFzZU1ldGFkYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGE6OklEQk9iamVjdFN0
b3JlTWV0YWRhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAg
KElEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpJREJPYmplY3RT
dG9yZSk6IFN0b3JlIGEgImxpdmUiIGNvcHkgb2YgdGhlIG1ldGFkYXRhLCBhbmQKKyAgICAgICAg
YW5kIGNvcHkgaW4gY2FzZSBvZiBhbiBhYm9ydGVkIHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOiBNb3ZlIGlt
cGxlbWVudGF0aW9uIHRvIGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCk6IFVwZGF0ZSBtZXRhZGF0YSB0byBpbmNsdWRlIG5ldyBpbmRleC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6IFBhc3MgYWxvbmcgbWV0
YWRhdGEgdG8gaW5zdGFuY2UgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6ZGVsZXRlSW5kZXgpOiBEZWxldGUgaW5kZXggZnJvbSBtZXRhZGF0YS4KKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6bmFtZSk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gZnJvbnQtZW5kLgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRv
IGZyb250LWVuZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlv
bik6IFJldHVybiBSZWZQdHIgKHVucmVsYXRlZCB0aWR5aW5nKS4KKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjphdXRvSW5jcmVtZW50KTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBm
cm9udC1lbmQuCisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6bWV0YWRhdGEpOiBB
bGxvdyBjb3B5aW5nIHRoZSBtZXRhZGF0YSwgaW4gY2FzZSBvZiBhYm9ydC4KKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlOjpyZXNldE1ldGFkYXRhKTogQWxsb3cgc2V0dGluZyB0aGUg
bWV0YWRhdGEsIGluIGNhc2Ugb2YgYWJvcnQuCisgICAgICAgIChJREJPYmplY3RTdG9yZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6
IENvbnN0cnVjdCBhIG1ldGFkYXRhIHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUpOiBQYXNzIGFsb25nIG1ldGFkYXRh
IHRvIGluc3RhbmNlIGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b246Om9iamVjdFN0b3JlQ3JlYXRlZCk6IFRyYWNrIHN0b3JlcyBjaGFuZ2VkIGR1cmluZyB0cmFu
c2FjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURl
bGV0ZWQpOlRyYWNrIHN0b3JlcyBjaGFuZ2VkIGR1cmluZyB0cmFuc2FjdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpvbkFib3J0KTogUmV2ZXJ0IHN0b3JlcyBtZXRhZGF0
YSBwb3RlbnRpYWxseSBjaGFuZ2VkIGR1cmluZyB0cmFuc2FjdGlvbi4KKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24p
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKwogMjAxMi0wNi0yMiAgQW15IE91c3RlcmhvdXQg
IDxhb3VzdGVyaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lZCBEZXZpY2VPcmllbnRh
dGlvbiB0byBEZXZpY2VPcmllbnRhdGlvbkRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMjUxNjk0YzIzNGQyM2NlNjgzODRkZTIzNDczODJmNjIxMmNlNjZiNy4uNTRjZWQyODljMzQy
MmJiMGNhZGIxYTFmMDkyNTdlYTBmNzBlNDQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMi0wNi0xOSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogU25hcHNob3QgbWV0YWRhdGEgaW4gZnJvbnQg
ZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgIEFkZCBjb252ZXJzaW9ucyB0by9mcm9tIFdlYkNvcmUgSURCIG1ldGFk
YXRhIHR5cGUgYW5kIHBsdW1iaW5nIGZvciByb3V0aW5nIHRoZQorICAgICAgICBJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U6Om1ldGFkYXRhKCkgY2FsbCB0aHJvdWdoIHRoZSBwdWJsaWMgQVBJ
Li4KKworICAgICAgICAqIFdlYktpdC5neXA6IE5ldyBmaWxlIGFkZGVkLgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJNZXRhZGF0YS5oOiBDb252ZXJzaW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViSURCTWV0YWRhdGEpOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5jcHA6IFBsdW1iaW5nLgorICAgICAgICAoV2ViS2l0OjpJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBzcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaDogUGx1bWJpbmcuCisgICAgICAgIChJREJE
YXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHA6IFBsdW1iaW5nLgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFk
YXRhKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oOiBQbHVtYmluZy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJREJEYXRhYmFz
ZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5jcHA6IEFkZGVkIC0gY29udmVy
c2lvbiBmdW5jdGlvbnMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJNZXRh
ZGF0YTo6b3BlcmF0b3IgSURCRGF0YWJhc2VNZXRhZGF0YSk6CisKIDIwMTItMDYtMjIgIEFteSBP
dXN0ZXJob3V0ICA8YW91c3RlcmhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZWQgRGV2
aWNlT3JpZW50YXRpb24gdG8gRGV2aWNlT3JpZW50YXRpb25EYXRhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjAwOGVkOGI0ZmNi
Y2JiNTczMzY0ZGE5N2VhODBkMDliZGRiMTgzYS4uMGE0OTQwMGJiODY1NWVhZTkwNGZjZTY5ZDll
ZDdiNDA4NmJiN2ZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBJREJEYXRhYmFzZTo6SURCRGF0YWJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZQogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBvYmplY3QgYmVmb3JlIGl0IGNh
biBiZSBhZG9wdGVkLgogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVudCgpOwogICAgIG1fZGF0
YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSh0aGlzKTsK
KyAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgpOwogfQogCiBJREJEYXRhYmFz
ZTo6fklEQkRhdGFiYXNlKCkKQEAgLTgxLDYgKzgyLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6dHJh
bnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKICAgICBpZiAodHJh
bnNhY3Rpb24tPmlzVmVyc2lvbkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCghbV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24pOwogICAgICAgICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9
IHRyYW5zYWN0aW9uOworICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0YSgp
OwogICAgIH0KIH0KIApAQCAtOTMsMTIgKzk1LDIyIEBAIHZvaWQgSURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uRmluaXNoZWQoSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQogICAgIGlmICh0cmFu
c2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJUKG1fdmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uID09IHRyYW5zYWN0aW9uKTsKICAgICAgICAgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24gPSAwOworICAgICAgICBtX21ldGFkYXRhID0gbV9iYWNrZW5kLT5tZXRhZGF0
YSgpOwogICAgIH0KIAogICAgIGlmIChtX2Nsb3NlUGVuZGluZyAmJiBtX3RyYW5zYWN0aW9ucy5p
c0VtcHR5KCkpCiAgICAgICAgIGNsb3NlQ29ubmVjdGlvbigpOwogfQogCitQYXNzUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKK3sKKyAg
ICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6
OmNyZWF0ZSgpOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsgaXQg
IT0gbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG9iamVjdFN0
b3JlTmFtZXMtPmFwcGVuZChpdC0+Zmlyc3QpOworICAgIG9iamVjdFN0b3JlTmFtZXMtPnNvcnQo
KTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7Cit9CisKIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKQEAgLTEzNiw3ICsx
NDgsMTAgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0
b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLnJlbGVhc2UoKSwgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEo
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWV0YWRhdGEsIG9iamVjdFN0
b3JlQmFja2VuZC5yZWxlYXNlKCksIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsK
KyAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5zZXQobmFtZSwgbWV0YWRhdGEpOworCiAgICAg
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmpl
Y3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KQEAgLTE0OSw4
ICsxNjQsMTAgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAKICAgICBtX2JhY2tlbmQtPmRl
bGV0ZU9iamVjdFN0b3JlKG5hbWUsIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5iYWNrZW5k
KCksIGVjKTsKLSAgICBpZiAoIWVjKQorICAgIGlmICghZWMpIHsKICAgICAgICAgbV92ZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlRGVsZXRlZChuYW1lKTsKKyAgICAgICAgbV9t
ZXRhZGF0YS5vYmplY3RTdG9yZXMucmVtb3ZlKG5hbWUpOworICAgIH0KIH0KIAogUGFzc1JlZlB0
cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdD4gSURCRGF0YWJhc2U6OnNldFZlcnNpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRp
b25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oCmluZGV4IGFkYWQzMmQ4NmFjNjQ3ODVmMGRkYjYxOTA3ZmVhY2NjOWMwZDkxNDYuLmEy
NDhjZDgwZGViODM3YTNiMTViZGFhMzhkMWRmMTMwZWQzYTMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgiCisjaW5jbHVk
ZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTU3LDkg
KzU4LDkgQEAgcHVibGljOgogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZChJREJUcmFuc2Fj
dGlvbiopOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwKLSAgICBTdHJpbmcgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0gICAgU3RyaW5nIHZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmQtPnZlcnNpb24oKTsgfQotICAgIFBhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+
b2JqZWN0U3RvcmVOYW1lcygpOyB9CisgICAgY29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX21ldGFkYXRhLm5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsgfQorICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRyeSB0byBt
b2RpZnkgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIHRoaXMgaXMgdW5uZWVkZWQuCiAgICAgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUobmFtZSwgRGlj
dGlvbmFyeSgpLCBlYyk7IH0KQEAgLTg3LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
CiAgICAgdm9pZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCk7CisgICAgY29uc3QgSURCRGF0
YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KICAg
ICB2b2lkIGVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgYm9vbCBkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgeyByZXR1
cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKQEAgLTEwNSw2ICsxMDcsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBjbG9zZUNvbm5lY3Rpb24oKTsKIAorICAgIElEQkRhdGFi
YXNlTWV0YWRhdGEgbV9tZXRhZGF0YTsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBtX2JhY2tlbmQ7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbjsKICAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uKj4gbV90cmFuc2Fj
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDc4ZTBlZTA4YTI3ZGY4NzkxZWIyN2Nl
OGY2MDk1MzE3YWRlNWY1YmIuLmI2MzZkODBhNjlmYjU2NWJhMDYyNWQ4MTYyOGJmMjRlMTQ2NTU2
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzQsNiArMTM0LDE0IEBAIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUo
KSBjb25zdAogICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZTsKIH0KIAorSURCRGF0YWJhc2VNZXRh
ZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVyc2lvbik7CisgICAgZm9yIChP
YmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigp
OyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKKyAgICAgICAgbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOworICAgIHJl
dHVybiBtZXRhZGF0YTsKK30KKwogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKIHsKICAgICBSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcyA9IERPTVN0cmluZ0xpc3Q6OmNyZWF0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VCYWNrZW5kSW1wbC5oCmluZGV4IDE1NTcxYThjNDgwMzMxMjM3NjIwZDZhYWY0NzYyZDU0NzBl
ODM3ZTMuLjM2ZWIyNDFmZWJiODc3Mzg5MmVhOTg5M2M1YWU1MzZmZDg2OTJiZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJh
Y2tlbmRJbXBsLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkNvbm5l
Y3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNl
KFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0
YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdmVyc2lvbjsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCmlu
ZGV4IDQyNDgwNzQ3NGI4Y2NmMGJhOTg3NDZmOTBmZjY3MDBkNDY2N2I0MzkuLmQ1ODE3NzdmOTUx
NzNiM2Q1ZGUxNWNiYzExYzMwYzBmMTQ0NjBlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZS5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogY2xhc3Mg
SURCS2V5UGF0aDsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTsKIGNsYXNz
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsKK3N0cnVjdCBJREJEYXRhYmFzZU1ldGFk
YXRhOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCkBAIC01Miw2ICs1Myw3IEBAIGNs
YXNzIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxJREJEYXRhYmFzZUJhY2tlCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlKCkgeyB9CiAKKyAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEg
bWV0YWRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCmluZGV4IDM0
ZGYxODk0NDQyMGU5YjYwM2Y0YjIzODllODVkYjJhZWEyNDk4Y2EuLjMxZTdmNWQ0ZTc2MmZjY2Ri
ZGE0MzE2Nzk0OTlkYWJhYWFiYWQwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJJbmRleC5jcHAKQEAgLTQyLDggKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1
cnNvcjo6TkVYVDsKIAotSURCSW5kZXg6OklEQkluZGV4KFBhc3NSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKLSAgICA6IG1fYmFja2VuZChiYWNrZW5kKQorSURCSW5k
ZXg6OklEQkluZGV4KGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCT2JqZWN0U3RvcmUqIG9iamVj
dFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCisgICAgOiBtX21ldGFkYXRhKG1l
dGFkYXRhKQorICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCiAgICAgLCBtX29iamVjdFN0b3JlKG9i
amVjdFN0b3JlKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fZGVs
ZXRlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5o
CmluZGV4IGM3ZTVmNzhjZmI1NzYxNjc2ZjYwNjA5Y2UzNjk2ZTQ5MDg0YThmYzIuLjgyMDFkNWQz
MzNkYjkxZDVmMzAwODIwOTQ0YzA3ZjZiODhiOThkOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIklE
QkluZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDIsMTggKzQ0LDE4
IEBAIGNsYXNzIElEQk9iamVjdFN0b3JlOwogCiBjbGFzcyBJREJJbmRleCA6IHB1YmxpYyBSZWZD
b3VudGVkPElEQkluZGV4PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5k
ZXg+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwg
SURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXg+IGNyZWF0ZShjb25zdCBJREJJbmRleE1l
dGFkYXRhJiBtZXRhZGF0YSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGJh
Y2tlbmQsIElEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleChiYWNr
ZW5kLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJJbmRleChtZXRhZGF0YSwgYmFja2VuZCwgb2JqZWN0U3RvcmUsIHRyYW5zYWN0aW9u
KSk7CiAgICAgfQogICAgIH5JREJJbmRleCgpOwogCiAgICAgLy8gSW1wbGVtZW50IHRoZSBJREwK
LSAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZC0+bmFtZSgpOyB9Ci0g
ICAgSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RT
dG9yZS5nZXQoKTsgfQotICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7IH0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2VuZC0+dW5pcXVlKCk7IH0KLSAgICBib29sIG11bHRpRW50cnkoKSBjb25z
dCB7IHJldHVybiBtX2JhY2tlbmQtPm11bHRpRW50cnkoKTsgfQorICAgIGNvbnN0IFN0cmluZyBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9CisgICAgUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUoKSBjb25zdCB7IHJldHVybiBtX29iamVjdFN0b3Jl
OyB9CisgICAgUGFzc1JlZlB0cjxJREJBbnk+IGtleVBhdGgoKSBjb25zdCB7IHJldHVybiBtX21l
dGFkYXRhLmtleVBhdGg7IH0KKyAgICBib29sIHVuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWRhdGEudW5pcXVlOyB9CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9t
ZXRhZGF0YS5tdWx0aUVudHJ5OyB9CiAKICAgICAvLyBGSVhNRTogVHJ5IHRvIG1vZGlmeSB0aGUg
Y29kZSBnZW5lcmF0b3Igc28gdGhpcyBpcyB1bm5lZWRlZC4KICAgICBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpIHsgcmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwgc3RhdGljX2Nhc3Q8SURC
S2V5UmFuZ2UqPigwKSwgZWMpOyB9CkBAIC04Myw4ICs4NSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1hcmtEZWxldGVkKCkgeyBtX2RlbGV0ZWQgPSB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgSURC
SW5kZXgoUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+LCBJREJPYmplY3RTdG9y
ZSosIElEQlRyYW5zYWN0aW9uKik7CisgICAgSURCSW5kZXgoY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiwgSURCT2JqZWN0U3RvcmUq
LCBJREJUcmFuc2FjdGlvbiopOwogCisgICAgSURCSW5kZXhNZXRhZGF0YSBtX21ldGFkYXRhOwog
ICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKICAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmU+IG1fb2JqZWN0U3RvcmU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiBtX3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA5ODYxNGRmYjM1MGQ0MmIy
NjhiYzQyZThiNjM4MmQzODQwMjdkMWZmLi5hMDg3ZTZhYWYyZjUyNDIzNWY4NTA3YTZlZjQ4ZTVi
MmVjN2Q5ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAi
SURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAKQEAgLTY3
LDYgKzY4LDExIEBAIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkK
IHsKIH0KIAorSURCSW5kZXhNZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIElEQkluZGV4TWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgs
IG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworfQorCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2Us
IHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uKQogewogICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcklu
dGVybmFsIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggZDhiMTk3ZDE3ZTQwMWJlMGI4YTNkMzU3ZDBkZGQw
NzNmMDJmZWQyNi4uNjQxMGNiYWMzZmM2NDkwYTllNDVmZDg3YmJkMGM5MTYxMzNlMWZjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFj
a2VuZEltcGwuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCIKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGFkZGluZ0tleUFs
bG93ZWQoY29uc3QgSURCS2V5KiBpbmRleEtleSwgY29uc3QgSURCS2V5KiBwcmltYXJ5S2V5ID0g
MCk7CiAKICAgICAvLyBJbXBsZW1lbnRzIElEQkluZGV4QmFja2VuZEludGVyZmFjZS4KKyAgICB2
aXJ0dWFsIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgeyByZXR1cm4gbV9uYW1lOyB9CiAgICAgdmlydHVhbCBJREJLZXlQYXRoIGtl
eVBhdGgoKSB7IHJldHVybiBtX2tleVBhdGg7IH0KICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkg
eyByZXR1cm4gbV91bmlxdWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJNZXRhZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0N2U4NGQwZjY4ZTFkYTU0YmE0NDE4OTc0MTE4
OGQzYTJkNmI2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJNZXRh
ZGF0YV9oCisjZGVmaW5lIElEQk1ldGFkYXRhX2gKKworI2luY2x1ZGUgIklEQktleVBhdGguaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGE7CitzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0
YWRhdGEgeworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJEYXRhYmFzZU1l
dGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uKQorICAgICAg
ICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pIHsgfQorICAgIFN0cmlu
ZyBuYW1lOworICAgIFN0cmluZyB2ZXJzaW9uOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0U3RvcmVNYXA7CisgICAgT2JqZWN0U3Rv
cmVNYXAgb2JqZWN0U3RvcmVzOworfTsKKworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEg
eworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7IH0KKyAgICBJREJPYmplY3RTdG9yZU1l
dGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCBhdXRvSW5jcmVtZW50KQorICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBrZXlQYXRo
KGtleVBhdGgpCisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KSB7IH0KKyAg
ICBTdHJpbmcgbmFtZTsKKyAgICBJREJLZXlQYXRoIGtleVBhdGg7CisgICAgYm9vbCBhdXRvSW5j
cmVtZW50OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCSW5kZXhNZXRhZGF0YT4g
SW5kZXhNYXA7CisgICAgSW5kZXhNYXAgaW5kZXhlczsKK307CisKK3N0cnVjdCBJREJJbmRleE1l
dGFkYXRhIHsKKyAgICBJREJJbmRleE1ldGFkYXRhKCkgeyB9CisgICAgSURCSW5kZXhNZXRhZGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnkpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGtl
eVBhdGgoa2V5UGF0aCkKKyAgICAgICAgLCB1bmlxdWUodW5pcXVlKQorICAgICAgICAsIG11bHRp
RW50cnkobXVsdGlFbnRyeSkgeyB9CisgICAgU3RyaW5nIG5hbWU7CisgICAgSURCS2V5UGF0aCBr
ZXlQYXRoOworICAgIGJvb2wgdW5pcXVlOworICAgIGJvb2wgbXVsdGlFbnRyeTsKK307CisKK30K
KworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCTWV0
YWRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCmluZGV4IGIwZmFlODViZjc2OGE4Mjg3NzA5NTI2NTExZjhlODY0Mjc4ODE0
ODAuLjY4YmMxNzE2NWRmNzI1ZTcxNDFjODFjMTg4ZmM3NTZhNDFjNTI5MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJ
REJBbnkuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNl
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXkuaCIK
QEAgLTQ0LDggKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKIAotSURCT2Jq
ZWN0U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQot
ICAgIDogbV9iYWNrZW5kKGlkYk9iamVjdFN0b3JlKQorSURCT2JqZWN0U3RvcmU6OklEQk9iamVj
dFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbikKKyAgICA6IG1fbWV0YWRhdGEobWV0YWRhdGEpCisgICAgLCBt
X2JhY2tlbmQoaWRiT2JqZWN0U3RvcmUpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQogICAgICwgbV9kZWxldGVkKGZhbHNlKQogewpAQCAtNTUsMzQgKzU3LDE0IEBAIElEQk9iamVj
dFN0b3JlOjpJREJPYmplY3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gaWRiT2JqCiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiB9CiAKLVN0
cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0Ci17Ci0gICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZTo6bmFtZSIpOwotICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKLX0KLQot
UGFzc1JlZlB0cjxJREJBbnk+IElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKLXsKLSAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjprZXlQYXRoIik7Ci0gICAgcmV0dXJuIG1fYmFj
a2VuZC0+a2V5UGF0aCgpOwotfQotCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVj
dFN0b3JlOjppbmRleE5hbWVzKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0
b3JlOjppbmRleE5hbWVzIik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+aW5kZXhOYW1lcygpOwot
fQotCi1JREJUcmFuc2FjdGlvbiogSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKCkgY29uc3QK
LXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbiIpOwotICAgIHJl
dHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwotfQotCi1ib29sIElEQk9iamVjdFN0b3JlOjphdXRv
SW5jcmVtZW50KCkgY29uc3QKLXsKLSAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjphdXRv
SW5jcmVtZW50Iik7Ci0gICAgcmV0dXJuIG1fYmFja2VuZC0+YXV0b0luY3JlbWVudCgpOworICAg
IFJlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRl
KCk7CisgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX21ldGFkYXRhLmluZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9tZXRhZGF0YS5p
bmRleGVzLmVuZCgpOyArK2l0KQorICAgICAgICBpbmRleE5hbWVzLT5hcHBlbmQoaXQtPmZpcnN0
KTsKKyAgICBpbmRleE5hbWVzLT5zb3J0KCk7CisgICAgcmV0dXJuIGluZGV4TmFtZXMucmVsZWFz
ZSgpOwogfQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjc5LDggKzI2MSwxMCBAQCBQYXNzUmVmUHRy
PElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQ
dHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShpbmRleEJhY2tlbmQucmVsZWFz
ZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKKyAgICBJREJJbmRleE1ldGFkYXRhIG1l
dGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgUmVmUHRyPElE
QkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0YWRhdGEsIGluZGV4QmFja2VuZC5y
ZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1faW5kZXhNYXAuc2V0
KG5hbWUsIGluZGV4KTsKKyAgICBtX21ldGFkYXRhLmluZGV4ZXMuc2V0KG5hbWUsIG1ldGFkYXRh
KTsKIAogICAgIHJldHVybiBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zMDYsNyArMjkwLDEwIEBA
IFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZGV4QmFj
a2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOworICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGE6OkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBtZGl0ID0gbV9tZXRhZGF0
YS5pbmRleGVzLmZpbmQobmFtZSk7CisgICAgQVNTRVJUKG1kaXQgIT0gbV9tZXRhZGF0YS5pbmRl
eGVzLmVuZCgpKTsKKworICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3Jl
YXRlKG1kaXQtPnNlY29uZCwgaW5kZXhCYWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2Fj
dGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIHJldHVy
biBpbmRleC5yZWxlYXNlKCk7CiB9CkBAIC0zMjUsNiArMzEyLDkgQEAgdm9pZCBJREJPYmplY3RT
dG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAgICAgICAgIGl0LT5zZWNvbmQtPm1hcmtEZWxldGVkKCk7CiAgICAgICAgICAgICBtX2lu
ZGV4TWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChtX21ldGFk
YXRhLmluZGV4ZXMuY29udGFpbnMobmFtZSkpOworICAgICAgICBtX21ldGFkYXRhLmluZGV4ZXMu
cmVtb3ZlKG5hbWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKaW5kZXggODM0YmQ1MGZjMDUzMWRjYTdlZGQ3NWEw
YWMyZTY4YjRhMmY4MjEzYi4uODE4MWViOTMxZmE3MGNjNTkwMDQyZjIyNTYyY2Y3OGRjMmNjZjRj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RT
dG9yZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRl
ICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQk1ldGFk
YXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCkBAIC00OSwx
OCArNTAsMTggQEAgY2xhc3MgSURCQW55OwogCiBjbGFzcyBJREJPYmplY3RTdG9yZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPElEQk9iamVjdFN0b3JlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmU+IGNyZWF0ZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gaWRiT2JqZWN0U3RvcmUsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlKGNvbnN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZSwgdHJhbnNhY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJP
YmplY3RTdG9yZShtZXRhZGF0YSwgYmFja2VuZCwgdHJhbnNhY3Rpb24pKTsKICAgICB9CiAgICAg
fklEQk9iamVjdFN0b3JlKCkgeyB9CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVjdFN0
b3JlIElETAotICAgIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+
IGtleVBhdGgoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGEubmFtZTsgfQorICAgIFBhc3NSZWZQdHI8SURCQW55PiBrZXlQYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhZGF0YS5rZXlQYXRoOyB9CiAgICAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7Ci0gICAgSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uKCkgY29uc3Q7Ci0gICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5z
YWN0aW9uOyB9CisgICAgYm9vbCBhdXRvSW5jcmVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZXRh
ZGF0YS5hdXRvSW5jcmVtZW50OyB9CiAKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGFkZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBhZGQoY29udGV4dCwg
dmFsdWUsIDAsIGVjKTsgIH0KICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IHB1dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBwdXQoY29udGV4dCwgdmFsdWUs
IDAsIGVjKTsgIH0KQEAgLTk3LDEwICs5OCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrRGVs
ZXRlZCgpIHsgbV9kZWxldGVkID0gdHJ1ZTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hl
ZCgpOwogCisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWV0YWRhdGE7IH0KKyAgICB2b2lkIHNldE1ldGFkYXRhKGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmIG1ldGFkYXRhKSB7IG1fbWV0YWRhdGEgPSBtZXRhZGF0YTsgfQorCiBwcml2
YXRlOgotICAgIElEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiwgSURCVHJhbnNhY3Rpb24qKTsKKyAgICBJREJPYmplY3RTdG9yZShjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhJiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2U+LCBJREJUcmFuc2FjdGlvbiopOwogICAgIHZvaWQgcmVtb3ZlVHJhbnNhY3Rpb25G
cm9tUGVuZGluZ0xpc3QoKTsKIAorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9tZXRhZGF0
YTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7
CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBtX3RyYW5zYWN0aW9uOwogICAgIGJvb2wgbV9k
ZWxldGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCBmZWNmODgwY2ExOGQ2OTNi
ZTQ1MTU3NWE4YzE4MGVkYTIzOTM5YmEwLi43ODU0NDk3MTRjZmNmM2ExYmUxNzE3NDUzZjNlM2E4
NTg1MzA0ZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNzIsNiArNzIsMTQg
QEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChj
b25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXAKIHsKIH0KIAorSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV9hdXRvSW5j
cmVtZW50KTsKKyAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1faW5kZXhl
cy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCisgICAgICAgIG1ldGFkYXRh
LmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CisgICAgcmV0
dXJuIG1ldGFkYXRhOworfQorCiBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogewogICAgIFJlZlB0cjxET01TdHJp
bmdMaXN0PiBpbmRleE5hbWVzID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmgKaW5kZXggYmFjZDlkZmMxMmMzZTMyY2I4YjI0Nzg1NTJkNTNmMDExODJjMjA4
ZC4uMDdhYjlmY2UzZGQ4NGZiODBiNzUwODRmY2EzMmI0YWMwNjc3ZTJhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJJREJNZXRh
ZGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpA
QCAtNDAsNiArNDEsNyBAQCBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOwogY2xhc3MgSURC
SW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsK
IGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNjEsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIHZvaWQgc2V0SWQoaW50NjRfdCBpZCkgeyBtX2lkID0gaWQ7IH0KIAor
ICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2aXJ0
dWFsIElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5UGF0aDsgfQogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggNjQxZTU3NjQxNmQ2NzE2ZjJkZjJiZTlmMTI4MjU2YzA1OTU3MjZiZi4uNzA4N2M2
NTdlMDY2ODZjMTdkMTViMzZkODhjNjkyNDlkMjNlOWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTU4LDI1ICsx
NTgsMzQgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXAKICAgICBpZiAoZWMpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9i
amVjdFN0b3JlOjpjcmVhdGUob2JqZWN0U3RvcmVCYWNrZW5kLCB0aGlzKTsKKyAgICBjb25zdCBJ
REJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSA9IG1fZGF0YWJhc2UtPm1ldGFkYXRhKCk7Cisg
ICAgSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIG1k
aXQgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZmluZChuYW1lKTsKKyAgICBBU1NFUlQobWRpdCAh
PSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCkpOworCisgICAgUmVmUHRyPElEQk9iamVjdFN0
b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWRpdC0+c2Vjb25kLCBv
YmplY3RTdG9yZUJhY2tlbmQsIHRoaXMpOwogICAgIG9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBv
YmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKIH0KIAotdm9p
ZCBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVDcmVhdGVkKGNvbnN0IFN0cmluZyYgbmFtZSwg
UGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUpCit2b2lkIElEQlRyYW5zYWN0
aW9uOjpvYmplY3RTdG9yZUNyZWF0ZWQoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
Qk9iamVjdFN0b3JlPiBwcnBPYmplY3RTdG9yZSkKIHsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rp
b25GaW5pc2hlZCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9IHBy
cE9iamVjdFN0b3JlOwogICAgIG1fb2JqZWN0U3RvcmVNYXAuc2V0KG5hbWUsIG9iamVjdFN0b3Jl
KTsKKyAgICBpZiAoaXNWZXJzaW9uQ2hhbmdlKCkpCisgICAgICAgIG1fb2JqZWN0U3RvcmVDbGVh
bnVwTWFwLnNldChvYmplY3RTdG9yZSwgb2JqZWN0U3RvcmUtPm1ldGFkYXRhKCkpOwogfQogCiB2
b2lkIElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJiBuYW1l
KQogewogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBBU1NFUlQoaXNW
ZXJzaW9uQ2hhbmdlKCkpOwogICAgIElEQk9iamVjdFN0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1f
b2JqZWN0U3RvcmVNYXAuZmluZChuYW1lKTsKICAgICBpZiAoaXQgIT0gbV9vYmplY3RTdG9yZU1h
cC5lbmQoKSkgewogICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0g
aXQtPnNlY29uZDsKICAgICAgICAgbV9vYmplY3RTdG9yZU1hcC5yZW1vdmUobmFtZSk7CiAgICAg
ICAgIG9iamVjdFN0b3JlLT5tYXJrRGVsZXRlZCgpOworICAgICAgICBtX29iamVjdFN0b3JlQ2xl
YW51cE1hcC5zZXQob2JqZWN0U3RvcmUsIG9iamVjdFN0b3JlLT5tZXRhZGF0YSgpKTsKICAgICB9
CiB9CiAKQEAgLTIzOSw2ICsyNDgsMTEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6b25BYm9ydCgp
CiAgICAgICAgIHJlcXVlc3QtPmFib3J0KCk7CiAgICAgfQogCisgICAgaWYgKGlzVmVyc2lvbkNo
YW5nZSgpKSB7CisgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YU1hcDo6aXRlcmF0
b3IgaXQgPSBtX29iamVjdFN0b3JlQ2xlYW51cE1hcC5iZWdpbigpOyBpdCAhPSBtX29iamVjdFN0
b3JlQ2xlYW51cE1hcC5lbmQoKTsgKytpdCkKKyAgICAgICAgICAgIGl0LT5maXJzdC0+c2V0TWV0
YWRhdGEoaXQtPnNlY29uZCk7CisgICAgfQorICAgIG1fb2JqZWN0U3RvcmVDbGVhbnVwTWFwLmNs
ZWFyKCk7CiAgICAgY2xvc2VPcGVuQ3Vyc29ycygpOwogICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0
aW9uRmluaXNoZWQodGhpcyk7CiAKQEAgLTI1MSw2ICsyNjUsNyBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpvbkFib3J0KCkKIHZvaWQgSURCVHJhbnNhY3Rpb246Om9uQ29tcGxldGUoKQogewogICAg
IEFTU0VSVCghbV90cmFuc2FjdGlvbkZpbmlzaGVkKTsKKyAgICBtX29iamVjdFN0b3JlQ2xlYW51
cE1hcC5jbGVhcigpOwogICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKICAgICBtX2RhdGFiYXNlLT50
cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA0Zjk1ZjViMTlkMDk0OThiOGMwM2Fj
NjJlODE2ZTk3ODM4ODIzMmQyLi4wYjJkZWM2ZWMwOGYxZDFlMmI5NjBlZGIwMTE2ZmNmODlkMWNm
OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSAiSURCTWV0YWRhdGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC0xNDMsNiArMTQ0LDkgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+ID4gSURCT2JqZWN0U3RvcmVNYXA7
CiAgICAgSURCT2JqZWN0U3RvcmVNYXAgbV9vYmplY3RTdG9yZU1hcDsKIAorICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8SURCT2JqZWN0U3RvcmU+LCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhTWFwOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGFNYXAg
bV9vYmplY3RTdG9yZUNsZWFudXBNYXA7CisKICAgICBIYXNoU2V0PElEQkN1cnNvcio+IG1fb3Bl
bkN1cnNvcnM7CiAKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggOGFlMGUwY2VmOTE0NjVhYTM5MTZkZTVjODA4MWMyZDBjOWNmZjA0OC4u
ZmJlN2ExNWMwMDM0OWUwOWExMTg0NDgxMTljYjk4YmE5YjNkYmZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtMTQ5Miw2ICsxNDkyLDcgQEAKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJCYWNraW5nU3RvcmUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRi
L0lEQk1ldGFkYXRhLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDllZmJlNjQ2NDUyM2EwNjIzZmMwOTY3NzAzNTE0NzJjNDIwMDhk
YWYuLjE1NjAwMzMzZjU5ODZlZmNlODYxZjBiMzExNmMwMGQzN2MyMDIxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzU5
LDYgKzEyNzU5LDcgQEAKIAkJQkNDNUJERkUwQzBFOTMxMTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVT
aGVldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NTdHls
ZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNUJERkYwQzBFOTMx
MTAwMTFDMkRCIC8qIEpTQ1NTU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNDU1NTdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQzY0RjYwMERDRkI4NEUwMDgxRUYzQiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDEwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQkNDNjUxNDUx
NTkyOTRDMzAwQUNDOUU0IC8qIElEQk1ldGFkYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IElEQk1ldGFkYXRhLmg7IHBhdGggPSBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRh
ZGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0M4Q0ZDQTA5ODZDRDI0MDAx
NDBCRjIgLyogQ29sb3JEYXRhLmdwZXJmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDb2xvckRh
dGEuZ3BlcmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQ0JBRDNBMEMxOEJGRjgw
MENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0NCQUQzRTBDMThDMTQyMDBDRTg5MEYgLyogSlNIVE1MQ29s
bGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzU3MCw2ICsx
NzU3MSw3IEBACiAJCQkJOTcxMkE1OEQxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVsREJCYWNr
aW5nU3RvcmUuaCAqLywKIAkJCQk5NzEyQTU4RTE1MDA0RURBMDA0OEFGMTAgLyogSURCTGV2ZWxE
QkNvZGluZy5jcHAgKi8sCiAJCQkJOTcxMkE1OEYxNTAwNEVEQTAwNDhBRjEwIC8qIElEQkxldmVs
REJDb2RpbmcuaCAqLywKKwkJCQlCQ0M2NTE0NTE1OTI5NEMzMDBBQ0M5RTQgLyogSURCTWV0YWRh
dGEuaCAqLywKIAkJCQk5NzEyQTU5MDE1MDA0RURBMDA0OEFGMTAgLyogSURCT2JqZWN0U3RvcmUu
Y3BwICovLAogCQkJCTk3MTJBNTkxMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJPYmplY3RTdG9yZS5o
ICovLAogCQkJCTk3MTJBNTkyMTUwMDRFREEwMDQ4QUYxMCAvKiBJREJPYmplY3RTdG9yZS5pZGwg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNzRkYjI1OGJlMjBmZWJhNjc2ZDhk
MGU0NzA2NjMxZWNmNzE0YjgwZi4uNmZhNDNmMTAxNDU0N2JiNjJmODJkNTg5ZThmNmMzODM0MjFl
ZTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNTYxLDYgKzU2MSw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJLZXkuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYklEQktleVBhdGguY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQktleVJhbmdl
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJREJNZXRhZGF0YS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJNZXRhZGF0YS5oCmluZGV4IDQxMGQ5ZmFjZjhhNzFhMjNkYzYyOTg5MmFmM2Jj
MzZlNTExZjRhMjMuLjFjMzNkMWIwODBkNzU2ODJlZGNlZDJmZGZhYmVhNGIxZWU0ZDg2NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaApAQCAt
MzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IElE
QkRhdGFiYXNlTWV0YWRhdGE7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2Vi
SURCTWV0YWRhdGEgewpAQCAtNjIsNiArNjYsMTEgQEAgc3RydWN0IFdlYklEQk1ldGFkYXRhIHsK
ICAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQogICAgICAgICAgICAgLCBtdWx0aUVudHJ5KGZh
bHNlKSB7IH0KICAgICB9OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViSURC
TWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYpOworICAgIG9wZXJh
dG9yIFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdDsKKyNlbmRpZgogfTsKIAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHAKaW5kZXggNTg2NjFlYmFiODNmNWJjZjhhNGNhODlhYmU3ZGI4MTA4NGM5MDVm
NC4uMTA3ZWM2M2IzYjc4ODNlMDllZWEzMzdjNTkxNWMzNWFkNDBhMWQzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRl
ICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUg
IldlYkRPTVN0cmluZ0xpc3QuaCIKQEAgLTYwLDYgKzYxLDExIEBAIElEQkRhdGFiYXNlQmFja2Vu
ZFByb3h5Ojp+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoKQogewogfQogCitJREJEYXRhYmFzZU1l
dGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm1ldGFkYXRhKCk7Cit9CisKIFN0cmluZyBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0
YWJhc2UtPm5hbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IGU4MTdlZGYxOTk1ZGEyYTg2N2U5NTU5MDZkOTg5
NzBlYjM0NGY5MmIuLmIwNTU1MmNjYmYxMTcyMDVjY2U1NzRjZTlhYWQyODVmOWViYmVmOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuaApAQCAtNDIsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxX
ZWJJREJEYXRhYmFzZT4pOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZFByb3h5KCk7
CiAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJp
bmcgdmVyc2lvbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01T
dHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAyNjYyZjgwMWY3NWYy
MGUzMTUxZTRlODcwOGI1ZWZhNzM2Y2M3YWU2Li4zOTgwM2UxNDU5M2VkNzM0MDk2YWE2Yzc4MzI4
NTljYzJiNmUyNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkRhdGFiYXNlSW1wbC5jcHAKQEAgLTMyLDkgKzMyLDExIEBACiAjaW5jbHVkZSAiSURCQ2FsbGJh
Y2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgiCisjaW5jbHVkZSAiSURCTWV0YWRh
dGEuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJXZWJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgorI2luY2x1ZGUgIldlYklEQk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAKQEAgLTUx
LDYgKzUzLDExIEBAIFdlYklEQkRhdGFiYXNlSW1wbDo6fldlYklEQkRhdGFiYXNlSW1wbCgpCiB7
CiB9CiAKK1dlYklEQk1ldGFkYXRhIFdlYklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBtX2RhdGFiYXNlQmFja2VuZC0+bWV0YWRhdGEoKTsKK30KKwogV2Vi
U3RyaW5nIFdlYklEQkRhdGFiYXNlSW1wbDo6bmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZGF0YWJhc2VCYWNrZW5kLT5uYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDE5MGQ3ZTJkYzMyOWIwNmZiM2FlNmY4OTg0YjMx
YjJkMjUyYmFiODIuLjVlOTg5ZTAwZWVkYmEyMDFiZGVkMGE2ZGI3OTc5NTc1YmU5NTA5ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5OwogY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7CitjbGFzcyBXZWJJ
REJEYXRhYmFzZU1ldGFkYXRhOwogY2xhc3MgV2ViSURCT2JqZWN0U3RvcmU7CiBjbGFzcyBXZWJJ
REJUcmFuc2FjdGlvbjsKIApAQCAtNDksNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgV2ViSURCRGF0
YWJhc2VJbXBsKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+KTsKICAgICB2aXJ0dWFsIH5XZWJJREJEYXRhYmFzZUltcGwoKTsKIAorICAgIHZpcnR1
YWwgV2ViSURCTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBuYW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXZWJTdHJpbmcgdmVyc2lvbigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgV2ViRE9NU3RyaW5nTGlzdCBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzM1MDYzZWYwZmYzM2JiOGE2YzZkMmVlYjgwNjU3MGIwMWZkNTljYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYklE
Qk1ldGFkYXRhLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
IklEQk1ldGFkYXRhLmgiCisjaW5jbHVkZSAiV2ViSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklEQk1l
dGFkYXRhOjpXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSkKK3sKKyAgICBuYW1lID0gbWV0YWRhdGEubmFtZTsKKyAgICB2ZXJzaW9uID0g
bWV0YWRhdGEudmVyc2lvbjsKKyAgICBvYmplY3RTdG9yZXMgPSBXZWJWZWN0b3I8T2JqZWN0U3Rv
cmU+KHN0YXRpY19jYXN0PHNpemVfdD4obWV0YWRhdGEub2JqZWN0U3RvcmVzLnNpemUoKSkpOwor
CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0
U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIHN0b3JlSXRlcmF0b3IgPSBtZXRhZGF0YS5vYmplY3RT
dG9yZXMuYmVnaW4oKTsgc3RvcmVJdGVyYXRvciAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5k
KCk7ICsrc3RvcmVJdGVyYXRvcikgeworICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZSA9IHN0b3JlSXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgT2JqZWN0
U3RvcmUgd2ViT2JqZWN0U3RvcmU7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLm5hbWUgPSBvYmpl
Y3RTdG9yZS5uYW1lOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoID0gb2JqZWN0U3Rv
cmUua2V5UGF0aDsKKyAgICAgICAgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCA9IG9iamVj
dFN0b3JlLmF1dG9JbmNyZW1lbnQ7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLmluZGV4ZXMgPSBX
ZWJWZWN0b3I8SW5kZXg+KHN0YXRpY19jYXN0PHNpemVfdD4ob2JqZWN0U3RvcmUuaW5kZXhlcy5z
aXplKCkpKTsKKworICAgICAgICBzaXplX3QgaiA9IDA7CisgICAgICAgIGZvciAoSURCT2JqZWN0
U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGluZGV4SXRlcmF0b3IgPSBv
YmplY3RTdG9yZS5pbmRleGVzLmJlZ2luKCk7IGluZGV4SXRlcmF0b3IgIT0gb2JqZWN0U3RvcmUu
aW5kZXhlcy5lbmQoKTsgKytpbmRleEl0ZXJhdG9yKSB7CisgICAgICAgICAgICBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiBpbmRleCA9IGluZGV4SXRlcmF0b3ItPnNlY29uZDsKKyAgICAgICAgICAg
IEluZGV4IHdlYkluZGV4OworICAgICAgICAgICAgd2ViSW5kZXgubmFtZSA9IGluZGV4Lm5hbWU7
CisgICAgICAgICAgICB3ZWJJbmRleC5rZXlQYXRoID0gaW5kZXgua2V5UGF0aDsKKyAgICAgICAg
ICAgIHdlYkluZGV4LnVuaXF1ZSA9IGluZGV4LnVuaXF1ZTsKKyAgICAgICAgICAgIHdlYkluZGV4
Lm11bHRpRW50cnkgPSBpbmRleC5tdWx0aUVudHJ5OworICAgICAgICAgICAgd2ViT2JqZWN0U3Rv
cmUuaW5kZXhlc1tqKytdID0gd2ViSW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgb2JqZWN0U3Rv
cmVzW2krK10gPSB3ZWJPYmplY3RTdG9yZTsKKyAgICB9Cit9CisKK1dlYklEQk1ldGFkYXRhOjpv
cGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIGRiKG5hbWUsIHZlcnNpb24pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U3RvcmVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IE9iamVjdFN0b3JlIHdlYk9i
amVjdFN0b3JlID0gb2JqZWN0U3RvcmVzW2ldOworICAgICAgICBJREJPYmplY3RTdG9yZU1ldGFk
YXRhIG9iamVjdFN0b3JlKHdlYk9iamVjdFN0b3JlLm5hbWUsIHdlYk9iamVjdFN0b3JlLmtleVBh
dGgsIHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQpOworCisgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgd2ViT2JqZWN0U3RvcmUuaW5kZXhlcy5zaXplKCk7ICsraikgeworICAgICAg
ICAgICAgY29uc3QgSW5kZXggd2ViSW5kZXggPSB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2pdOwor
ICAgICAgICAgICAgSURCSW5kZXhNZXRhZGF0YSBpbmRleCh3ZWJJbmRleC5uYW1lLCB3ZWJJbmRl
eC5rZXlQYXRoLCB3ZWJJbmRleC51bmlxdWUsIHdlYkluZGV4Lm11bHRpRW50cnkpOworICAgICAg
ICAgICAgb2JqZWN0U3RvcmUuaW5kZXhlcy5zZXQoaW5kZXgubmFtZSwgaW5kZXgpOworICAgICAg
ICB9CisgICAgICAgIGRiLm9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmUubmFtZSwgb2JqZWN0
U3RvcmUpOworICAgIH0KKyAgICByZXR1cm4gZGI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWFmZjAxMjlk
YTc1ZmJlMmFlMTllMmEzODMzZTI0OTQ2YTViZDRiNC4uNGU1MzBkYjRjZGNhZDYzODMyYmQyZTYz
NDkwZDc3Zjg4YmY2MmFlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTbmFw
c2hvdCBtZXRhZGF0YSBpbiBmcm9udCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODQ2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tZXRhZGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL21ldGFkYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9tZXRhZGF0YS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGZp
cnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcy50cmFucy5vbmNvbXBs
ZXRlKToKKyAgICAgICAgKGZpcnN0T3Blbi5yZXF1ZXN0Lm9uc3VjY2Vzcy5yZXF1ZXN0Lm9uc3Vj
Y2Vzcyk6CisgICAgICAgIChmaXJzdE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAo
Zmlyc3RPcGVuKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVz
dC5vbnN1Y2Nlc3MudHJhbnMub25jb21wbGV0ZSk6CisgICAgICAgIChzZWNvbmRPcGVuLnJlcXVl
c3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHNlY29uZE9wZW4ucmVx
dWVzdC5vbnN1Y2Nlc3MpOgorICAgICAgICAoc2Vjb25kT3Blbik6CisgICAgICAgICh0aGlyZE9w
ZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MudHJhbnMub25hYm9ydCk6Cisg
ICAgICAgICh0aGlyZE9wZW4ucmVxdWVzdC5vbnN1Y2Nlc3MucmVxdWVzdC5vbnN1Y2Nlc3MpOgor
ICAgICAgICAodGhpcmRPcGVuLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRoaXJkT3Bl
bik6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNj
ZXNzLnRyYW5zLm9uY29tcGxldGUpOgorICAgICAgICAoZm91cnRoT3Blbi5yZXF1ZXN0Lm9uc3Vj
Y2Vzcy5yZXF1ZXN0Lm9uc3VjY2Vzcyk6CisgICAgICAgIChmb3VydGhPcGVuLnJlcXVlc3Qub25z
dWNjZXNzKToKKyAgICAgICAgKGZvdXJ0aE9wZW4pOgorICAgICAgICAoY2hlY2tTdGF0ZSk6CisK
IDIwMTItMDYtMjEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3VwcG9ydCBzZXBhcmF0ZSBzY3JpcHQgY29tcGlsYXRpb24g
YW5kIGV4ZWN1dGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L21ldGFkYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21l
dGFkYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDM2ZDQ3NWFhNDI3YmFjZmFmZjEzNDdh
MzY0MWY4NWY5NzhkMjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbWV0YWRhdGEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsODggQEAKK1Rlc3QgSW5k
ZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2Vs
Zi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWRE
QiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUK
K3JlcXVlc3QgPSBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQorCitmaXJzdE9wZW4o
KToKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitjb25uZWN0aW9uMSA9IHJlcXVl
c3QucmVzdWx0CityZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScpCit0cmFucyA9
IHJlcXVlc3QucmVzdWx0Citjb25uZWN0aW9uMXN0b3JlMSA9IGNvbm5lY3Rpb24xLmNyZWF0ZU9i
amVjdFN0b3JlKCdzdG9yZTEnKQorY29ubmVjdGlvbjFzdG9yZTEuY3JlYXRlSW5kZXgoJ2luZGV4
MScsICdwYXRoJykKK1BBU1MgY29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVj
dGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3Jl
MS5pbmRleE5hbWVzLmxlbmd0aCBpcyAxCitDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQg
YmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24xLmNsb3NlKCkKKworc2Vjb25kT3Bl
bigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24yID0gcmVx
dWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uMi5zZXRWZXJzaW9uKCcyJykKK3RyYW5z
ID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTIn
KQorY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5l
Y3Rpb24yc3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDInLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rp
b24yLnZlcnNpb24gaXMgIjIiCitQQVNTIGNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVu
Z3RoIGlzIDIKK1BBU1MgY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMgor
Q29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90dGVkIG9uIGNsb3NlCitj
b25uZWN0aW9uMi5jbG9zZSgpCisKK3RoaXJkT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5v
cGVuKGRibmFtZSkKK2Nvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25u
ZWN0aW9uMy5zZXRWZXJzaW9uKCczJykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rp
b24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKQorY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFu
cy5vYmplY3RTdG9yZSgnc3RvcmUxJykKK2Nvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUluZGV4KCdp
bmRleDMnLCAncGF0aCcpCitQQVNTIGNvbm5lY3Rpb24zLnZlcnNpb24gaXMgIjMiCitQQVNTIGNv
bm5lY3Rpb24zLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjNz
dG9yZTEuaW5kZXhOYW1lcy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hv
dWxkIGJlIHJldmVydGVkIG9uIGFib3J0Cit0cmFucy5hYm9ydCgpCitDb25uZWN0aW9uJ3MgcHJv
cGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQgb24gY2xvc2UKK2Nvbm5lY3Rpb24zLmNsb3Nl
KCkKKworZm91cnRoT3BlbigpOgorcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRibmFtZSkKK2Nv
bm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQKK3JlcXVlc3QgPSBjb25uZWN0aW9uNC5zZXRWZXJz
aW9uKCc0JykKK3RyYW5zID0gcmVxdWVzdC5yZXN1bHQKK2Nvbm5lY3Rpb240LmNyZWF0ZU9iamVj
dFN0b3JlKCdzdG9yZTQnKQorY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUxJykKK2Nvbm5lY3Rpb240c3RvcmUxLmNyZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcp
CitQQVNTIGNvbm5lY3Rpb240LnZlcnNpb24gaXMgIjQiCitQQVNTIGNvbm5lY3Rpb240Lm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIGlzIDMKK1BBU1MgY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1l
cy5sZW5ndGggaXMgMworQ29ubmVjdGlvbidzIHByb3BlcnRpZXMgc2hvdWxkIGJlIHNuYXBzaG90
dGVkIG9uIGNsb3NlCitjb25uZWN0aW9uNC5jbG9zZSgpCisKK2NoZWNrU3RhdGUoKToKK1BBU1Mg
Y29ubmVjdGlvbjEudmVyc2lvbiBpcyAiMSIKK1BBU1MgY29ubmVjdGlvbjEub2JqZWN0U3RvcmVO
YW1lcy5sZW5ndGggaXMgMQorUEFTUyBjb25uZWN0aW9uMXN0b3JlMS5pbmRleE5hbWVzLmxlbmd0
aCBpcyAxCisKK1BBU1MgY29ubmVjdGlvbjIudmVyc2lvbiBpcyAiMiIKK1BBU1MgY29ubmVjdGlv
bjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25uZWN0aW9uMnN0b3JlMS5p
bmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjMudmVyc2lvbiBpcyAiMiIK
K1BBU1MgY29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGggaXMgMgorUEFTUyBjb25u
ZWN0aW9uM3N0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAyCisKK1BBU1MgY29ubmVjdGlvbjQu
dmVyc2lvbiBpcyAiNCIKK1BBU1MgY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgg
aXMgMworUEFTUyBjb25uZWN0aW9uNHN0b3JlMS5pbmRleE5hbWVzLmxlbmd0aCBpcyAzCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDJjZmU1
OWVjNDVlYzA3NGU4M2ViMzhiZjU4YmYyYjFiODUyZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9tZXRh
ZGF0YS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9tZXRhZGF0YS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNGM0N2M3MTFlZWZiNTgyNjg3NmExYzJlYzNlZWNmMDAwN2VlYzQ0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL21ldGFkYXRh
LmpzCkBAIC0wLDAgKzEsMTY2IEBACitpZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1w
b3J0U2NyaXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsK
KyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKworZGVzY3JpcHRpb24oIlRlc3Qg
SW5kZXhlZERCIGRhdGFiYXNlIG1ldGFkYXRhIG11dGF0aW9uL3NuYXBzaG90dGluZyIpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxB
bmRMb2coImRibmFtZSA9IHNlbGYubG9jYXRpb24ucGF0aG5hbWUiKTsKKyAgICBldmFsQW5kTG9n
KCJyZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkiKTsKKyAgICByZXF1
ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICByZXF1ZXN0Lm9uc3Vj
Y2VzcyA9IGZpcnN0T3BlbjsKK30KKworZnVuY3Rpb24gZmlyc3RPcGVuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoImZpcnN0T3BlbigpOiIpOworICAgIGV2YWxBbmRMb2coInJlcXVl
c3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5l
eHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjEgPSByZXF1ZXN0LnJlc3VsdCIpOwor
ICAgICAgICBldmFsQW5kTG9nKCJyZXF1ZXN0ID0gY29ubmVjdGlvbjEuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwor
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZXZh
bEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICAgICAgZXZhbEFuZExv
ZygiY29ubmVjdGlvbjFzdG9yZTEgPSBjb25uZWN0aW9uMS5jcmVhdGVPYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24xc3RvcmUxLmNyZWF0
ZUluZGV4KCdpbmRleDEnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY29ubmVjdGlvbjEub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24xc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjEiKTsK
KworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMS5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgc2Vjb25kT3BlbigpOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBzZWNvbmRPcGVuKCkKK3sKKyAgICBkZWJ1
ZygiIik7CisgICAgZGVidWcoInNlY29uZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1
ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVu
ZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yID0gcmVxdWVzdC5yZXN1bHQiKTsK
KyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24yLnNldFZlcnNpb24oJzIn
KSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsK
KyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2
YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRM
b2coImNvbm5lY3Rpb24yLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTInKSIpOworICAgICAgICAg
ICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjJzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24yc3RvcmUxLmNyZWF0
ZUluZGV4KCdpbmRleDInLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIyIik7CisgICAgICAgICAgICBzaG91bGRC
ZSgiY29ubmVjdGlvbjIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjIiKTsK
KworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrOwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMi5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgdGhpcmRPcGVuKCk7CisgICAgICAgICAgICB9OworICAg
ICAgICB9OworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRoaXJkT3BlbigpCit7CisgICAgZGVidWco
IiIpOworICAgIGRlYnVnKCJ0aGlyZE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJyZXF1ZXN0
ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7
CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAg
ICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb24zLnNldFZlcnNpb24oJzMnKSIp
OworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAg
ICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2co
ImNvbm5lY3Rpb24zLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTMnKSIpOworICAgICAgICAgICAg
ZXZhbEFuZExvZygiY29ubmVjdGlvbjNzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgnc3RvcmUx
JykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb24zc3RvcmUxLmNyZWF0ZUlu
ZGV4KCdpbmRleDMnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiY29ubmVjdGlvbjMudmVyc2lvbiIsICIzIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjMub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAgICAgICAg
c2hvdWxkQmUoImNvbm5lY3Rpb24zc3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMiKTsKKwor
ICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IHVuZXhwZWN0ZWRDb21wbGV0ZUNhbGxiYWNr
OworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0ZWQg
b24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uMy5jbG9z
ZSgpIik7CisgICAgICAgICAgICAgICAgZm91cnRoT3BlbigpOworICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgcmV2ZXJ0
ZWQgb24gYWJvcnQiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coInRyYW5zLmFib3J0KCkiKTsK
KyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBmb3VydGhPcGVuKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoImZvdXJ0aE9wZW4oKToiKTsKKyAgICBldmFsQW5kTG9nKCJy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJuYW1lKSIpOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240ID0gcmVxdWVzdC5yZXN1bHQi
KTsKKyAgICAgICAgZXZhbEFuZExvZygicmVxdWVzdCA9IGNvbm5lY3Rpb240LnNldFZlcnNpb24o
JzQnKSIpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFj
azsKKyAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGV2YWxBbmRMb2coInRyYW5zID0gcmVxdWVzdC5yZXN1bHQiKTsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coImNvbm5lY3Rpb240LmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZTQnKSIpOworICAgICAg
ICAgICAgZXZhbEFuZExvZygiY29ubmVjdGlvbjRzdG9yZTEgPSB0cmFucy5vYmplY3RTdG9yZSgn
c3RvcmUxJykiKTsKKyAgICAgICAgICAgIGV2YWxBbmRMb2coImNvbm5lY3Rpb240c3RvcmUxLmNy
ZWF0ZUluZGV4KCdpbmRleDQnLCAncGF0aCcpIik7CisKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgICAgICAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjQub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImNvbm5lY3Rpb240c3RvcmUxLmluZGV4TmFtZXMubGVuZ3RoIiwgIjMi
KTsKKworICAgICAgICAgICAgdHJhbnMub25hYm9ydCA9IHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNr
OworICAgICAgICAgICAgdHJhbnMub25jb21wbGV0ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGRlYnVnKCJDb25uZWN0aW9uJ3MgcHJvcGVydGllcyBzaG91bGQgYmUgc25hcHNob3R0
ZWQgb24gY2xvc2UiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJjb25uZWN0aW9uNC5j
bG9zZSgpIik7CisgICAgICAgICAgICAgICAgY2hlY2tTdGF0ZSgpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgfTsKKyAgICB9OworfQorCitmdW5jdGlvbiBjaGVja1N0YXRlKCkKK3sKKyAgICBk
ZWJ1ZygiIik7CisgICAgZGVidWcoImNoZWNrU3RhdGUoKToiKTsKKworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygiY29ubmVjdGlvbjEudmVyc2lvbiIsICIxIik7CisgICAgc2hvdWxkQmUoImNv
bm5lY3Rpb24xLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICBzaG91bGRCZSgi
Y29ubmVjdGlvbjFzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMSIpOworICAgIGRlYnVnKCIi
KTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjIudmVyc2lvbiIsICIy
Iik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24yLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwg
IjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjJzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgi
LCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiY29u
bmVjdGlvbjMudmVyc2lvbiIsICIyIik7CisgICAgc2hvdWxkQmUoImNvbm5lY3Rpb24zLm9iamVj
dFN0b3JlTmFtZXMubGVuZ3RoIiwgIjIiKTsKKyAgICBzaG91bGRCZSgiY29ubmVjdGlvbjNzdG9y
ZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMiIpOworICAgIGRlYnVnKCIiKTsKKworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiY29ubmVjdGlvbjQudmVyc2lvbiIsICI0Iik7CisgICAgc2hvdWxk
QmUoImNvbm5lY3Rpb240Lm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjMiKTsKKyAgICBzaG91
bGRCZSgiY29ubmVjdGlvbjRzdG9yZTEuaW5kZXhOYW1lcy5sZW5ndGgiLCAiMyIpOworICAgIGRl
YnVnKCIiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit0ZXN0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>