<?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>97834</bug_id>
          
          <creation_ts>2012-09-27 17:24:10 -0700</creation_ts>
          <short_desc>IndexedDB: promote objectstore/index backend ids to the frontend</short_desc>
          <delta_ts>2012-10-04 15:38:15 -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>
          
          <blocked>98085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jsbell</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730043</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-27 17:24:10 -0700</bug_when>
    <thetext>IndexedDB: promote objectstore/index backend ids to the frontend</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730046</commentid>
    <comment_count>1</comment_count>
      <attachid>166102</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-27 17:24:34 -0700</bug_when>
    <thetext>Created attachment 166102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730049</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-09-27 17:25:50 -0700</bug_when>
    <thetext>jsbell/dgrogan - this is a WIP - this passes all the tests but I think I need to do some chromium plumbing before I can land this cleanly. Mind taking a look at the Modules/indexeddb side of things in the meantime to make sure this looks kosher?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730050</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 17:27:18 -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>730066</commentid>
    <comment_count>4</comment_count>
      <attachid>166102</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-27 17:49:00 -0700</bug_when>
    <thetext>Comment on attachment 166102
Patch

Attachment 166102 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14034992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730104</commentid>
    <comment_count>5</comment_count>
      <attachid>166102</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-27 18:50:20 -0700</bug_when>
    <thetext>Comment on attachment 166102
Patch

Attachment 166102 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14054127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731003</commentid>
    <comment_count>6</comment_count>
      <attachid>166102</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-09-28 14:44:45 -0700</bug_when>
    <thetext>Comment on attachment 166102
Patch

This looks pretty much as I expected. Nits and suggestions:

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:52
&gt; +    virtual bool getIDBDatabaseMetaData(const String&amp; name, String&amp; foundStringVersion, int64_t&amp; foundIntVersion, int64_t&amp; foundId, int64_t&amp; maxObjectStoreId) = 0;

At some point it would make sense to have this populate an IDBDatatabaseMetadata object (but not this patch)

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:174
&gt; +    m_metadata.maxObjectStoreId++;

Prefer pre-increment unless taking advantage of the special behavior of post-increment.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:208
&gt; +    if (!getInt(db, maxObjectStoreIdKey, maxObjectStoreId))

It looks like this is to match the previous behavior in getNewObjectStoreId (where this key may not be present).

It might make the overall code cleaner to do a &quot;schema change&quot; and add this to setUpMetadata(). setUpMetadata would read as:

const latestSchemaVersion = 2;
if (schemaVersion &lt; 1) {
  // current code that adds int versions for each database
  schemaVersion = 1;
}
if (schemaVersion &lt; 2) {
  // new code to ensure MaxObjectStoreId is set for each database
  schemaVersion = 2;
}
ASSERT(schemaVersion == latestSchemaVersion);

.. and maybe we factor out the &quot;for each database&quot; logic a bit.

(In hindsight, we should have been more aggressive about doing this. We could also do this as a separate patch to land first.)

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:321
&gt; +    maxObjectStoreId = getMaxObjectStoreId(m_db.get(), foundId);

Ideally this would follow the same pattern as the other accessors, and just be getInt (See above.)

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:531
&gt; +    int64_t maxObjectStoreId = getMaxObjectStoreId(transaction, maxObjectStoreIdKey);

This is only used for the following ASSERT, correct? Wrap this plus the ASSERT in #if DEBUG to avoid unnecessary work in Release builds.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:532
&gt; +    ASSERT_WITH_MESSAGE(objectStoreId &gt; maxObjectStoreId, &quot;New database ids must be increasing.&quot;);

Nit: &quot;object store ids&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:939
&gt;      if (!getInt(transaction, maxIndexIdKey, maxIndexId))

Wrap this in an #if DEBUG guard, since it&apos;s only needed for the ASSERT.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:950
&gt; +    // FIXME: this is just a sanity check

Still relevant?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp:422
&gt; +    m_metadata.maxIndexId++;

Prefer pre-increment unless taking advantage of the special behavior of post-increment.

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp:436
&gt; +    ASSERT_WITH_MESSAGE(!m_indexes.contains(name), &quot;Indexes alread contain %s&quot;, name.utf8().data());

Typo: already

&gt; Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp:75
&gt; +    RefPtr&lt;IDBObjectStoreBackendInterface&gt; objectStore = m_databaseBackend-&gt;createObjectStore(-1, name, keyPath, autoIncrement, transaction.getIDBTransactionBackendInterface(), ec);

I assume this is a work in progress, and the magic number will reference a constant for &quot;make one up for me&quot; during the transition period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734116</commentid>
    <comment_count>7</comment_count>
      <attachid>166977</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-03 15:51:10 -0700</bug_when>
    <thetext>Created attachment 166977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734139</commentid>
    <comment_count>8</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-03 16:08:25 -0700</bug_when>
    <thetext>jsbell@ - finally we have the first part of this.

The key here is that after this lands, the webkit side will support both explicit ids and &quot;autogenerate&quot; ids (i.e. -1) - when I land the chromium side, explicit ids will be used, and then then I will clean up the webkit side of things and remove all support for &quot;autogenerate&quot; ids.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734154</commentid>
    <comment_count>9</comment_count>
      <attachid>166977</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 16:23:03 -0700</bug_when>
    <thetext>Comment on attachment 166977
Patch

Attachment 166977 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14132817</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734217</commentid>
    <comment_count>10</comment_count>
      <attachid>166998</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-03 16:54:53 -0700</bug_when>
    <thetext>Created attachment 166998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734224</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-03 17:04:48 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=166977&amp;action=review

Overall LGTM (not the way I&apos;ve split up these multi-part patches in the past, but should work)

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:49
&gt; +    // FIXME: Remove these when chromium plumbing has landed: https://bugs.webkit.org/show_bug.cgi?id=98085

I&apos;d change this (and similar comments) to: FIXME: Remove when switch to front-end ID management is complete: https://bugs.webkit.org/show_bug.cgi?id=98085

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:193
&gt; +    ASSERT_WITH_MESSAGE(id == AutogenerateObjectStoreId || id &gt; m_maxObjectStoreId, &quot;createObjectStore with %llu but needed something bigger than %lld&quot;, id, m_maxObjectStoreId);

Ideally, this could ASSERT(id == AutogenerateObjectStoreId || id == m_maxObjectStoreId + 1), but from offline conversations there are some edge cases which prevent that. Maybe a bug/FIXME to track adding that assertion and/or test those edge cases explicitly?

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:627
&gt; +    ASSERT_WITH_MESSAGE(maxIndexIds.size() == ids.size(), &quot;Expected %lu maxIndexIds, but got %lu&quot;, ids.size(), maxIndexIds.size());

I don&apos;t think this merits a message.

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:60
&gt; +    virtual PassRefPtr&lt;IDBObjectStoreBackendInterface&gt; createObjectStore(int64_t, const String&amp; name, const IDBKeyPath&amp;, bool autoIncrement, IDBTransactionBackendInterface*, ExceptionCode&amp;) = 0;

Name the argument, since it isn&apos;t obviously an ID given the type.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:545
&gt; +    if (objectStoreId == -1)

Should this be IDBBackingStore::AutogenerateObjectStoreId ?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:964
&gt; +    if (indexId == -1)

Should this be IDBBackingStore::AutogenerateIndexId?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:980
&gt; +    if (indexId == -1)

Should this be IDBBackingStore::AutogenerateIndexId?

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendInterface.h:62
&gt; +    static const int64_t AutogenerateIndexId = -1;

Should this be IDBBackingStore::AutogenerateIndexId or are the uses separate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734251</commentid>
    <comment_count>12</comment_count>
      <attachid>166998</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 17:32:15 -0700</bug_when>
    <thetext>Comment on attachment 166998
Patch

Attachment 166998 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14129854</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734259</commentid>
    <comment_count>13</comment_count>
      <attachid>167007</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-03 17:39:07 -0700</bug_when>
    <thetext>Created attachment 167007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734283</commentid>
    <comment_count>14</comment_count>
      <attachid>167007</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-03 18:07:39 -0700</bug_when>
    <thetext>Comment on attachment 167007
Patch

Attachment 167007 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14126995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734305</commentid>
    <comment_count>15</comment_count>
      <attachid>167007</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-03 19:09:42 -0700</bug_when>
    <thetext>Comment on attachment 167007
Patch

Attachment 167007 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14136815</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734916</commentid>
    <comment_count>16</comment_count>
      <attachid>167154</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-04 12:09:07 -0700</bug_when>
    <thetext>Created attachment 167154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734918</commentid>
    <comment_count>17</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-04 12:10:32 -0700</bug_when>
    <thetext>ok, finally a working patch - I had missed some of the chromium tests. 

tony@ - r? for the non-chromium stuff?

abarth@ - r? for the chromium stuff?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734946</commentid>
    <comment_count>18</comment_count>
      <attachid>167154</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-04 13:02:45 -0700</bug_when>
    <thetext>Comment on attachment 167154
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendInterface.h:60
&gt; +    static const int64_t MinimumIndexId = 30;

Why 30?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734998</commentid>
    <comment_count>19</comment_count>
      <attachid>167154</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-04 14:03:50 -0700</bug_when>
    <thetext>Comment on attachment 167154
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendInterface.h:60
&gt;&gt; +    static const int64_t MinimumIndexId = 30;
&gt; 
&gt; Why 30?

History - the first 7 or so slots in the database are reserved for specific metadata, and I guess the original author added padding in case they needed 23 or so more pieces of metadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735033</commentid>
    <comment_count>20</comment_count>
      <attachid>167154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 14:43:01 -0700</bug_when>
    <thetext>Comment on attachment 167154
Patch

Rejecting attachment 167154 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14171406</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735048</commentid>
    <comment_count>21</comment_count>
      <attachid>167154</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-04 15:02:57 -0700</bug_when>
    <thetext>Comment on attachment 167154
Patch

that seems to be bogus - there&apos;s no LayoutTests change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735078</commentid>
    <comment_count>22</comment_count>
      <attachid>167154</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 15:38:10 -0700</bug_when>
    <thetext>Comment on attachment 167154
Patch

Clearing flags on attachment: 167154

Committed r130428: &lt;http://trac.webkit.org/changeset/130428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735079</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 15:38:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166102</attachid>
            <date>2012-09-27 17:24:34 -0700</date>
            <delta_ts>2012-10-03 15:51:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97834-20120927172351.patch</filename>
            <type>text/plain</type>
            <size>62310</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI5YjJlMmNhMTk0ODhk
YmMxNzgxNzczMzY0OGVhNTBhNDYyZTIxNi4uMzgyMDlmZDdiMGUyZmRlMDJlZTJhNzVlZGFjZTA4
Y2Q4ZjZhZTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTA5LTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8gdGhlIGZyb250ZW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
QmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZUludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9y
ZXMpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAoSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElt
cGw6Om1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tl
bmRJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUp
OgorICAgICAgICAoSURCSW5kZXhCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1heE9iamVjdFN0b3JlSWQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRNYXhJbmRleElkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAg
IChJREJEYXRhYmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
TWV0YWRhdGE6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgorICAgICAgICAoSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhOjpJREJJbmRl
eE1ldGFkYXRhKToKKyAgICAgICAgKElEQkluZGV4TWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om1ldGFkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSk6
CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMi0wOS0y
NiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5h
bWUgUGFnZTo6ZnJhbWVDb3VudCgpIHRvIHN1YmZyYW1lQ291bnQoKSwgYW5kIHJlbGF0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2ZhMDRhMmUwYjI2ZDM1NmYxMmViM2EzYjE3YWNh
YzQ3NTg2NWI3MC4uZjUwYmU1YThhNmM5NGViZmJkZjliMTU4MzUyMTcxNzc1ZDdkMDA4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wOS0yNyAgQWxl
YyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBw
cm9tb3RlIG9iamVjdHN0b3JlL2luZGV4IGJhY2tlbmQgaWRzIHRvIHRoZSBmcm9udGVuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc4MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVh
c2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRhZGF0
YS5oOgorICAgICAgICAoT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5kZXgpOgorICAgICAgICAq
IHB1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJPYmpl
Y3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJEYXRh
YmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgor
ICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oOgor
ICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUltcGw6
OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAgICAg
ICAgKiBzcmMvV2ViSURCTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJNZXRh
ZGF0YTo6V2ViSURCTWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJNZXRhZGF0YTo6
b3BlcmF0b3IgSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgICogc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1wbDo6
Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOgorCiAyMDEy
LTA5LTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI5NjczLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCAxMWI1MTFmYzM5
MGZlNjA1ODNmMWU5YWI5NGYwOGU0MWU3YjU1NzE2Li5jYzE5N2MyMTdmZTY1ZWRhOTJjZTA0MjU0
NTRiYjQzNmFkYzc5MzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNDksMTQgKzQ5LDE0IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7fTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZv
dW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3Vu
ZElkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
bnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZ1ZlcnNpb24sIGludDY0X3QgaW50VmVyc2lv
biwgaW50NjRfdCYgcm93SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJz
aW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoVHJh
bnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVj
dG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3Rv
cjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNy
ZW1lbnRGbGFncykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0
b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0
YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBm
b3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBmb3VuZE1heEluZGV4SWRz
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBjbGFzcyBPYmplY3RTdG9y
ZVJlY29yZElkZW50aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxPYmplY3RTdG9yZVJlY29yZElk
ZW50aWZpZXI+IHsKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBm
b3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5n
PiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8
Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5Rmxh
Z3MpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24qLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGlu
dDY0X3QmIGluZGV4SWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNh
Y3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlz
VW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJ
bmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRh
Rm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3Rv
cmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERh
dGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50
aWZpZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZS5jcHAKaW5kZXggNDNlMGJkZWVlZTgzYzgwN2RlOTZlMjRiNjcyODRkZTg3N2E1YjIx
MS4uNDU2MDdhY2Y2MDAzYWEzMzA3Y2E4MzliZDIzMTM2YzJjOTVkMGMyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtMTYxLDE1
ICsxNjEsMTcgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY28KICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0
U3RvcmVCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50LCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+YmFja2VuZCgpLCBl
Yyk7CisgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gbV9tZXRhZGF0YS5tYXhPYmplY3RTdG9y
ZUlkICsgMTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmpl
Y3RTdG9yZUJhY2tlbmQgPSBtX2JhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
SWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoIW9iamVjdFN0b3JlQmFja2VuZCkgewogICAg
ICAgICBBU1NFUlQoZWMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOwor
ICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEobmFtZSwgb2JqZWN0U3RvcmVJZCwg
a2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpN
aW5pbXVtSW5kZXhJZCk7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSA9
IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWV0YWRhdGEsIG9iamVjdFN0b3JlQmFja2VuZC5yZWxl
YXNlKCksIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX21ldGFkYXRh
Lm9iamVjdFN0b3Jlcy5zZXQobmFtZSwgbWV0YWRhdGEpOworICAgIG1fbWV0YWRhdGEubWF4T2Jq
ZWN0U3RvcmVJZCsrOwogCiAgICAgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24tPm9iamVjdFN0
b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAgcmV0dXJuIG9iamVjdFN0b3JlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggNzEzNTY4YmY1YTYzZGZjODJmZmE5
NjA4OTg0OTU1MDE2MjljOWEyMS4uODVkMmMxZGQ3YjVjNTFmMGM0ZDdmMjAyNmJjMmE3NGJkZjRm
YTFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzNyw2ICsxMzcsNyBAQCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24oTm9T
dHJpbmdWZXJzaW9uKQogICAgICwgbV9pbnRWZXJzaW9uKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5v
SW50VmVyc2lvbikKKyAgICAsIG1fbWF4T2JqZWN0U3RvcmVJZChJbnZhbGlkSWQpCiAgICAgLCBt
X2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQog
ICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OmNyZWF0ZSgpKQpAQCAtMTQ2LDcgKzE0Nyw3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklE
QkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAK
IGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkludGVybmFsKCkKIHsKLSAgICBib29s
IHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUs
IG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lkKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2Jh
Y2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9p
bnRWZXJzaW9uLCBtX2lkLCBtX21heE9iamVjdFN0b3JlSWQpOwogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0Uoc3VjY2VzcyA9PSAobV9pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBtX2lk
ID0gJWxsZCIsIHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2UiLCBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KG1faWQpKTsKICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICBsb2FkT2JqZWN0U3RvcmVz
KCk7CkBAIC0xNjYsMjIgKzE2NywyNSBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6YmFja2luZ1N0b3JlKCkgY29uc3QKIAogSURCRGF0YWJhc2VN
ZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAg
SURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJz
aW9uKTsKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9pZCwgbV92
ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1fbWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgZm9yIChPYmpl
Y3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdpbigpOyBp
dCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEub2JqZWN0
U3RvcmVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJldHVy
biBtZXRhZGF0YTsKIH0KIAotUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25D
b2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVu
dCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKCFtX29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1l
KSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUg
PSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgbmFtZSwga2V5UGF0aCwg
YXV0b0luY3JlbWVudCk7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9i
amVjdFN0b3JlID0gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlKHRoaXMsIGlkLCBu
YW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U6Ok1pbmltdW1JbmRleElkKTsKICAgICBBU1NFUlQob2JqZWN0U3RvcmUtPm5hbWUoKSA9PSBu
YW1lKTsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlv
biA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAg
IEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NI
QU5HRSk7CiAKKyAgICBBU1NFUlQoaWQgPiBtX21heE9iamVjdFN0b3JlSWQpOworICAgIG1fbWF4
T2JqZWN0U3RvcmVJZCA9IGlkOworCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+
IGRhdGFiYXNlID0gdGhpczsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soCiAg
ICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNy
ZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwsIGRhdGFiYXNlLCBvYmplY3RTdG9yZSwgdHJhbnNhY3Rp
b24pLApAQCAtMTk2LDE0ICsyMDAsMTEgQEAgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFMKIAogdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZUludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRh
dGFiYXNlLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQogewot
ICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZDsKLQotICAgIGlmICghZGF0YWJhc2UtPm1fYmFja2lu
Z1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgZGF0YWJhc2UtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3Jl
LT5rZXlQYXRoKCksIG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCksIG9iamVjdFN0b3JlSWQp
KSB7CisgICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3Jl
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwg
b2JqZWN0U3RvcmUtPmlkKCksIG9iamVjdFN0b3JlLT5uYW1lKCksIG9iamVjdFN0b3JlLT5rZXlQ
YXRoKCksIG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpKSB7CiAgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgb2JqZWN0U3RvcmUt
PnNldElkKG9iamVjdFN0b3JlSWQpOwogICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tF
dmVudHMoKTsKIH0KIApAQCAtNTk2LDE0ICs1OTcsMTYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAg
ICBWZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVjdG9yPGJvb2w+IGF1dG9JbmNy
ZW1lbnRGbGFnczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1faWQsIGlk
cywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MpOworICAgIFZlY3RvcjxpbnQ2
NF90PiBtYXhJbmRleElkczsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1f
aWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MsIG1heEluZGV4SWRz
KTsKIAogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJU
KGtleVBhdGhzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoYXV0b0luY3JlbWVu
dEZsYWdzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1h
eEluZGV4SWRzLnNpemUoKSA9PSBpZHMuc2l6ZSgpLCAiRXhwZWN0ZWQgJWx1IG1heEluZGV4SWRz
LCBidXQgZ290ICVsdSIsIGlkcy5zaXplKCksIG1heEluZGV4SWRzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9vYmplY3RT
dG9yZXMuc2V0KG5hbWVzW2ldLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhp
cywgaWRzW2ldLCBuYW1lc1tpXSwga2V5UGF0aHNbaV0sIGF1dG9JbmNyZW1lbnRGbGFnc1tpXSkp
OworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0sIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBrZXlQYXRoc1tpXSwgYXV0
b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlRnJvbU1hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBwcnBPYmplY3RTdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCA1YWQ1MWJhNjllNjIyNGFkMmE0NDU5ZDdmZjYwODE0YmI5ZmQ2Zjc2
Li4xYzAxNGEyNjYyZTdhMDRlMjA4MzdiZDhlM2MzMzM5Y2MwYjgzNDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZQogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgp
IGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbihET01TdHJpbmdMaXN0KiBvYmplY3RTdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2Rl
LCBFeGNlcHRpb25Db2RlJik7CkBAIC05OCw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fbmFtZTsKICAgICBTdHJpbmcgbV92ZXJzaW9uOwogICAgIGludDY0X3QgbV9pbnRWZXJzaW9u
OworICAgIGludDY0X3QgbV9tYXhPYmplY3RTdG9yZUlkOwogCiAgICAgU3RyaW5nIG1faWRlbnRp
ZmllcjsKICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNlIHRo
ZSBmYWN0b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0J3Mg
YmV0dGVyIHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaAppbmRleCBjYmNiOWE1OWM1NTZhYzA1Y2E3NmI0Y2I3ODgwYmIzOWZlYzAxMjY4Li40
Y2QwODQ1YjQzNmIyNzQ4N2IxZGMxNTdhMTg4MTdkMWZiZTE3YzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElE
QkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0
cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJ
bmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IGEyYjg1YjVlNWM0NzE3MTRhZmQyMGIyOTE2ODNm
ODUwMmU1YmRiZGMuLjIyMmM0MDlmZDM4OWQ0OGQyODRkZGZmOTMwZDI3NDQ4NDM0MGI3NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwCkBAIC01NCwyNCArNTQsMTMgQEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6
SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFz
ZSwKIHsKIH0KIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChjb25z
dCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCi0gICAgOiBtX2Rh
dGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9vYmplY3RTdG9yZUJhY2tlbmQob2JqZWN0U3RvcmVC
YWNrZW5kKQotICAgICwgbV9pZChJbnZhbGlkSWQpCi0gICAgLCBtX25hbWUobmFtZSkKLSAgICAs
IG1fa2V5UGF0aChrZXlQYXRoKQotICAgICwgbV91bmlxdWUodW5pcXVlKQotICAgICwgbV9tdWx0
aUVudHJ5KG11bHRpRW50cnkpCi17Ci19Ci0KIElEQkluZGV4QmFja2VuZEltcGw6On5JREJJbmRl
eEJhY2tlbmRJbXBsKCkKIHsKIH0KIAogSURCSW5kZXhNZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJ
bXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIElEQkluZGV4TWV0YWRhdGEobV9u
YW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRpRW50cnkpOworICAgIHJldHVybiBJREJJ
bmRleE1ldGFkYXRhKG1fbmFtZSwgbV9pZCwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVu
dHJ5KTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4g
aW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5
cGVkRGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKaW5kZXggMTcz
YzMyZDA4ZmYxNDMzYjk5OTBlNTA1MjI1MGNjODljYTZkYThiOS4uOWZiZWMxNjk3ZTI3MWM3M2Ew
MmQ1NjE1Njc2YzYzY2U0ZDkxMGIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaApAQCAtNDcsMTAgKzQ3LDYgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJJbmRleEJhY2tl
bmRJbXBsKGRhdGFiYXNlLCBvYmplY3RTdG9yZUJhY2tlbmQsIGlkLCBuYW1lLCBrZXlQYXRoLCB1
bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFi
YXNlLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBvYmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJv
b2wgbXVsdGlFbnRyeSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5k
ZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0U3RvcmVCYWNrZW5kLCBuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG11bHRpRW50cnkpKTsKLSAgICB9CiAgICAgdmlydHVhbCB+SURCSW5kZXhCYWNr
ZW5kSW1wbCgpOwogCiAgICAgaW50NjRfdCBpZCgpIGNvbnN0CkBAIC03Niw3ICs3Miw2IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJJbmRleEJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFi
YXNlQmFja2VuZEltcGwqLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wg
bXVsdGlFbnRyeSk7Ci0gICAgSURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwogCiAg
ICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpD
dXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCA1
MGVkZmQ0NmNjMGMyYzk5MzRkYzVkNWM4OWQyZWM1YWQ3ZWRiZGJhLi41OGUxOTFiOGUzODI1Njkw
OWRjODE0ZTU0ZTlmZmYyNzdmMWZhMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTk0
LDYgKzE5NCwyNCBAQCBzdGF0aWMgYm9vbCBzZXRVcE1ldGFkYXRhKExldmVsREJEYXRhYmFzZSog
ZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGljIGludDY0X3QgZ2V0TWF4T2JqZWN0
U3RvcmVJZChEQk9yVHJhbnNhY3Rpb24qIGRiLCBpbnQ2NF90IGRhdGFiYXNlSWQpCit7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IG1heE9iamVjdFN0b3JlSWRLZXkgPSBEYXRhYmFzZU1ldGFEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6TWF4T2JqZWN0U3Rv
cmVJZCk7CisgICAgcmV0dXJuIGdldE1heE9iamVjdFN0b3JlSWQoZGIsIG1heE9iamVjdFN0b3Jl
SWRLZXkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3RhdGlj
IGludDY0X3QgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9yVHJhbnNhY3Rpb24qIGRiLCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIG1heE9iamVjdFN0b3JlSWRLZXkpCit7CisgICAgaW50NjRfdCBtYXhPYmpl
Y3RTdG9yZUlkID0gLTE7CisgICAgaWYgKCFnZXRJbnQoZGIsIG1heE9iamVjdFN0b3JlSWRLZXks
IG1heE9iamVjdFN0b3JlSWQpKQorICAgICAgICBtYXhPYmplY3RTdG9yZUlkID0gMDsKKworICAg
IEFTU0VSVChtYXhPYmplY3RTdG9yZUlkID49IDApOworICAgIHJldHVybiBtYXhPYmplY3RTdG9y
ZUlkOworfQorCiBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5
LCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQpAQCAtMjgyLDcgKzMwMCw3IEBAIHZv
aWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5n
PiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRT
dHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQp
Citib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91
bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlk
KQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29k
ZShtX2lkZW50aWZpZXIsIG5hbWUpOwogCkBAIC0zMDAsNiArMzE4LDggQEAgYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgU3RyaW5nJgogICAgIGlmIChmb3VuZEludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0
YTo6RGVmYXVsdEludFZlcnNpb24pCiAgICAgICAgIGZvdW5kSW50VmVyc2lvbiA9IElEQkRhdGFi
YXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIAorICAgIG1heE9iamVjdFN0b3JlSWQgPSBnZXRN
YXhPYmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIGZvdW5kSWQpOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTM3NSw3ICszOTUsOCBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRl
bGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7
CiAgICAgU3RyaW5nIHZlcnNpb247CiAgICAgaW50NjRfdCBpbnRWZXJzaW9uOwotICAgIGlmICgh
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFz
ZUlkKSkKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7CisgICAgaWYgKCFnZXRJREJEYXRh
YmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGludFZlcnNpb24sIGRhdGFiYXNlSWQsIG1heE9i
amVjdFN0b3JlSWQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsKQEAgLTQwNSw3ICs0MjYsNyBAQCBzdGF0
aWMgYm9vbCBjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGNvbnN0IExldmVsREJJdGVy
YXRvciogaXQsIGNvbnN0IFZlYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3Rv
cjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8
SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVt
ZW50RmxhZ3MpCit2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRN
YXhJbmRleElkcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dE9iamVjdFN0b3JlcyIpOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCAxLCAwKTsKQEAgLTQxNSw2ICs0
MzYsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2
NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgIEFTU0VSVChmb3VuZE5hbWVzLmlz
RW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsKICAgICBBU1NF
UlQoZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoZm91bmRN
YXhJbmRleElkcy5pc0VtcHR5KCkpOwogCiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQg
PSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGl0LT5zZWVrKHN0YXJ0S2V5KTsKQEAgLTQ2
OCw2ICs0OTAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CisgICAgICAgIGludDY0X3QgbWF4SW5kZXhJZCA9IGRlY29kZUludChpdC0+dmFs
dWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsg
Ly8gW29wdGlvbmFsXSBoYXMga2V5IHBhdGggKGlzIG5vdCBudWxsKQogICAgICAgICBpZiAoY2hl
Y2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6SGFzS2V5UGF0aCkpIHsKQEAgLTQ5OCwzMSAr
NTIxLDI0IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+CiAgICAgICAgIGZvdW5kTmFtZXMuYXBw
ZW5kKG9iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGZvdW5kS2V5UGF0aHMuYXBwZW5kKGtleVBh
dGgpOwogICAgICAgICBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncy5hcHBlbmQoYXV0b0luY3JlbWVu
dCk7CisgICAgICAgIGZvdW5kTWF4SW5kZXhJZHMuYXBwZW5kKG1heEluZGV4SWQpOwogICAgIH0K
IH0KIAotc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQpCitzdGF0aWMgYm9vbCBzZXRNYXhP
YmplY3RTdG9yZUlkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAgIGludDY0X3QgbWF4T2JqZWN0
U3RvcmVJZCA9IC0xOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhPYmplY3RTdG9yZUlkS2V5
ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6Ok1heE9iamVjdFN0b3JlSWQpOwotICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBt
YXhPYmplY3RTdG9yZUlkS2V5LCBtYXhPYmplY3RTdG9yZUlkKSkKLSAgICAgICAgbWF4T2JqZWN0
U3RvcmVJZCA9IDA7Ci0KLSAgICBBU1NFUlQobWF4T2JqZWN0U3RvcmVJZCA+PSAwKTsKKyAgICBp
bnQ2NF90IG1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhPYmplY3RTdG9yZUlkKHRyYW5zYWN0aW9u
LCBtYXhPYmplY3RTdG9yZUlkS2V5KTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG9iamVjdFN0
b3JlSWQgPiBtYXhPYmplY3RTdG9yZUlkLCAiTmV3IGRhdGFiYXNlIGlkcyBtdXN0IGJlIGluY3Jl
YXNpbmcuIik7CiAKLSAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBtYXhPYmplY3RTdG9yZUlk
ICsgMTsKLSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSwg
b2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHJldHVybiBvYmplY3RT
dG9yZUlkOworICAgIHJldHVybiBwdXRJbnQodHJhbnNhY3Rpb24sIG1heE9iamVjdFN0b3JlSWRL
ZXksIG9iamVjdFN0b3JlSWQpOwogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0
b3JlSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJU
cmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFu
c2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGdl
dE5ld09iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkKTsKLSAgICBp
ZiAob2JqZWN0U3RvcmVJZCA8IDApCisgICAgaWYgKCFzZXRNYXhPYmplY3RTdG9yZUlkKGxldmVs
REJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lS2V5ID0gT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6Ok5hbWUpOwpAQCAtNTg5LDggKzYwNSw2IEBAIGJvb2wgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBhc3NpZ25lZE9iamVj
dFN0b3JlSWQgPSBvYmplY3RTdG9yZUlkOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkx
OCwyOCArOTMyLDIzIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgfQogfQogCi1zdGF0
aWMgaW50NjRfdCBnZXROZXdJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorc3RhdGljIGJvb2wg
c2V0TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogewogICAg
IGludDY0X3QgbWF4SW5kZXhJZCA9IC0xOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRl
eElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOwogICAgIGlmICgh
Z2V0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElkKSkKICAgICAgICAg
bWF4SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaW5k
ZXhJZCA+IG1heEluZGV4SWQsICJOZXcgaW5kZXggaWRzIG11c3QgYmUgaW5jcmVhc2luZy4iKTsK
IAotICAgIEFTU0VSVChtYXhJbmRleElkID49IDApOwotCi0gICAgaW50NjRfdCBpbmRleElkID0g
bWF4SW5kZXhJZCArIDE7Ci0gICAgaWYgKCFwdXRJbnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRL
ZXksIGluZGV4SWQpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1cm4gaW5kZXhJZDsK
KyAgICByZXR1cm4gcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBpbmRleElkKTsK
IH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4
SWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdT
dG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5
KQogewogICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgi
KTsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5zYWN0
aW9uOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICBpbmRleElkID0g
Z2V0TmV3SW5kZXhJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQpOwotICAgIGlmIChpbmRleElkIDwgMCkKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBqdXN0IGEg
c2FuaXR5IGNoZWNrCisgICAgaWYgKCFzZXRNYXhJbmRleElkKGxldmVsREJUcmFuc2FjdGlvbiwg
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1lS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFL
ZXk6Ok5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc3Y2IwNmU3ODVhZjgwOTgwOTdiOWU5
MmM4NmZlMWYyYTdlZGY2NjkuLmNhYTU3ZjUxNGI1OTk4ZDRlOGI0Mjg4MWFkMTJhMTQ3OWYzZWI4
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDE0ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBm
b3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7
CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2
NF90JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKTsKICAgICB2aXJ0dWFsIGJv
b2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCk7CiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbik7CiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50NjRfdCBpbnRWZXJzaW9uKTsKICAgICB2
aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50
NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktl
eVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZs
YWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9i
amVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kTWF4SW5kZXhJ
ZHMpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6
OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVu
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3Jl
YXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmpl
Y3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYpOwpAQCAtNjYsNyAr
NjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29y
ZChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmRO
YW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZv
dW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAg
IHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5
LCBpbnQ2NF90JiBpbmRleElkKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5KTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogICAg
IHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFu
c2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
ZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoSURCQmFj
a2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
ZmllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
TWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRh
LmgKaW5kZXggYjNjYmNhMWIyNjQ5MDYyYTRjY2YwNzgxYjNjZjFjODAzNGY5ZjYwNy4uMDk2Zjg5
YWZhOTNkMTFmOWI4YmI4ZmVjYmU5N2Y5MWRjMjE1NDMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC01MiwxNiArNTIsMjAgQEAgc3Ry
dWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewogICAgICAgICA6IGludFZlcnNpb24oTm9JbnRWZXJz
aW9uKQogICAgIHsKICAgICB9Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uKQorICAgIElE
QkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCBtYXhPYmplY3RTdG9y
ZUlkKQogICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBpZChpZCkKICAgICAgICAgLCB2
ZXJzaW9uKHZlcnNpb24pCiAgICAgICAgICwgaW50VmVyc2lvbihpbnRWZXJzaW9uKQorICAgICAg
ICAsIG1heE9iamVjdFN0b3JlSWQobWF4T2JqZWN0U3RvcmVJZCkKICAgICB7CiAgICAgfQogCiAg
ICAgU3RyaW5nIG5hbWU7CisgICAgaW50NjRfdCBpZDsKICAgICBTdHJpbmcgdmVyc2lvbjsKICAg
ICBpbnQ2NF90IGludFZlcnNpb247CisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkOwogCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0
U3RvcmVNYXA7CiAgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3RvcmVzOwpAQCAtNjksMTMgKzcz
LDE4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKIAogc3RydWN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgewogICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEoKSB7IH0KLSAgICBJREJP
YmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4SW5kZXhJZCkKICAgICAgICAgOiBuYW1l
KG5hbWUpCiAgICAgICAgICwga2V5UGF0aChrZXlQYXRoKQotICAgICAgICAsIGF1dG9JbmNyZW1l
bnQoYXV0b0luY3JlbWVudCkgeyB9CisgICAgICAgICwgYXV0b0luY3JlbWVudChhdXRvSW5jcmVt
ZW50KQorICAgICAgICAsIG1heEluZGV4SWQobWF4SW5kZXhJZCkKKyAgICB7CisgICAgfQogICAg
IFN0cmluZyBuYW1lOworICAgIGludDY0X3QgaWQ7CiAgICAgSURCS2V5UGF0aCBrZXlQYXRoOwog
ICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICBpbnQ2NF90IG1heEluZGV4SWQ7CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJJbmRleE1ldGFkYXRhPiBJbmRleE1hcDsKICAgICBJ
bmRleE1hcCBpbmRleGVzOwpAQCAtODMsMTIgKzkyLDE0IEBAIHN0cnVjdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhIHsKIAogc3RydWN0IElEQkluZGV4TWV0YWRhdGEgewogICAgIElEQkluZGV4TWV0
YWRhdGEoKSB7IH0KLSAgICBJREJJbmRleE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAg
ICBJREJJbmRleE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKICAgICAg
ICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgaWQoaWQpCiAgICAgICAgICwga2V5UGF0aChrZXlQ
YXRoKQogICAgICAgICAsIHVuaXF1ZSh1bmlxdWUpCiAgICAgICAgICwgbXVsdGlFbnRyeShtdWx0
aUVudHJ5KSB7IH0KICAgICBTdHJpbmcgbmFtZTsKKyAgICBpbnQ2NF90IGlkOwogICAgIElEQktl
eVBhdGgga2V5UGF0aDsKICAgICBib29sIHVuaXF1ZTsKICAgICBib29sIG11bHRpRW50cnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5j
cHAKaW5kZXggY2M2YzI4ZWYyODRlZmQ3M2ZhNjUzMWNmMGQ1YTk5MGNlM2E5N2MyMi4uMWY3YzNm
OTRiYmI5MTY5ZmMxNzNhMGJiYjM3MTNiYmZkYWU1NjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApAQCAtNDEzLDEyICs0
MTMsMTUgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCi0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXhCYWNrZW5kID0g
bV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnks
IG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOworICAgIGludDY0X3QgaW5kZXhJZCA9IG1f
bWV0YWRhdGEubWF4SW5kZXhJZCArIDE7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChpbmRleElkLCBuYW1l
LCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwg
ZWMpOwogICAgIEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBn
ZXQgYW4gaW5kZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5k
IHZpY2UgdmVyc2EuCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIElEQklu
ZGV4TWV0YWRhdGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsK
KyAgICBtX21ldGFkYXRhLm1heEluZGV4SWQrKzsKKworICAgIElEQkluZGV4TWV0YWRhdGEgbWV0
YWRhdGEobmFtZSwgaW5kZXhJZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKICAgICBS
ZWZQdHI8SURCSW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRhZGF0YSwgaW5kZXhC
YWNrZW5kLnJlbGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRl
eE1hcC5zZXQobmFtZSwgaW5kZXgpOwogICAgIG1fbWV0YWRhdGEuaW5kZXhlcy5zZXQobmFtZSwg
bWV0YWRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA4MDViNzE1MjQwNjAx
OWFmZjgwYzBlMGE5YjgwODI1ZDBlZjA1YWNkLi4yOTgzZTRmMDMxYjhlZGNjOTdiZjUzMjJjNTMy
NzZiZGZkZWY3MWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTEsMjggKzUx
LDIwIEBAIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKCkKIHsKIH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2
NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCBtYXhJbmRleElkKQogICAgIDogbV9kYXRhYmFzZShk
YXRhYmFzZSkKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5
UGF0aChrZXlQYXRoKQogICAgICwgbV9hdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpCisgICAg
LCBtX21heEluZGV4SWQobWF4SW5kZXhJZCkKIHsKICAgICBsb2FkSW5kZXhlcygpOwogfQogCi1J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKLSAgICA6IG1fZGF0
YWJhc2UoZGF0YWJhc2UpCi0gICAgLCBtX2lkKEludmFsaWRJZCkKLSAgICAsIG1fbmFtZShuYW1l
KQotICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCi0gICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0lu
Y3JlbWVudCkKLXsKLX0KLQogSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV9hdXRvSW5jcmVtZW50KTsKKyAgICBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9pZCwgbV9rZXlQYXRoLCBtX2F1
dG9JbmNyZW1lbnQsIG1fbWF4SW5kZXhJZCk7CiAgICAgZm9yIChJbmRleE1hcDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9pbmRleGVzLmVuZCgpOyArK2l0
KQogICAgICAgICBtZXRhZGF0YS5pbmRleGVzLnNldChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQtPm1l
dGFkYXRhKCkpOwogICAgIHJldHVybiBtZXRhZGF0YTsKQEAgLTQzNiwxMyArNDI4LDIwIEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0CiAKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVCghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUp
KTsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgoLTEsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVs
dGlFbnRyeSwgdHJhbnNhY3Rpb25QdHIsIGVjKTsKK30KIAotICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNl
LCB0aGlzLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOworUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pbmRleGVzLmNvbnRhaW5zKG5hbWUpLCAiSW5kZXhlcyBh
bHJlYWQgY29udGFpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisKKyAgICBSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9k
YXRhYmFzZSwgdGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CiAg
ICAgQVNTRVJUKGluZGV4LT5uYW1lKCkgPT0gbmFtZSk7CiAKICAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9
PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UpOworICAgIEFTU0VSVChpZCA+IG1fbWF4
SW5kZXhJZCk7CisgICAgbV9tYXhJbmRleElkID0gaWQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzaygKQEAgLTQ1OCwxNCArNDU3LDExIEBAIFBhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRl
eChjb25zCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBp
bmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbikK
IHsKLSAgICBpbnQ2NF90IGlkOwotICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgp
LT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgb2Jq
ZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5uYW1lKCks
IGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51bmlxdWUoKSwgaW5kZXgtPm11bHRpRW50cnkoKSwg
aWQpKSB7CisgICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZUluZGV4
KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+ZGF0
YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksIGluZGV4LT5uYW1lKCks
IGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51bmlxdWUoKSwgaW5kZXgtPm11bHRpRW50cnkoKSkp
IHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpbmRleC0+c2V0SWQoaWQpOwotCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRl
VGFza0V2ZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKaW5kZXggYmQ5NWJiZWJl
MmY3ZTJhMmJkMjkzMTIwYmZmODEyN2UwY2JiMmZlNy4uZDE4NDY5MWFhYTNhNzk3N2NjMDRhMDRl
NWQ1NTI5ZjUxZmE5MjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaApAQCAtNDcsMTMgKzQ3
LDkgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGludDY0X3Qg
aWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBh
dXRvSW5jcmVtZW50KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgaW50
NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4SW5kZXhJZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgaWQs
IG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKLSAgICB9Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNl
QmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwgbmFtZSwga2V5
UGF0aCwgYXV0b0luY3JlbWVudCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50LCBtYXhJbmRleElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoKTsKIApAQCAtNzQsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+
JiAsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTk2
LDggKzkzLDcgQEAgcHVibGljOgogICAgIGludDY0X3QgZGF0YWJhc2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YWJhc2UtPmlkKCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQp
OwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5l
cmF0ZUtleShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyMiw2
ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgSURCS2V5UGF0aCBt
X2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAgaW50NjRfdCBtX21heElu
ZGV4SWQ7CiAKICAgICBJbmRleE1hcCBtX2luZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCAwMTc5YjZhODhhZjYyNmFkYjJlY2M0YWIyMDQxMGFkMGNhM2Zh
ZjJmLi5hM2FkNTA0MTdhMzdiNGJhZDkwNmFmZWUyNmMxNDUwM2ZkZWU1MTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIEFkZE9ubHksCiAgICAgICAgIEN1cnNvclVwZGF0ZQogICAgIH07CisKKyAgICBzdGF0aWMg
Y29uc3QgaW50NjRfdCBNaW5pbXVtSW5kZXhJZCA9IDMwOworCiAgICAgdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aElu
ZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURC
S2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRl
eEtleXM+JiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTY0LDYgKzY3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikg
PSAwOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5
cyhQYXNzUmVmUHRyPElEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDgzYjlhNDI1Zjg0N2ZhOWQ4ODE3MzdjMzA5
ZWE4YTI4MmFiNGVmMjkuLjE2Y2ZiZDg1ZGI0NjEzYjRkZjNmZmQ4Y2ZhYWFmMTQ2OTBmY2U0YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApA
QCAtNTUsNiArNTUsMTEgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQk9iamVj
dFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4
Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRy
YW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZl
cnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlw
IG9mIHRoZSBXZWJJREJUcmFuc2FjdGlvbiB0byB0aGUgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggMWYyZTllYWQ0NWYyMjNh
NjlhNjYwY2M3Y2M2Nzg0MTAwMmYxZmY2ZS4uOTU3ZTA4MmJiMGZiMjYyOTdlNDVkNWQ4ZmY3OGZh
ODc0ZjBmZDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJN
ZXRhZGF0YS5oCkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAgICAg
Ly8gc2V0VmVyc2lvbiwgV2ViU3RyaW5nIHZlcnNpb24gY2FuIGJlIHJlbW92ZWQuCiAgICAgV2Vi
U3RyaW5nIHZlcnNpb247CiAgICAgbG9uZyBsb25nIGludFZlcnNpb247CisgICAgbG9uZyBsb25n
IGlkOworICAgIGxvbmcgbG9uZyBtYXhPYmplY3RTdG9yZUlkOwogICAgIFdlYlZlY3RvcjxPYmpl
Y3RTdG9yZT4gb2JqZWN0U3RvcmVzOwogICAgIFdlYklEQk1ldGFkYXRhKCkKICAgICAgICAgOiBp
bnRWZXJzaW9uKE5vSW50VmVyc2lvbikgeyB9CkBAIC01OCw2ICs2MCw4IEBAIHN0cnVjdCBXZWJJ
REJNZXRhZGF0YSB7CiAgICAgICAgIFdlYlN0cmluZyBuYW1lOwogICAgICAgICBXZWJJREJLZXlQ
YXRoIGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICAgICAgbG9uZyBs
b25nIGlkOworICAgICAgICBsb25nIGxvbmcgbWF4SW5kZXhJZDsKICAgICAgICAgV2ViVmVjdG9y
PEluZGV4PiBpbmRleGVzOwogICAgICAgICBPYmplY3RTdG9yZSgpCiAgICAgICAgICAgICA6IGtl
eVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQpAQCAtNjksNiArNzMsNyBAQCBzdHJ1
Y3QgV2ViSURCTWV0YWRhdGEgewogICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CiAgICAg
ICAgIGJvb2wgdW5pcXVlOwogICAgICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIGxvbmcg
bG9uZyBpZDsKICAgICAgICAgSW5kZXgoKQogICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklEQktl
eVBhdGg6OmNyZWF0ZU51bGwoKSkKICAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXgg
YTJiODdkYTgxNjFlODgzZjA0NDI5YjdlMjMwMjVlMWFiMjA4YzdjMS4uY2EwMTAzY2RhNmZjM2Yz
NzJjYWRjYWFiN2NkNmNlMzA1YTIyN2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC02Myw2ICs2MywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9uZywg
Y29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNvbnN0
IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiwgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYs
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH07CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8gdGhl
IGNhbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1MDFjZTYxZmI1OTU2MjY2YjBjM2JmMWI0YzAyYWVm
NmNkYTAwODA2Li5lMjFiNWE3ZTFlMTMxNzM5Y2MxMWU3MmQxZDg4NDEyNWNmODMxOGMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5k
UHJveHkuY3BwCkBAIC02NiwxMiArNjYsMjMgQEAgSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6bWV0YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3dlYklEQkRh
dGFiYXNlLT5tZXRhZGF0YSgpOwogfQogCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwg
Ym9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9p
bnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywg
aW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVy
ZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkq
IHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0
b3JlID0gYWRvcHRQdHIobV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUoaWQsIG5h
bWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJU
cmFuc2FjdGlvbigpLCBlYykpOworICAgIGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVj
dFN0b3JlLnJlbGVhc2UoKSk7Cit9CisKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCiAgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJv
eHkgb2JqZWN0cy4KICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Q
cm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rp
b24pOwotICAgIE93blB0cjxXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBhZG9wdFB0
cihtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRv
SW5jcmVtZW50LCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMp
KTsKKyAgICBPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gYWRvcHRQdHIo
bV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUoLTEsIG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBl
YykpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVy
biBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlLnJlbGVhc2Uo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuaAppbmRleCA3OTU2MTBhYTY1NzJkY2E0NmNjMjY0ZGI1YjA4YmQxNzhjMWM1NjUw
Li5lYTY5M2FkYTE3ZTNhNTFlY2IxOWEwOWRhMzQ2YjdkYzFmY2ExMDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAg
LTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VN
ZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5j
cmVtZW50LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9u
KGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Qq
IHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0
b3JlQmFja2VuZFByb3h5LmNwcAppbmRleCBiNTNlYjJjM2E0Njg2ZTZkM2FlNDI2ZGEzMTRiMjY3
NWEyMmYyMGYwLi45NmI3NjEzZTE1OTNmY2RhNTNjNDVhZWM1MzAyMDVkZGNkOWQ5YWJlIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkuY3BwCkBAIC0xMDMsNiArMTAzLDE3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHk6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElE
QlRyCiAgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Y2xlYXIobmV3IFdlYklEQkNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCks
IGVjKTsKIH0KIAorUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChsb25nIGxvbmcgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBw
cm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlv
blByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2Fj
dGlvbik7CisgICAgT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCA9IGFkb3B0UHRyKG1fd2ViSURC
T2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOwor
ICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJJbmRleEJh
Y2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSk7Cit9CisKIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rp
b24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVj
dCBhcywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggNzRjYjBiZDU3MDNiNjE1
MjVkYTVmZDVjNDgyZTVlNmVhNDQ4Y2RiMS4uODQ3MGMxYWQ5MDViYzE1NmZkOWYzYjhmYzE0ZWZm
MWU0MTFlOGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxJbmRl
eEtleXM+JiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYjU4Y2Q1MTExNzc2
ODg0Zjk1NjAxZTllZTc5ZTBkODI4OTNjNjJkMC4uYTY5OTlmODJlMGY1NjJjYmY1MzZjODlmMTBh
MDI1MGE0ODdkZGFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCkBAIC02MCw5ICs2MCwxOSBAQCBXZWJJREJNZXRhZGF0YSBXZWJJ
REJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhYmFzZUJh
Y2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFz
ZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3Rv
cmUgPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUoaWQsIG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkgeworICAgICAgICBBU1NFUlQo
ZWMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmpl
Y3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOworfQorCiBXZWJJREJPYmplY3RTdG9yZSogV2ViSURC
RGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1f
ZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0
b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKC0xLCBuYW1lLCBrZXlQ
YXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UoKSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpIHsKICAgICAgICAgQVNTRVJU
KGVjKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5oCmluZGV4IDUxOGZmY2RiOTc5ODAwNWU0Yzg4YzA3ODhlMDRl
YWU1M2Y3NmM4YzcuLjg0OTk2OWNiNGJhMjhmMDU4YTUxNTJmOTM4ODkyM2ZhYWYxY2FhNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBA
IC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29s
IGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGxv
bmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9v
bCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklE
QkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWdu
ZWQgc2hvcnQgbW9kZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwCmluZGV4IDAxZDg3OGEwYTlmMmMxYzg5MTQ5MTkx
YmM4Yzg3MWQ4Y2RjZjY1MzcuLjk5NGUyYzU5MTkwZjM2YjhlNmVjOTFiOTE4MmJhODAwMjhiZmIy
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAgV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIHZlcnNpb24gPSBtZXRh
ZGF0YS52ZXJzaW9uOwogICAgIGludFZlcnNpb24gPSBtZXRhZGF0YS5pbnRWZXJzaW9uOwogICAg
IG9iamVjdFN0b3JlcyA9IFdlYlZlY3RvcjxPYmplY3RTdG9yZT4oc3RhdGljX2Nhc3Q8c2l6ZV90
PihtZXRhZGF0YS5vYmplY3RTdG9yZXMuc2l6ZSgpKSk7CisgICAgbWF4T2JqZWN0U3RvcmVJZCA9
IG1ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQ7CiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9y
IChJREJEYXRhYmFzZU1ldGFkYXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Igc3Rv
cmVJdGVyYXRvciA9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBzdG9yZUl0ZXJhdG9y
ICE9IG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0ZXJhdG9yKSB7CkBAIC01
Miw2ICs1Myw3IEBAIFdlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3Jl
OjpJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICAgICAgd2ViT2JqZWN0U3RvcmUu
a2V5UGF0aCA9IG9iamVjdFN0b3JlLmtleVBhdGg7CiAgICAgICAgIHdlYk9iamVjdFN0b3JlLmF1
dG9JbmNyZW1lbnQgPSBvYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50OwogICAgICAgICB3ZWJPYmpl
Y3RTdG9yZS5pbmRleGVzID0gV2ViVmVjdG9yPEluZGV4PihzdGF0aWNfY2FzdDxzaXplX3Q+KG9i
amVjdFN0b3JlLmluZGV4ZXMuc2l6ZSgpKSk7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLm1heElu
ZGV4SWQgPSBvYmplY3RTdG9yZS5tYXhJbmRleElkOwogCiAgICAgICAgIHNpemVfdCBqID0gMDsK
ICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRl
cmF0b3IgaW5kZXhJdGVyYXRvciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJ
dGVyYXRvciAhPSBvYmplY3RTdG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3IpIHsK
QEAgLTY5LDE0ICs3MSwxNCBAQCBXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEoY29uc3Qg
V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAKIFdlYklEQk1ldGFkYXRh
OjpvcGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJEYXRhYmFz
ZU1ldGFkYXRhIGRiKG5hbWUsIHZlcnNpb24sIGludFZlcnNpb24pOworICAgIElEQkRhdGFiYXNl
TWV0YWRhdGEgZGIobmFtZSwgaWQsIHZlcnNpb24sIGludFZlcnNpb24sIG1heE9iamVjdFN0b3Jl
SWQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IE9iamVjdFN0b3JlIHdlYk9iamVjdFN0b3JlID0gb2JqZWN0U3Rv
cmVzW2ldOwotICAgICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlKHdlYk9i
amVjdFN0b3JlLm5hbWUsIHdlYk9iamVjdFN0b3JlLmtleVBhdGgsIHdlYk9iamVjdFN0b3JlLmF1
dG9JbmNyZW1lbnQpOworICAgICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3Jl
KHdlYk9iamVjdFN0b3JlLm5hbWUsIHdlYk9iamVjdFN0b3JlLmlkLCB3ZWJPYmplY3RTdG9yZS5r
ZXlQYXRoLCB3ZWJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50LCB3ZWJPYmplY3RTdG9yZS5tYXhJ
bmRleElkKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHdlYk9iamVjdFN0b3Jl
LmluZGV4ZXMuc2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgIGNvbnN0IEluZGV4IHdlYkluZGV4
ID0gd2ViT2JqZWN0U3RvcmUuaW5kZXhlc1tqXTsKLSAgICAgICAgICAgIElEQkluZGV4TWV0YWRh
dGEgaW5kZXgod2ViSW5kZXgubmFtZSwgd2ViSW5kZXgua2V5UGF0aCwgd2ViSW5kZXgudW5pcXVl
LCB3ZWJJbmRleC5tdWx0aUVudHJ5KTsKKyAgICAgICAgICAgIElEQkluZGV4TWV0YWRhdGEgaW5k
ZXgod2ViSW5kZXgubmFtZSwgd2ViSW5kZXguaWQsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4
LnVuaXF1ZSwgd2ViSW5kZXgubXVsdGlFbnRyeSk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS5p
bmRleGVzLnNldChpbmRleC5uYW1lLCBpbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgZGIub2Jq
ZWN0U3RvcmVzLnNldChvYmplY3RTdG9yZS5uYW1lLCBvYmplY3RTdG9yZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRl
eCBmNWRkOTEzYzk0ODUyNzhiNDY2OGJkMjczNDYxMmY4YWVkMjE3NTlhLi4xOThhMjg3ODg2YTI2
OGRlODI0NGJiNDc5MzZmODdhZjBlMTBiNjZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTExNyw2ICsxMTcsMTQg
QEAgV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWIKICAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1w
bChpbmRleCk7CiB9CiAKK1dlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0
ZUluZGV4KGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+
Y3JlYXRlSW5kZXgoaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNh
Y3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKKyAgICBpZiAo
IWluZGV4KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1w
bChpbmRleCk7Cit9CisKIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5pbmRl
eChuYW1lLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5oCmluZGV4IDA0MDIwZTU1OGY0NGQ0MWRiZjY5OTQyZTM2ZWU2MGI1ODc0
NGU4MjMuLjkwMjY0MWEwMTk0Zjc4NzM5MTQxNjRiMDI2ZjQwZGI5YTQ1NjA4NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBA
IC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyos
IGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgV2Vi
SURCSW5kZXgqIGNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRl
eChsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25D
b2RlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166977</attachid>
            <date>2012-10-03 15:51:10 -0700</date>
            <delta_ts>2012-10-03 16:54:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97834-20121003155022.patch</filename>
            <type>text/plain</type>
            <size>64914</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uYTEzZjdmMGRlNWUwNDc4Yzg1MDQ2ZmRhZDI4OGRm
ODQ0MzVhZTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTEwLTAzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8gdGhlIGZyb250ZW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBpbnQ2NC1i
YXNlZCBkYXRhYmFzZS9vYmplY3RTdG9yZS9pbmRleCBpZHMgdG8gdGhlIHJlbmRlcmVyLAorICAg
ICAgICBzdGVwIDEgb2YgMi4gU3VwcG9ydCBib3RoIHN0eWxlcyBvZiBjcmVhdGVPYmplY3RTdG9y
ZSBhbmQKKyAgICAgICAgY3JlYXRlSW5kZXg6IHRob3NlIHRoYXQgdGFrZSBhbiBleHBsaWNpdCBp
ZCwgYW5kIHRob3NlIHRoYXQgdGFrZQorICAgICAgICAtMSwgbWVhbmluZyB0byBhdXRvZ2VuZXJh
dGUgYW4gaWQgb24gdGhlIGJhY2tlbmQuIEluIHBhcnQgMiwgYWZ0ZXIKKyAgICAgICAgdGhlIGNo
cm9taXVtIHNpZGUgbGFuZHMsIHN1cHBvcnQgZm9yIHRoZSBhdXRvZ2VuZXJhdGVkIGlkcyB3aWxs
IGJlCisgICAgICAgIHJlbW92ZWQuIChTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MDg1KQorCisgICAgICAgIFRoaXMgaXMgYSBwYXJ0IG9mIGxhcmdlciByZWZh
Y3RvcmluZyB3b3JrIHRvIHVsdGltYXRlbHkgbWFrZSB0aGUgaW50ZXJmYWNlCisgICAgICAgIGJl
dHdlZW4gdGhlIGZyb250ZW5kIGFuZCB0aGUgYmFja2VuZCBzaW1wbGVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgZXh0ZW5zaXZlIEFTU0VSVHMgYW5kIGV4aXN0aW5nIHRlc3RzIGNvdmVyIGNv
cnJlY3RuZXNzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9i
amVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhPYmplY3RTdG9yZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1heEluZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4
SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6Cisg
ICAgICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAx
Mi0xMC0wMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBCdWlsZCBmaXggZm9yIFdpbkNFIGFmdGVyIHIxMzAxNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGNiNTlkNWIxMWFhZWY1OWIyM2U2MjdiYmVhZThiODI0NThjNzFkZDUuLjI1MDMx
Y2ViMGFlZWJiNjg0MGI2YjgxMWIzOTFkM2I5YmU3YTAyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMTAtMDMgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogcHJvbW90ZSBvYmplY3RzdG9y
ZS9pbmRleCBiYWNrZW5kIGlkcyB0byB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgbWFyc2hhbGxpbmcgYWRkaXRp
b25hbCBJREJNZXRhZGF0YSBhbmQgbmV3IGNhbGxzIHRvCisgICAgICAgIGNyZWF0ZU9iamVjdFN0
b3JlL2NyZWF0ZUluZGV4LgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgICogcHVibGljL1dlYklEQk1ldGFkYXRhLmg6CisgICAgICAgIChPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChJbmRleCk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKToK
KyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDoKKyAgICAgICAgKFdlYklE
Qk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTItMTAtMDMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBSVENQZWVyQ29ubmVj
dGlvbiBzaG91bGQgc2VuZCBkb3duIGl0cyBoYW5kbGVyIHZpYSB0aGUgRnJhbWVMb2FkZXJDbGll
bnQgZGlyZWN0bHkgYWZ0ZXIgY3JlYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDExYjUxMWZjMzkwZmU2MDU4M2Yx
ZTlhYjk0ZjA4ZTQxZTdiNTU3MTYuLjcwNmE5NTQ5YTE4YjQ2YmVjMjFkZTk1MWFiYTRjY2VmYjkx
ZjJhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC00NiwxNyArNDYsMjEgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
VHJhbnNhY3Rpb247CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIHdoZW4gY2hyb21pdW0g
cGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MDg1CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlSW5kZXhJZCA9
IC0xOworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQg
PSAtMTsKKwogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpIHt9OwogCiAgICAgdmlydHVh
bCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24s
IGludDY0X3QmIGZvdW5kSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQsIGludDY0X3QmIG1heE9i
amVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmVyc2lvbiwgaW50
NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBp
bnQ2NF90IGludFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9i
amVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFz
c2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9y
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kTWF4SW5kZXhJZHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7
CkBAIC04Miw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVj
dFN0b3JlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRl
eElkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2lnbmVkSW5kZXhJZCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RT
dG9yZVJlY29yZElkZW50aWZpZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDNlMGJkZWVlZTgzYzgwN2RlOTZlMjRi
NjcyODRkZTg3N2E1YjIxMS4uZDk3MmMyZGJkMjU2NWMzNTlhYTA2MDFkMTZmZjMyNDlmNDM0NzNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcApAQCAtMTY3LDkgKzE2NywxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJE
YXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRh
KG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOworICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCA9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZDsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3Jl
SWQsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZTo6TWluaW11bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9yZUJhY2tlbmQu
cmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9tZXRh
ZGF0YS5vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKKyAgICArK21fbWV0YWRhdGEu
bWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmpl
Y3RTdG9yZUNyZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwogICAgIHJldHVybiBvYmplY3RTdG9y
ZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDQ0NjZjNWNkNjY0MDZhZTk1
Yzg1ZWVjOTQzNjJhNDc2ZmEwMTc5ZDguLjc3YzJhODZjMzc3NzgyYjM5MTdhOGVhNGJmYmVmZGY5
NmE4MWI3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9u
KE5vU3RyaW5nVmVyc2lvbikKICAgICAsIG1faW50VmVyc2lvbihJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCisgICAgLCBtX21heE9iamVjdFN0b3JlSWQoSW52YWxpZElkKQogICAg
ICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9y
eSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKSkKQEAgLTE0Nyw3ICsxNDgsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0
bwogCiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9u
YW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCk7CisgICAgYm9vbCBzdWNjZXNzID0g
bV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24s
IG1faW50VmVyc2lvbiwgbV9pZCwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywg
bV9pZCA9ICVsbGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihtX2lkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0
b3JlcygpOwpAQCAtMTY3LDcgKzE2OCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJEYXRhYmFz
ZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAg
ICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZl
cnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBt
X3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBmb3IgKE9i
amVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7
IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0
dXJuIG1ldGFkYXRhOwpAQCAtMTc1LDE0ICsxNzYsMjMgQEAgSURCRGF0YWJhc2VNZXRhZGF0YSBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgcmV0dXJuIGNyZWF0ZU9i
amVjdFN0b3JlKEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBhdGgsIGF1dG9J
bmNyZW1lbnQsIHRyYW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CiAgICAgQVNTRVJUKCFt
X29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGUodGhpcywgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgQ09NUElMRV9B
U1NFUlQoQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9n
ZW5lcmF0ZU9iamVjdFN0b3JlSWQsIEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWRNYXRjaGVzKTsK
KyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4
SWQpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZS0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBpZCA+
IG1fbWF4T2JqZWN0U3RvcmVJZCwgImNyZWF0ZU9iamVjdFN0b3JlIHdpdGggJWxsdSBidXQgbmVl
ZGVkIHNvbWV0aGluZyBiaWdnZXIgdGhhbiAlbGxkIiwgaWQsIG1fbWF4T2JqZWN0U3RvcmVJZCk7
CisgICAgbV9tYXhPYmplY3RTdG9yZUlkID0gaWQ7CisKICAgICBSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3Jl
LCB0cmFuc2FjdGlvbiksCkBAIC0xOTksMTEgKzIwOSwxMyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosCiB7CiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkOwogCi0gICAgaWYgKCFkYXRhYmFzZS0+
bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwgb2Jq
ZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0
U3RvcmVJZCkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNl
LT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwgb2JqZWN0U3Rv
cmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0U3RvcmVJ
ZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
KyAgICBBU1NFUlQob2JqZWN0U3RvcmUtPmlkKCkgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZCB8fCBvYmplY3RTdG9yZS0+aWQoKSA9PSBvYmplY3RTdG9yZUlkKTsKICAgICBvYmplY3RTdG9y
ZS0+c2V0SWQob2JqZWN0U3RvcmVJZCk7CiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFz
a0V2ZW50cygpOwogfQpAQCAtNjA2LDE0ICs2MTgsMTYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAg
ICBWZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVjdG9yPGJvb2w+IGF1dG9JbmNy
ZW1lbnRGbGFnczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1faWQsIGlk
cywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MpOworICAgIFZlY3RvcjxpbnQ2
NF90PiBtYXhJbmRleElkczsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1f
aWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MsIG1heEluZGV4SWRz
KTsKIAogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJU
KGtleVBhdGhzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoYXV0b0luY3JlbWVu
dEZsYWdzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1h
eEluZGV4SWRzLnNpemUoKSA9PSBpZHMuc2l6ZSgpLCAiRXhwZWN0ZWQgJWx1IG1heEluZGV4SWRz
LCBidXQgZ290ICVsdSIsIGlkcy5zaXplKCksIG1heEluZGV4SWRzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9vYmplY3RT
dG9yZXMuc2V0KG5hbWVzW2ldLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhp
cywgaWRzW2ldLCBuYW1lc1tpXSwga2V5UGF0aHNbaV0sIGF1dG9JbmNyZW1lbnRGbGFnc1tpXSkp
OworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0sIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBrZXlQYXRoc1tpXSwgYXV0
b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlRnJvbU1hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBwcnBPYmplY3RTdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCA3MzQyZTcwNTRiNTI1ZGY5OTI1MWI1ZGZkODNmZDI1YTM4YTMxYWE3
Li4xOTk0YjVmOWI1NDE4ODk3NzMxN2ZmYjQ5MDE1ZTZmNDIyYjMxYTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtOTgsNiArOTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKICAgICBpbnQ2NF90IG1faW50VmVyc2lvbjsK
KyAgICBpbnQ2NF90IG1fbWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUg
ZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJl
dHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggY2JjYjlhNTljNTU2YWMwNWNhNzZiNGNiNzg4MGJiMzlmZWMwMTI2OC4uZDhi
ODY5ZDU1YTIwYjlkYzM3NTViOTk2NjNhNzJjOGU5NjQwYmM0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKIAorICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIHN0YXRpYyBjb25zdCBpbnQ2
NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPSAtMTsKKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IGUzZDNl
MDQzZDI0OTA3YWIzMjQwOGU1Mzg1NGNmNzU2ZmFlMzAyZGEuLjdmMzJiOWNkMmZmZTE1M2U3ZWRi
MDJlMjZjZGE0YTZhYzViNDRiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC01NCwyNCArNTQsMTMg
QEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwKIHsKIH0KIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6
SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFz
ZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnkpCi0gICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9vYmplY3RT
dG9yZUJhY2tlbmQob2JqZWN0U3RvcmVCYWNrZW5kKQotICAgICwgbV9pZChJbnZhbGlkSWQpCi0g
ICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQotICAgICwgbV91bmlx
dWUodW5pcXVlKQotICAgICwgbV9tdWx0aUVudHJ5KG11bHRpRW50cnkpCi17Ci19Ci0KIElEQklu
ZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAogSURCSW5kZXhN
ZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIElEQkluZGV4TWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRp
RW50cnkpOworICAgIHJldHVybiBJREJJbmRleE1ldGFkYXRhKG1fbmFtZSwgbV9pZCwgbV9rZXlQ
YXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJh
bmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5cGVkRGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmgKaW5kZXggMTczYzMyZDA4ZmYxNDMzYjk5OTBlNTA1MjI1MGNjODljYTZk
YThiOS4uOWZiZWMxNjk3ZTI3MWM3M2EwMmQ1NjE1Njc2YzYzY2U0ZDkxMGIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZElt
cGwuaApAQCAtNDcsMTAgKzQ3LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGRhdGFiYXNlLCBvYmplY3RTdG9yZUJhY2tl
bmQsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRh
dGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBv
YmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0U3Rv
cmVCYWNrZW5kLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKLSAgICB9CiAg
ICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kSW1wbCgpOwogCiAgICAgaW50NjRfdCBpZCgpIGNv
bnN0CkBAIC03Niw3ICs3Miw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgSURCSW5kZXhCYWNrZW5k
SW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2
b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA1MGVkZmQ0NmNjMGMyYzk5MzRkYzVkNWM4OWQyZWM1YWQ3
ZWRiZGJhLi4wYmUwNjUyNmI4ZDVjNzEyYzAzN2FkNDYzZDQxMGM0Nzk5YjM5Mzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcApAQCAtMTk0LDYgKzE5NCwyNCBAQCBzdGF0aWMgYm9vbCBzZXRVcE1l
dGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgIHJl
dHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3Rh
dGljIGludDY0X3QgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9yVHJhbnNhY3Rpb24qIGRiLCBpbnQ2
NF90IGRhdGFiYXNlSWQpCit7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heE9iamVjdFN0b3Jl
SWRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6TWF4T2JqZWN0U3RvcmVJZCk7CisgICAgcmV0dXJuIGdldE1heE9iamVjdFN0
b3JlSWQoZGIsIG1heE9iamVjdFN0b3JlSWRLZXkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
REJPclRyYW5zYWN0aW9uPgorc3RhdGljIGludDY0X3QgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIG1heE9iamVjdFN0b3JlSWRLZXkp
Cit7CisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkID0gLTE7CisgICAgaWYgKCFnZXRJbnQo
ZGIsIG1heE9iamVjdFN0b3JlSWRLZXksIG1heE9iamVjdFN0b3JlSWQpKQorICAgICAgICBtYXhP
YmplY3RTdG9yZUlkID0gMDsKKworICAgIEFTU0VSVChtYXhPYmplY3RTdG9yZUlkID49IDApOwor
ICAgIHJldHVybiBtYXhPYmplY3RTdG9yZUlkOworfQorCiBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFj
dG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIp
CiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5
KQpAQCAtMjgyLDcgKzMwMCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0
YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZl
cnNpb24sIGludDY0X3QmIGZvdW5kSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kU3Ry
aW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkLCBp
bnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkg
PSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwogCkBAIC0zMDAs
NiArMzE4LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmIChmb3VuZEludFZlcnNp
b24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pCiAgICAgICAgIGZv
dW5kSW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIAorICAg
IG1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhPYmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIGZvdW5k
SWQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3NSw3ICszOTUsOCBAQCBib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247CiAgICAgaW50NjRf
dCBpbnRWZXJzaW9uOwotICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJz
aW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3Jl
SWQ7CisgICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGludFZl
cnNpb24sIGRhdGFiYXNlSWQsIG1heE9iamVjdFN0b3JlSWQpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsK
QEAgLTQwNSw3ICs0MjYsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09iamVjdFN0b3JlQW5kTWV0YURh
dGFUeXBlKGNvbnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZlYwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpCit2b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90
PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0
aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3Ms
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElkcykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyIpOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCAxLCAwKTsKQEAgLTQxNSw2ICs0MzYsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90Pgog
ICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0
aHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQoZm91bmRNYXhJbmRleElkcy5pc0VtcHR5KCkpOwogCiAgICAgT3du
UHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGl0
LT5zZWVrKHN0YXJ0S2V5KTsKQEAgLTQ2OCw2ICs0OTAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2
NF90PgogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGludDY0X3QgbWF4SW5k
ZXhJZCA9IGRlY29kZUludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7
CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBoYXMga2V5IHBhdGggKGlzIG5v
dCBudWxsKQogICAgICAgICBpZiAoY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5n
ZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6SGFz
S2V5UGF0aCkpIHsKQEAgLTQ5OCwzMSArNTIxLDMxIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+
CiAgICAgICAgIGZvdW5kTmFtZXMuYXBwZW5kKG9iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGZv
dW5kS2V5UGF0aHMuYXBwZW5kKGtleVBhdGgpOwogICAgICAgICBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncy5hcHBlbmQoYXV0b0luY3JlbWVudCk7CisgICAgICAgIGZvdW5kTWF4SW5kZXhJZHMuYXBw
ZW5kKG1heEluZGV4SWQpOwogICAgIH0KIH0KIAotc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0
U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQpCitzdGF0aWMgYm9vbCBzZXRNYXhPYmplY3RTdG9yZUlkKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQog
ewotICAgIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCA9IC0xOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBtYXhPYmplY3RTdG9yZUlkS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok1heE9iamVjdFN0b3JlSWQpOwotICAgIGlm
ICghZ2V0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBtYXhPYmplY3RTdG9y
ZUlkKSkKLSAgICAgICAgbWF4T2JqZWN0U3RvcmVJZCA9IDA7Ci0KLSAgICBBU1NFUlQobWF4T2Jq
ZWN0U3RvcmVJZCA+PSAwKTsKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhP
YmplY3RTdG9yZUlkKHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5KTsKIAotICAgIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCA9IG1heE9iamVjdFN0b3JlSWQgKyAxOwotICAgIGlmICghcHV0
SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBvYmplY3RTdG9yZUlkKSkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIG9iamVjdFN0b3JlSWQ7CisgICAgaWYgKG9i
amVjdFN0b3JlSWQgPD0gbWF4T2JqZWN0U3RvcmVJZCkgeworICAgICAgICBMT0dfRVJST1IoIlBv
c3NpYmxlIGNvcnJ1cHRpb246IG5ldyBvYmplY3Qgc3RvcmUgaWQgaXMgdG9vIHNtYWxsLiIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBwdXRJbnQodHJhbnNhY3Rp
b24sIG1heE9iamVjdFN0b3JlSWRLZXksIG9iamVjdFN0b3JlSWQpOwogfQogCi1ib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2
NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0
aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gZ2V0TmV3
T2JqZWN0U3RvcmVJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQpOwotICAgIGlmIChv
YmplY3RTdG9yZUlkIDwgMCkKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1
bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgwODUKKyAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSAtMSkKKyAgICAgICAgb2JqZWN0
U3RvcmVJZCA9IGdldE1heE9iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkKSArIDE7CisKKyAgICBpZiAoIXNldE1heE9iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0
aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6TmFtZSk7CkBAIC01ODksNiArNjEyLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmEKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODA4NQogICAgIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCA9IG9iamVj
dFN0b3JlSWQ7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkxOCw3ICs5NDIsNyBAQCB2b2lkIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSQogICAgIH0KIH0KIAotc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJ
ZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkKK3N0YXRpYyBpbnQ2NF90IGdldE1heEluZGV4SWQoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpCiB7CiAgICAgaW50NjRfdCBtYXhJbmRleElkID0gLTE7CiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TWF4
SW5kZXhJZCk7CkBAIC05MjYsMjAgKzk1MCwzNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJbmRl
eElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZAog
ICAgICAgICBtYXhJbmRleElkID0gTWluaW11bUluZGV4SWQ7CiAKICAgICBBU1NFUlQobWF4SW5k
ZXhJZCA+PSAwKTsKKyAgICByZXR1cm4gbWF4SW5kZXhJZDsKK30KIAotICAgIGludDY0X3QgaW5k
ZXhJZCA9IG1heEluZGV4SWQgKyAxOwotICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJ
bmRleElkS2V5LCBpbmRleElkKSkKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIGJvb2wgc2V0
TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQoreworICAgIGlu
dDY0X3QgbWF4SW5kZXhJZCA9IC0xOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRleElk
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOworICAgIGlmICghZ2V0
SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElkKSkKKyAgICAgICAgbWF4
SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOwogCi0gICAgcmV0dXJuIGluZGV4SWQ7CisgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gY2hyb21pdW0gcGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgaWYgKGluZGV4
SWQgPT0gLTEpCisgICAgICAgIGluZGV4SWQgPSBtYXhJbmRleElkICsgMTsKKworICAgIGlmIChp
bmRleElkIDw9IG1heEluZGV4SWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJQb3NzaWJsZSBjb3Jy
dXB0aW9uOiBuZXcgaW5kZXggaWQgaXMgdG9vIHNtYWxsLiIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtl
eSwgaW5kZXhJZCk7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBp
bnQ2NF90JiBpbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29s
IGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgYXNzaWduZWRJbmRleElkKQogewogICAgIElEQl9UUkFD
RSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBMZXZlbERCVHJh
bnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICBpbmRleElkID0gZ2V0TmV3SW5kZXhJZChsZXZl
bERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwotICAgIGlmIChpbmRl
eElkIDwgMCkKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmlu
ZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgw
ODUKKyAgICBpZiAoaW5kZXhJZCA9PSAtMSkKKyAgICAgICAgaW5kZXhJZCA9IGdldE1heEluZGV4
SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSArIDE7CisK
KyAgICBpZiAoIXNldE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6TmFtZSk7CkBA
IC05NzEsNiArMTAxMiw5IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1
bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgwODUKKyAgICBhc3NpZ25lZEluZGV4SWQgPSBpbmRleElkOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCA3N2NiMDZlNzg1YWY4MDk4MDk3Yjll
OTJjODZmZTFmMmE3ZWRmNjY5Li5lZWEyM2QyOTRmMGU5NDA2NzUxODc3MjMzYTAyZWZkMzc2NGYx
MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfklEQkxldmVsREJCYWNraW5nU3RvcmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
Zm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50
NjRfdCYgZm91bmRJZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBi
b29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpOwogICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbik7CiAgICAg
dmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJL
ZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRP
YmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3Qg
ZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZv
dW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+
JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBmb3VuZE1heEluZGV4
SWRzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZp
ZXIoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlUmVjb3JkQ2FsbGJhY2smKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4m
IGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+
JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxi
b29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBhc3NpZ25lZEluZGV4SWQpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAg
ICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRh
dGEuaAppbmRleCBiM2NiY2ExYjI2NDkwNjJhNGNjZjA3ODFiM2NmMWM4MDM0ZjlmNjA3Li4wOTZm
ODlhZmE5M2QxMWY5YjhiYjhmZWNiZTk3ZjkxZGMyMTU0MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKQEAgLTUyLDE2ICs1MiwyMCBAQCBz
dHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CiAgICAgICAgIDogaW50VmVyc2lvbihOb0ludFZl
cnNpb24pCiAgICAgewogICAgIH0KLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24pCisgICAg
SURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90IG1heE9iamVjdFN0
b3JlSWQpCiAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGlkKGlkKQogICAgICAgICAs
IHZlcnNpb24odmVyc2lvbikKICAgICAgICAgLCBpbnRWZXJzaW9uKGludFZlcnNpb24pCisgICAg
ICAgICwgbWF4T2JqZWN0U3RvcmVJZChtYXhPYmplY3RTdG9yZUlkKQogICAgIHsKICAgICB9CiAK
ICAgICBTdHJpbmcgbmFtZTsKKyAgICBpbnQ2NF90IGlkOwogICAgIFN0cmluZyB2ZXJzaW9uOwog
ICAgIGludDY0X3QgaW50VmVyc2lvbjsKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBPYmpl
Y3RTdG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7CkBAIC02OSwxMyAr
NzMsMTggQEAgc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewogCiBzdHJ1Y3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSB7CiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSgpIHsgfQotICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCBtYXhJbmRleElkKQogICAgICAgICA6IG5h
bWUobmFtZSkKICAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCi0gICAgICAgICwgYXV0b0luY3Jl
bWVudChhdXRvSW5jcmVtZW50KSB7IH0KKyAgICAgICAgLCBhdXRvSW5jcmVtZW50KGF1dG9JbmNy
ZW1lbnQpCisgICAgICAgICwgbWF4SW5kZXhJZChtYXhJbmRleElkKQorICAgIHsKKyAgICB9CiAg
ICAgU3RyaW5nIG5hbWU7CisgICAgaW50NjRfdCBpZDsKICAgICBJREJLZXlQYXRoIGtleVBhdGg7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50OworICAgIGludDY0X3QgbWF4SW5kZXhJZDsKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkluZGV4TWV0YWRhdGE+IEluZGV4TWFwOwogICAg
IEluZGV4TWFwIGluZGV4ZXM7CkBAIC04MywxMiArOTIsMTQgQEAgc3RydWN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgewogCiBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YSB7CiAgICAgSURCSW5kZXhN
ZXRhZGF0YSgpIHsgfQotICAgIElEQkluZGV4TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQor
ICAgIElEQkluZGV4TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAg
ICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBpZChpZCkKICAgICAgICAgLCBrZXlQYXRoKGtl
eVBhdGgpCiAgICAgICAgICwgdW5pcXVlKHVuaXF1ZSkKICAgICAgICAgLCBtdWx0aUVudHJ5KG11
bHRpRW50cnkpIHsgfQogICAgIFN0cmluZyBuYW1lOworICAgIGludDY0X3QgaWQ7CiAgICAgSURC
S2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgdW5pcXVlOwogICAgIGJvb2wgbXVsdGlFbnRyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCA0Y2JlNjNkMTE1ZTBhYTA0NGI2MGY5NGU1NGJmZWVhZGM5NGU3YmRjLi4yMTc3
ZjdlYTBkN2Q0YmI2ZGM0ZDBjYWQyN2VmM2FiZTI4ZWNlNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC00MDEsMTIg
KzQwMSwxNSBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKKyAgICBpbnQ2NF90IGluZGV4SWQgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U6OkF1dG9nZW5lcmF0ZUluZGV4SWQ7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAg
IEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5k
ZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVy
c2EuCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIElEQkluZGV4TWV0YWRh
dGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKKyAgICArK21f
bWV0YWRhdGEubWF4SW5kZXhJZDsKKworICAgIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEobmFt
ZSwgaW5kZXhJZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKICAgICBSZWZQdHI8SURC
SW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRhZGF0YSwgaW5kZXhCYWNrZW5kLnJl
bGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQo
bmFtZSwgaW5kZXgpOwogICAgIG1fbWV0YWRhdGEuaW5kZXhlcy5zZXQobmFtZSwgbWV0YWRhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3ODk5OTJhYjZlNWMzNGRmNDVjYjI5
YTY1NWQ2YzlhNjc1NTUyMWE1Li4yYWI5MWQ3MzNlZjJlNjUzN2NhMmQ0MTA2MGFlYmQ3ZWI4ZTc3
MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTEsMjggKzUxLDIxIEBAIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCkKIHsK
IH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgaW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgaW50NjRfdCBtYXhJbmRleElkKQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkK
ICAgICAsIG1faWQoaWQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5UGF0aChrZXlQ
YXRoKQogICAgICwgbV9hdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpCisgICAgLCBtX21heElu
ZGV4SWQobWF4SW5kZXhJZCkKIHsKLSAgICBsb2FkSW5kZXhlcygpOwotfQotCi1JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFi
YXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKLSAgICA6IG1fZGF0YWJhc2UoZGF0
YWJhc2UpCi0gICAgLCBtX2lkKEludmFsaWRJZCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwg
bV9rZXlQYXRoKGtleVBhdGgpCi0gICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkK
LXsKKyAgICBpZiAobV9pZCAhPSBBdXRvZ2VuZXJhdGVJbmRleElkKQorICAgICAgICBsb2FkSW5k
ZXhlcygpOwogfQogCiBJREJPYmplY3RTdG9yZU1ldGFkYXRhIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1l
dGFkYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX2F1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBtX2tleVBhdGgsIG1fYXV0b0lu
Y3JlbWVudCwgbV9tYXhJbmRleElkKTsKICAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCiAg
ICAgICAgIG1ldGFkYXRhLmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRh
dGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwpAQCAtNDM2LDEzICs0MjksMjEgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHQKIAogUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpOwor
ICAgIHJldHVybiBjcmVhdGVJbmRleChBdXRvZ2VuZXJhdGVJbmRleElkLCBuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKK1Bhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250YWlucyhuYW1lKSwgIkluZGV4
ZXMgYWxyZWFkeSBjb250YWluICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0
ZShtX2RhdGFiYXNlLCB0aGlzLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOwor
ICAgIENPTVBJTEVfQVNTRVJUKEF1dG9nZW5lcmF0ZUluZGV4SWQgPT0gSURCQmFja2luZ1N0b3Jl
OjpBdXRvZ2VuZXJhdGVJbmRleElkLCBBdXRvZ2VuZXJhdGVJbmRleElkTWF0Y2hlcyk7CisgICAg
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6
Y3JlYXRlKG1fZGF0YWJhc2UsIHRoaXMsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQo
aWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCB8fCBpZCA+IG1fbWF4SW5kZXhJZCk7CisgICAgbV9t
YXhJbmRleElkID0gaWQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygK
QEAgLTQ1OSwxMSArNDYwLDEzIEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgaW50NjRfdCBpZDsK
LSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSW5kZXgodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlk
KCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBp
bmRleC0+dW5pcXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCksIGlkKSkgeworICAgIGlmICghb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3Rv
cmUtPmlkKCksIGluZGV4LT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBp
bmRleC0+dW5pcXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCksIGlkKSkgewogICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIEFTU0VSVChpbmRleC0+
aWQoKSA9PSBBdXRvZ2VuZXJhdGVJbmRleElkIHx8IGluZGV4LT5pZCgpID09IGlkKTsKICAgICBp
bmRleC0+c2V0SWQoaWQpOwogCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGJkOTViYmViZTJmN2UyYTJiZDI5MzEy
MGJmZjgxMjdlMGNiYjJmZTcuLmEyNDY0ZjY2MjhlMTM2ZWNhNWYwODk1MzJmMTQ2OGVjMDgxZDg2
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTQ3LDEzICs0Nyw5IEBAIHN0cnVjdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
IDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUo
Y29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBpbnQ2NF90IG1heEluZGV4SWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50KSk7Ci0gICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKGRhdGFiYXNlLCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbWF4SW5k
ZXhJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCk7
CiAKQEAgLTczLDcgKzY5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIHdoZW4gY2hyb21pdW0gcGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+
JiAsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTk2
LDggKzk0LDcgQEAgcHVibGljOgogICAgIGludDY0X3QgZGF0YWJhc2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YWJhc2UtPmlkKCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQp
OwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5l
cmF0ZUtleShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyMiw2
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgSURCS2V5UGF0aCBt
X2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAgaW50NjRfdCBtX21heElu
ZGV4SWQ7CiAKICAgICBJbmRleE1hcCBtX2luZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCAwMTc5YjZhODhhZjYyNmFkYjJlY2M0YWIyMDQxMGFkMGNhM2Zh
ZjJmLi4wMjdjZWQ2MzBiYjhhNmVkN2IxZjRjNGNiYTExNjI1N2E1NDllMzkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTYsNiArNTYsMTEgQEAgcHVibGljOgogICAg
ICAgICBBZGRPbmx5LAogICAgICAgICBDdXJzb3JVcGRhdGUKICAgICB9OworCisgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgTWluaW11bUluZGV4SWQgPSAzMDsKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBB
dXRvZ2VuZXJhdGVJbmRleElkID0gLTE7CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SURC
S2V5PiA+IEluZGV4S2V5czsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoSW5kZXhLZXlzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBF
eGNlcHRpb25Db2RlJikgPSAwOwpAQCAtNjMsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJ
REJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDgzYjlhNDI1Zjg0N2ZhOWQ4ODE3Mzdj
MzA5ZWE4YTI4MmFiNGVmMjkuLjE2Y2ZiZDg1ZGI0NjEzYjRkZjNmZmQ4Y2ZhYWFmMTQ2OTBmY2U0
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aApAQCAtNTUsNiArNTUsMTEgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYs
IGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJz
aGlwIG9mIHRoZSBXZWJJREJUcmFuc2FjdGlvbiB0byB0aGUgY2FsbGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggMWYyZTllYWQ0NWYy
MjNhNjlhNjYwY2M3Y2M2Nzg0MTAwMmYxZmY2ZS4uOTU3ZTA4MmJiMGZiMjYyOTdlNDVkNWQ4ZmY3
OGZhODc0ZjBmZDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJNZXRhZGF0YS5oCkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAg
ICAgLy8gc2V0VmVyc2lvbiwgV2ViU3RyaW5nIHZlcnNpb24gY2FuIGJlIHJlbW92ZWQuCiAgICAg
V2ViU3RyaW5nIHZlcnNpb247CiAgICAgbG9uZyBsb25nIGludFZlcnNpb247CisgICAgbG9uZyBs
b25nIGlkOworICAgIGxvbmcgbG9uZyBtYXhPYmplY3RTdG9yZUlkOwogICAgIFdlYlZlY3RvcjxP
YmplY3RTdG9yZT4gb2JqZWN0U3RvcmVzOwogICAgIFdlYklEQk1ldGFkYXRhKCkKICAgICAgICAg
OiBpbnRWZXJzaW9uKE5vSW50VmVyc2lvbikgeyB9CkBAIC01OCw2ICs2MCw4IEBAIHN0cnVjdCBX
ZWJJREJNZXRhZGF0YSB7CiAgICAgICAgIFdlYlN0cmluZyBuYW1lOwogICAgICAgICBXZWJJREJL
ZXlQYXRoIGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICAgICAgbG9u
ZyBsb25nIGlkOworICAgICAgICBsb25nIGxvbmcgbWF4SW5kZXhJZDsKICAgICAgICAgV2ViVmVj
dG9yPEluZGV4PiBpbmRleGVzOwogICAgICAgICBPYmplY3RTdG9yZSgpCiAgICAgICAgICAgICA6
IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQpAQCAtNjksNiArNzMsNyBAQCBz
dHJ1Y3QgV2ViSURCTWV0YWRhdGEgewogICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CiAg
ICAgICAgIGJvb2wgdW5pcXVlOwogICAgICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIGxv
bmcgbG9uZyBpZDsKICAgICAgICAgSW5kZXgoKQogICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklE
QktleVBhdGg6OmNyZWF0ZU51bGwoKSkKICAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5k
ZXggYTJiODdkYTgxNjFlODgzZjA0NDI5YjdlMjMwMjVlMWFiMjA4YzdjMS4uY2EwMTAzY2RhNmZj
M2YzNzJjYWRjYWFiN2NkNmNlMzA1YTIyN2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC02Myw2ICs2MywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9u
ZywgY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdl
YlZlY3RvcjxXZWJTdHJpbmc+JiwgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5n
PiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH07CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8g
dGhlIGNhbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1MDFjZTYxZmI1OTU2MjY2YjBjM2JmMWI0YzAy
YWVmNmNkYTAwODA2Li44YjFmYmM0MDVjYWExOTA5MGVjMDMwMDQ4Mjg1NzQ2NGMwZjRjNDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuY3BwCkBAIC02Niw2ICs2NiwxNyBAQCBJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRh
dGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURC
RGF0YWJhc2UtPm1ldGFkYXRhKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBw
b2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFz
LCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50
ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5Kj4odHJhbnNhY3Rpb24pOworICAgIE93blB0cjxXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0
U3RvcmUgPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShpZCwg
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklE
QlRyYW5zYWN0aW9uKCksIGVjKSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2Jq
ZWN0U3RvcmUucmVsZWFzZSgpKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDc5NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2
NTAuLmVhNjkzYWRhMTdlM2E1MWVjYjE5YTA5ZGEzNDZiN2RjMWZjYTEwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IGI1M2ViMmMzYTQ2ODZlNmQzYWU0MjZkYTMxNGIy
Njc1YTIyZjIwZjAuLjk2Yjc2MTNlMTU5M2ZjZGE1M2M0NWFlYzUzMDIwNWRkY2Q5ZDlhYmUgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEwMyw2ICsxMDMsMTcgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
SURCVHIKICAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5jbGVhcihuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSwgZWMpOwogfQogCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGxvbmcgbG9uZyBpZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJl
bmRlcmVyLAorICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJl
IHByb3h5IG9iamVjdHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0
aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5z
YWN0aW9uKTsKKyAgICBPd25QdHI8V2ViSURCSW5kZXg+IGluZGV4ID0gYWRvcHRQdHIobV93ZWJJ
REJPYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgoaWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVs
dGlFbnRyeSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKSk7
CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4
QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgucmVsZWFzZSgpKTsKK30KKwogUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVh
dGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJv
b2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIC8vIFRoZSB0cmFuc2Fj
dGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2Jq
ZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAppbmRleCA3NGNiMGJkNTcwM2I2
MTUyNWRhNWZkNWM0ODJlNWU2ZWE0NDhjZGIxLi44NDcwYzFhZDkwNWJjMTU2ZmQ5ZjNiOGZjMTRl
ZmYxZTQxMWU4YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eVJhbmdlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwg
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogCisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
JiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IHBycFByaW1hcnlL
ZXksIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPElu
ZGV4S2V5cz4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhlc1JlYWR5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCBiNThjZDUxMTE3
NzY4ODRmOTU2MDFlOWVlNzllMGQ4Mjg5M2M2MmQwLi5hZWZlYjBmYWY2YzFiM2Q0YzYxMmY3NTYy
NmJlOTFkMjI5NWJmZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTYwLDYgKzYwLDE2IEBAIFdlYklEQk1ldGFkYXRhIFdl
YklEQkRhdGFiYXNlSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGFiYXNl
QmFja2VuZC0+bWV0YWRhdGEoKTsKIH0KIAorV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFi
YXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUobG9uZyBsb25nIGlkLCBjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RT
dG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShpZCwgbmFtZSwga2V5
UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKCksIGVjKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKSB7CisgICAgICAgIEFTU0VS
VChlYyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbmV3IFdlYklEQk9i
amVjdFN0b3JlSW1wbChvYmplY3RTdG9yZSk7Cit9CisKIFdlYklEQk9iamVjdFN0b3JlKiBXZWJJ
REJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBX
ZWJJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0g
bV9kYXRhYmFzZUJhY2tlbmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9J
bmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgp
LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1w
bC5oCmluZGV4IDUxOGZmY2RiOTc5ODAwNWU0Yzg4YzA3ODhlMDRlYWU1M2Y3NmM4YzcuLjg0OTk2
OWNiNGJhMjhmMDU4YTUxNTJmOTM4ODkyM2ZhYWYxY2FhNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFdlYklEQk1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
V2ViSURCT2JqZWN0U3RvcmUqIGNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZywgY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBj
b25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJ
REJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
bihjb25zdCBXZWJET01TdHJpbmdMaXN0JiBuYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCTWV0YWRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0
YWRhdGEuY3BwCmluZGV4IGI0NGE5ZTlmOGI5NzNmZGFlMjg3MDFjM2VlNzFjNjgxYjczMTQ2YWUu
LmI4ZTNkYjNhNDAxN2ZhNzUzMGY5MjZkMGZmY2Q4ZDJlMWU4MmQ3MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAg
V2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNl
TWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIHZlcnNpb24gPSBtZXRhZGF0YS52ZXJzaW9uOwogICAg
IGludFZlcnNpb24gPSBtZXRhZGF0YS5pbnRWZXJzaW9uOwogICAgIG9iamVjdFN0b3JlcyA9IFdl
YlZlY3RvcjxPYmplY3RTdG9yZT4oc3RhdGljX2Nhc3Q8c2l6ZV90PihtZXRhZGF0YS5vYmplY3RT
dG9yZXMuc2l6ZSgpKSk7CisgICAgbWF4T2JqZWN0U3RvcmVJZCA9IG1ldGFkYXRhLm1heE9iamVj
dFN0b3JlSWQ7CiAKICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChJREJEYXRhYmFzZU1ldGFk
YXRhOjpPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3Igc3RvcmVJdGVyYXRvciA9IG1ldGFk
YXRhLm9iamVjdFN0b3Jlcy5iZWdpbigpOyBzdG9yZUl0ZXJhdG9yICE9IG1ldGFkYXRhLm9iamVj
dFN0b3Jlcy5lbmQoKTsgKytzdG9yZUl0ZXJhdG9yKSB7CkBAIC01Miw2ICs1Myw3IEBAIFdlYklE
Qk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSkKICAgICAgICAgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCA9IG9iamVjdFN0
b3JlLmtleVBhdGg7CiAgICAgICAgIHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQgPSBvYmpl
Y3RTdG9yZS5hdXRvSW5jcmVtZW50OwogICAgICAgICB3ZWJPYmplY3RTdG9yZS5pbmRleGVzID0g
V2ViVmVjdG9yPEluZGV4PihzdGF0aWNfY2FzdDxzaXplX3Q+KG9iamVjdFN0b3JlLmluZGV4ZXMu
c2l6ZSgpKSk7CisgICAgICAgIHdlYk9iamVjdFN0b3JlLm1heEluZGV4SWQgPSBvYmplY3RTdG9y
ZS5tYXhJbmRleElkOwogCiAgICAgICAgIHNpemVfdCBqID0gMDsKICAgICAgICAgZm9yIChJREJP
YmplY3RTdG9yZU1ldGFkYXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaW5kZXhJdGVyYXRv
ciA9IG9iamVjdFN0b3JlLmluZGV4ZXMuYmVnaW4oKTsgaW5kZXhJdGVyYXRvciAhPSBvYmplY3RT
dG9yZS5pbmRleGVzLmVuZCgpOyArK2luZGV4SXRlcmF0b3IpIHsKQEAgLTY5LDE0ICs3MSwxNCBA
QCBXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAKIFdlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRh
YmFzZU1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGRiKG5hbWUs
IHZlcnNpb24sIGludFZlcnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgZGIobmFtZSwg
aWQsIHZlcnNpb24sIGludFZlcnNpb24sIG1heE9iamVjdFN0b3JlSWQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U3RvcmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0
IE9iamVjdFN0b3JlIHdlYk9iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVzW2ldOwotICAgICAgICBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlKHdlYk9iamVjdFN0b3JlLm5hbWUsIHdl
Yk9iamVjdFN0b3JlLmtleVBhdGgsIHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQpOworICAg
ICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlKHdlYk9iamVjdFN0b3JlLm5h
bWUsIHdlYk9iamVjdFN0b3JlLmlkLCB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoLCB3ZWJPYmplY3RT
dG9yZS5hdXRvSW5jcmVtZW50LCB3ZWJPYmplY3RTdG9yZS5tYXhJbmRleElkKTsKIAogICAgICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHdlYk9iamVjdFN0b3JlLmluZGV4ZXMuc2l6ZSgpOyAr
K2opIHsKICAgICAgICAgICAgIGNvbnN0IEluZGV4IHdlYkluZGV4ID0gd2ViT2JqZWN0U3RvcmUu
aW5kZXhlc1tqXTsKLSAgICAgICAgICAgIElEQkluZGV4TWV0YWRhdGEgaW5kZXgod2ViSW5kZXgu
bmFtZSwgd2ViSW5kZXgua2V5UGF0aCwgd2ViSW5kZXgudW5pcXVlLCB3ZWJJbmRleC5tdWx0aUVu
dHJ5KTsKKyAgICAgICAgICAgIElEQkluZGV4TWV0YWRhdGEgaW5kZXgod2ViSW5kZXgubmFtZSwg
d2ViSW5kZXguaWQsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgu
bXVsdGlFbnRyeSk7CiAgICAgICAgICAgICBvYmplY3RTdG9yZS5pbmRleGVzLnNldChpbmRleC5u
YW1lLCBpbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgZGIub2JqZWN0U3RvcmVzLnNldChvYmpl
Y3RTdG9yZS5uYW1lLCBvYmplY3RTdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCBmNWRkOTEzYzk0ODUyNzhi
NDY2OGJkMjczNDYxMmY4YWVkMjE3NTlhLi4xOThhMjg3ODg2YTI2OGRlODI0NGJiNDc5MzZmODdh
ZjBlMTBiNjZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
Qk9iamVjdFN0b3JlSW1wbC5jcHAKQEAgLTExNyw2ICsxMTcsMTQgQEAgV2ViSURCSW5kZXgqIFdl
YklEQk9iamVjdFN0b3JlSW1wbDo6Y3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWIKICAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7CiB9CiAKK1dl
YklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGxvbmcgbG9uZyBp
ZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+Y3JlYXRlSW5kZXgoaWQsIG5h
bWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb24uZ2V0SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdlYklEQkluZGV4SW1wbChpbmRleCk7Cit9CisKIFdl
YklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmluZGV4KGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEludGVyZmFjZT4gaW5kZXggPSBtX29iamVjdFN0b3JlLT5pbmRleChuYW1lLCBlYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCmlu
ZGV4IDA0MDIwZTU1OGY0NGQ0MWRiZjY5OTQyZTM2ZWU2MGI1ODc0NGU4MjMuLjkwMjY0MWEwMTk0
Zjc4NzM5MTQxNjRiMDI2ZjQwZGI5YTQ1NjA4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC01Myw2ICs1Myw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsZWFyKFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYklEQlRyYW5z
YWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgV2ViSURCSW5kZXgqIGNyZWF0ZUlu
ZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpOworICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChsb25nIGxvbmcsIGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYp
OwogICAgIFdlYklEQkluZGV4KiBpbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166998</attachid>
            <date>2012-10-03 16:54:53 -0700</date>
            <delta_ts>2012-10-03 17:39:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97834-20121003165404.patch</filename>
            <type>text/plain</type>
            <size>64912</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uYTEzZjdmMGRlNWUwNDc4Yzg1MDQ2ZmRhZDI4OGRm
ODQ0MzVhZTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTEwLTAzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8gdGhlIGZyb250ZW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBpbnQ2NC1i
YXNlZCBkYXRhYmFzZS9vYmplY3RTdG9yZS9pbmRleCBpZHMgdG8gdGhlIHJlbmRlcmVyLAorICAg
ICAgICBzdGVwIDEgb2YgMi4gU3VwcG9ydCBib3RoIHN0eWxlcyBvZiBjcmVhdGVPYmplY3RTdG9y
ZSBhbmQKKyAgICAgICAgY3JlYXRlSW5kZXg6IHRob3NlIHRoYXQgdGFrZSBhbiBleHBsaWNpdCBp
ZCwgYW5kIHRob3NlIHRoYXQgdGFrZQorICAgICAgICAtMSwgbWVhbmluZyB0byBhdXRvZ2VuZXJh
dGUgYW4gaWQgb24gdGhlIGJhY2tlbmQuIEluIHBhcnQgMiwgYWZ0ZXIKKyAgICAgICAgdGhlIGNo
cm9taXVtIHNpZGUgbGFuZHMsIHN1cHBvcnQgZm9yIHRoZSBhdXRvZ2VuZXJhdGVkIGlkcyB3aWxs
IGJlCisgICAgICAgIHJlbW92ZWQuIChTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MDg1KQorCisgICAgICAgIFRoaXMgaXMgYSBwYXJ0IG9mIGxhcmdlciByZWZh
Y3RvcmluZyB3b3JrIHRvIHVsdGltYXRlbHkgbWFrZSB0aGUgaW50ZXJmYWNlCisgICAgICAgIGJl
dHdlZW4gdGhlIGZyb250ZW5kIGFuZCB0aGUgYmFja2VuZCBzaW1wbGVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgZXh0ZW5zaXZlIEFTU0VSVHMgYW5kIGV4aXN0aW5nIHRlc3RzIGNvdmVyIGNv
cnJlY3RuZXNzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9i
amVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhPYmplY3RTdG9yZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1heEluZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4
SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6Cisg
ICAgICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAx
Mi0xMC0wMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBCdWlsZCBmaXggZm9yIFdpbkNFIGFmdGVyIHIxMzAxNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGNiNTlkNWIxMWFhZWY1OWIyM2U2MjdiYmVhZThiODI0NThjNzFkZDUuLjI1MDMx
Y2ViMGFlZWJiNjg0MGI2YjgxMWIzOTFkM2I5YmU3YTAyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMTAtMDMgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogcHJvbW90ZSBvYmplY3RzdG9y
ZS9pbmRleCBiYWNrZW5kIGlkcyB0byB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgbWFyc2hhbGxpbmcgYWRkaXRp
b25hbCBJREJNZXRhZGF0YSBhbmQgbmV3IGNhbGxzIHRvCisgICAgICAgIGNyZWF0ZU9iamVjdFN0
b3JlL2NyZWF0ZUluZGV4LgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgICogcHVibGljL1dlYklEQk1ldGFkYXRhLmg6CisgICAgICAgIChPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChJbmRleCk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKToK
KyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDoKKyAgICAgICAgKFdlYklE
Qk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTItMTAtMDMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBSVENQZWVyQ29ubmVj
dGlvbiBzaG91bGQgc2VuZCBkb3duIGl0cyBoYW5kbGVyIHZpYSB0aGUgRnJhbWVMb2FkZXJDbGll
bnQgZGlyZWN0bHkgYWZ0ZXIgY3JlYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDExYjUxMWZjMzkwZmU2MDU4M2Yx
ZTlhYjk0ZjA4ZTQxZTdiNTU3MTYuLjcwNmE5NTQ5YTE4YjQ2YmVjMjFkZTk1MWFiYTRjY2VmYjkx
ZjJhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC00NiwxNyArNDYsMjEgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
VHJhbnNhY3Rpb247CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIHdoZW4gY2hyb21pdW0g
cGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MDg1CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlSW5kZXhJZCA9
IC0xOworICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQg
PSAtMTsKKwogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpIHt9OwogCiAgICAgdmlydHVh
bCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24s
IGludDY0X3QmIGZvdW5kSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQsIGludDY0X3QmIG1heE9i
amVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmVyc2lvbiwgaW50
NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1
cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBp
bnQ2NF90IGludFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcm
IG5hbWUpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBk
YXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4m
IGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9i
amVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFz
c2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9y
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kTWF4SW5kZXhJZHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7
CkBAIC04Miw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVj
dFN0b3JlUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURC
S2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRl
eElkKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9v
bCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2lnbmVkSW5kZXhJZCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgcHV0SW5kZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5Jiwg
Y29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RT
dG9yZVJlY29yZElkZW50aWZpZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDNlMGJkZWVlZTgzYzgwN2RlOTZlMjRi
NjcyODRkZTg3N2E1YjIxMS4uZDk3MmMyZGJkMjU2NWMzNTlhYTA2MDFkMTZmZjMyNDlmNDM0NzNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
LmNwcApAQCAtMTY3LDkgKzE2NywxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJE
YXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRh
KG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpOworICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCA9IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZDsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3Jl
SWQsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZTo6TWluaW11bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3Rv
cmUgPSBJREJPYmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9yZUJhY2tlbmQu
cmVsZWFzZSgpLCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9tZXRh
ZGF0YS5vYmplY3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKKyAgICArK21fbWV0YWRhdGEu
bWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmpl
Y3RTdG9yZUNyZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwogICAgIHJldHVybiBvYmplY3RTdG9y
ZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDQ0NjZjNWNkNjY0MDZhZTk1
Yzg1ZWVjOTQzNjJhNDc2ZmEwMTc5ZDguLjc3YzJhODZjMzc3NzgyYjM5MTdhOGVhNGJmYmVmZGY5
NmE4MWI3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcm
IG5hbWUsIElEQkJhY2tpbmdTdG8KICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9u
KE5vU3RyaW5nVmVyc2lvbikKICAgICAsIG1faW50VmVyc2lvbihJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCisgICAgLCBtX21heE9iamVjdFN0b3JlSWQoSW52YWxpZElkKQogICAg
ICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9y
eSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yOjpjcmVhdGUoKSkKQEAgLTE0Nyw3ICsxNDgsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0
bwogCiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9u
YW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCk7CisgICAgYm9vbCBzdWNjZXNzID0g
bV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24s
IG1faW50VmVyc2lvbiwgbV9pZCwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywg
bV9pZCA9ICVsbGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihtX2lkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0
b3JlcygpOwpAQCAtMTY3LDcgKzE2OCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJEYXRhYmFz
ZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAg
ICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZl
cnNpb24pOworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBt
X3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBmb3IgKE9i
amVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7
IGl0ICE9IG1fb2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0
dXJuIG1ldGFkYXRhOwpAQCAtMTc1LDE0ICsxNzYsMjMgQEAgSURCRGF0YWJhc2VNZXRhZGF0YSBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgcmV0dXJuIGNyZWF0ZU9i
amVjdFN0b3JlKEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBhdGgsIGF1dG9J
bmNyZW1lbnQsIHRyYW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CiAgICAgQVNTRVJUKCFt
X29iamVjdFN0b3Jlcy5jb250YWlucyhuYW1lKSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGUodGhpcywgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgQ09NUElMRV9B
U1NFUlQoQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9n
ZW5lcmF0ZU9iamVjdFN0b3JlSWQsIEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWRNYXRjaGVzKTsK
KyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIGF1
dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4
SWQpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZS0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0
aW9uLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoaWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBpZCA+
IG1fbWF4T2JqZWN0U3RvcmVJZCwgImNyZWF0ZU9iamVjdFN0b3JlIHdpdGggJWxsdSBidXQgbmVl
ZGVkIHNvbWV0aGluZyBiaWdnZXIgdGhhbiAlbGxkIiwgaWQsIG1fbWF4T2JqZWN0U3RvcmVJZCk7
CisgICAgbV9tYXhPYmplY3RTdG9yZUlkID0gaWQ7CisKICAgICBSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3Jl
LCB0cmFuc2FjdGlvbiksCkBAIC0xOTksMTEgKzIwOSwxMyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosCiB7CiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkOwogCi0gICAgaWYgKCFkYXRhYmFzZS0+
bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwgb2Jq
ZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0
U3RvcmVJZCkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2Jq
ZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNl
LT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwgb2JqZWN0U3Rv
cmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0U3RvcmVJ
ZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
KyAgICBBU1NFUlQob2JqZWN0U3RvcmUtPmlkKCkgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJ
ZCB8fCBvYmplY3RTdG9yZS0+aWQoKSA9PSBvYmplY3RTdG9yZUlkKTsKICAgICBvYmplY3RTdG9y
ZS0+c2V0SWQob2JqZWN0U3RvcmVJZCk7CiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFz
a0V2ZW50cygpOwogfQpAQCAtNjA2LDE0ICs2MTgsMTYgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKCkKICAgICBWZWN0b3I8U3RyaW5nPiBuYW1lczsKICAg
ICBWZWN0b3I8SURCS2V5UGF0aD4ga2V5UGF0aHM7CiAgICAgVmVjdG9yPGJvb2w+IGF1dG9JbmNy
ZW1lbnRGbGFnczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1faWQsIGlk
cywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MpOworICAgIFZlY3RvcjxpbnQ2
NF90PiBtYXhJbmRleElkczsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1f
aWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MsIG1heEluZGV4SWRz
KTsKIAogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJU
KGtleVBhdGhzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoYXV0b0luY3JlbWVu
dEZsYWdzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1h
eEluZGV4SWRzLnNpemUoKSA9PSBpZHMuc2l6ZSgpLCAiRXhwZWN0ZWQgJWx1IG1heEluZGV4SWRz
LCBidXQgZ290ICVsdSIsIGlkcy5zaXplKCksIG1heEluZGV4SWRzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9vYmplY3RT
dG9yZXMuc2V0KG5hbWVzW2ldLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhp
cywgaWRzW2ldLCBuYW1lc1tpXSwga2V5UGF0aHNbaV0sIGF1dG9JbmNyZW1lbnRGbGFnc1tpXSkp
OworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0sIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBrZXlQYXRoc1tpXSwgYXV0
b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlRnJvbU1hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBwcnBPYmplY3RTdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCA3MzQyZTcwNTRiNTI1ZGY5OTI1MWI1ZGZkODNmZDI1YTM4YTMxYWE3
Li4xOTk0YjVmOWI1NDE4ODk3NzMxN2ZmYjQ5MDE1ZTZmNDIyYjMxYTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtOTgsNiArOTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKICAgICBpbnQ2NF90IG1faW50VmVyc2lvbjsK
KyAgICBpbnQ2NF90IG1fbWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUg
ZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJl
dHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggY2JjYjlhNTljNTU2YWMwNWNhNzZiNGNiNzg4MGJiMzlmZWMwMTI2OC4uZDhi
ODY5ZDU1YTIwYjlkYzM3NTViOTk2NjNhNzJjOGU5NjQwYmM0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKIAorICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIHN0YXRpYyBjb25zdCBpbnQ2
NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPSAtMTsKKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGlu
dDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBj
cmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBTdHJpbmcmIHZl
cnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCmluZGV4IGUzZDNl
MDQzZDI0OTA3YWIzMjQwOGU1Mzg1NGNmNzU2ZmFlMzAyZGEuLjdmMzJiOWNkMmZmZTE1M2U3ZWRi
MDJlMjZjZGE0YTZhYzViNDRiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBAIC01NCwyNCArNTQsMTMg
QEAgSURCSW5kZXhCYWNrZW5kSW1wbDo6SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwKIHsKIH0KIAotSURCSW5kZXhCYWNrZW5kSW1wbDo6
SURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFz
ZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnkpCi0gICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9vYmplY3RT
dG9yZUJhY2tlbmQob2JqZWN0U3RvcmVCYWNrZW5kKQotICAgICwgbV9pZChJbnZhbGlkSWQpCi0g
ICAgLCBtX25hbWUobmFtZSkKLSAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQotICAgICwgbV91bmlx
dWUodW5pcXVlKQotICAgICwgbV9tdWx0aUVudHJ5KG11bHRpRW50cnkpCi17Ci19Ci0KIElEQklu
ZGV4QmFja2VuZEltcGw6On5JREJJbmRleEJhY2tlbmRJbXBsKCkKIHsKIH0KIAogSURCSW5kZXhN
ZXRhZGF0YSBJREJJbmRleEJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIElEQkluZGV4TWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fdW5pcXVlLCBtX211bHRp
RW50cnkpOworICAgIHJldHVybiBJREJJbmRleE1ldGFkYXRhKG1fbmFtZSwgbV9pZCwgbV9rZXlQ
YXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJh
bmdlLCB1bnNpZ25lZCBzaG9ydCB1bnR5cGVkRGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmgKaW5kZXggMTczYzMyZDA4ZmYxNDMzYjk5OTBlNTA1MjI1MGNjODljYTZk
YThiOS4uOWZiZWMxNjk3ZTI3MWM3M2EwMmQ1NjE1Njc2YzYzY2U0ZDkxMGIwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZElt
cGwuaApAQCAtNDcsMTAgKzQ3LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJJbmRleEJhY2tlbmRJbXBsKGRhdGFiYXNlLCBvYmplY3RTdG9yZUJhY2tl
bmQsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKICAgICB9Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRh
dGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKiBv
YmplY3RTdG9yZUJhY2tlbmQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0U3Rv
cmVCYWNrZW5kLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpKTsKLSAgICB9CiAg
ICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kSW1wbCgpOwogCiAgICAgaW50NjRfdCBpZCgpIGNv
bnN0CkBAIC03Niw3ICs3Miw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJREJJbmRleEJh
Y2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7Ci0gICAgSURCSW5kZXhCYWNrZW5k
SW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpOwogCiAgICAgc3RhdGljIHZvaWQgb3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwogICAgIHN0YXRpYyB2
b2lkIGNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA1MGVkZmQ0NmNjMGMyYzk5MzRkYzVkNWM4OWQyZWM1YWQ3
ZWRiZGJhLi4wYmUwNjUyNmI4ZDVjNzEyYzAzN2FkNDYzZDQxMGM0Nzk5YjM5Mzg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcApAQCAtMTk0LDYgKzE5NCwyNCBAQCBzdGF0aWMgYm9vbCBzZXRVcE1l
dGFkYXRhKExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgIHJl
dHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgREJPclRyYW5zYWN0aW9uPgorc3Rh
dGljIGludDY0X3QgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9yVHJhbnNhY3Rpb24qIGRiLCBpbnQ2
NF90IGRhdGFiYXNlSWQpCit7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heE9iamVjdFN0b3Jl
SWRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6TWF4T2JqZWN0U3RvcmVJZCk7CisgICAgcmV0dXJuIGdldE1heE9iamVjdFN0
b3JlSWQoZGIsIG1heE9iamVjdFN0b3JlSWRLZXkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
REJPclRyYW5zYWN0aW9uPgorc3RhdGljIGludDY0X3QgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZWN0b3I8Y2hhcj4mIG1heE9iamVjdFN0b3JlSWRLZXkp
Cit7CisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkID0gLTE7CisgICAgaWYgKCFnZXRJbnQo
ZGIsIG1heE9iamVjdFN0b3JlSWRLZXksIG1heE9iamVjdFN0b3JlSWQpKQorICAgICAgICBtYXhP
YmplY3RTdG9yZUlkID0gMDsKKworICAgIEFTU0VSVChtYXhPYmplY3RTdG9yZUlkID49IDApOwor
ICAgIHJldHVybiBtYXhPYmplY3RTdG9yZUlkOworfQorCiBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpJREJMZXZlbERCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgSURCRmFj
dG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIp
CiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5
KQpAQCAtMjgyLDcgKzMwMCw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0
YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZl
cnNpb24sIGludDY0X3QmIGZvdW5kSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kU3Ry
aW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkLCBp
bnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkg
PSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwogCkBAIC0zMDAs
NiArMzE4LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmIChmb3VuZEludFZlcnNp
b24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pCiAgICAgICAgIGZv
dW5kSW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIAorICAg
IG1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhPYmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIGZvdW5k
SWQpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3NSw3ICszOTUsOCBAQCBib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICBpbnQ2NF90IGRhdGFiYXNlSWQ7CiAgICAgU3RyaW5nIHZlcnNpb247CiAgICAgaW50NjRf
dCBpbnRWZXJzaW9uOwotICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJz
aW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkKSkKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3Jl
SWQ7CisgICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGludFZl
cnNpb24sIGRhdGFiYXNlSWQsIG1heE9iamVjdFN0b3JlSWQpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsK
QEAgLTQwNSw3ICs0MjYsNyBAQCBzdGF0aWMgYm9vbCBjaGVja09iamVjdFN0b3JlQW5kTWV0YURh
dGFUeXBlKGNvbnN0IExldmVsREJJdGVyYXRvciogaXQsIGNvbnN0IFZlYwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJp
bmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rv
cjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpCit2b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90
PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0
aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3Ms
IFZlY3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElkcykKIHsKICAgICBJREJfVFJBQ0UoIklE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyIpOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCAxLCAwKTsKQEAgLTQxNSw2ICs0MzYsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90Pgog
ICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kS2V5UGF0
aHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQoZm91bmRNYXhJbmRleElkcy5pc0VtcHR5KCkpOwogCiAgICAgT3du
UHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGl0
LT5zZWVrKHN0YXJ0S2V5KTsKQEAgLTQ2OCw2ICs0OTAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2
NF90PgogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGludDY0X3QgbWF4SW5k
ZXhJZCA9IGRlY29kZUludChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7
CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBoYXMga2V5IHBhdGggKGlzIG5v
dCBudWxsKQogICAgICAgICBpZiAoY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5n
ZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6SGFz
S2V5UGF0aCkpIHsKQEAgLTQ5OCwzMSArNTIxLDMxIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+
CiAgICAgICAgIGZvdW5kTmFtZXMuYXBwZW5kKG9iamVjdFN0b3JlTmFtZSk7CiAgICAgICAgIGZv
dW5kS2V5UGF0aHMuYXBwZW5kKGtleVBhdGgpOwogICAgICAgICBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncy5hcHBlbmQoYXV0b0luY3JlbWVudCk7CisgICAgICAgIGZvdW5kTWF4SW5kZXhJZHMuYXBw
ZW5kKG1heEluZGV4SWQpOwogICAgIH0KIH0KIAotc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0
U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQpCitzdGF0aWMgYm9vbCBzZXRNYXhPYmplY3RTdG9yZUlkKExldmVsREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQog
ewotICAgIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCA9IC0xOwogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBtYXhPYmplY3RTdG9yZUlkS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok1heE9iamVjdFN0b3JlSWQpOwotICAgIGlm
ICghZ2V0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBtYXhPYmplY3RTdG9y
ZUlkKSkKLSAgICAgICAgbWF4T2JqZWN0U3RvcmVJZCA9IDA7Ci0KLSAgICBBU1NFUlQobWF4T2Jq
ZWN0U3RvcmVJZCA+PSAwKTsKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhP
YmplY3RTdG9yZUlkKHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5KTsKIAotICAgIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCA9IG1heE9iamVjdFN0b3JlSWQgKyAxOwotICAgIGlmICghcHV0
SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBvYmplY3RTdG9yZUlkKSkKLSAg
ICAgICAgcmV0dXJuIC0xOwotCi0gICAgcmV0dXJuIG9iamVjdFN0b3JlSWQ7CisgICAgaWYgKG9i
amVjdFN0b3JlSWQgPD0gbWF4T2JqZWN0U3RvcmVJZCkgeworICAgICAgICBMT0dfRVJST1IoIlBv
c3NpYmxlIGNvcnJ1cHRpb246IG5ldyBvYmplY3Qgc3RvcmUgaWQgaXMgdG9vIHNtYWxsLiIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBwdXRJbnQodHJhbnNhY3Rp
b24sIG1heE9iamVjdFN0b3JlSWRLZXksIG9iamVjdFN0b3JlSWQpOwogfQogCi1ib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2
NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCitib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQs
IGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlIik7CiAgICAgTGV2ZWxEQlRyYW5z
YWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0
aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAgaW50NjRfdCBvYmplY3RTdG9yZUlkID0gZ2V0TmV3
T2JqZWN0U3RvcmVJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQpOwotICAgIGlmIChv
YmplY3RTdG9yZUlkIDwgMCkKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1
bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgwODUKKyAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSAtMSkKKyAgICAgICAgb2JqZWN0
U3RvcmVJZCA9IGdldE1heE9iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkKSArIDE7CisKKyAgICBpZiAoIXNldE1heE9iamVjdFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0
aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6TmFtZSk7CkBAIC01ODksNiArNjEyLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmEKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3
aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05ODA4NQogICAgIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCA9IG9iamVj
dFN0b3JlSWQ7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkxOCw3ICs5NDIsNyBAQCB2b2lkIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSQogICAgIH0KIH0KIAotc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJ
ZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkKK3N0YXRpYyBpbnQ2NF90IGdldE1heEluZGV4SWQoTGV2ZWxE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpCiB7CiAgICAgaW50NjRfdCBtYXhJbmRleElkID0gLTE7CiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TWF4
SW5kZXhJZCk7CkBAIC05MjYsMjAgKzk1MCwzNyBAQCBzdGF0aWMgaW50NjRfdCBnZXROZXdJbmRl
eElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZAog
ICAgICAgICBtYXhJbmRleElkID0gTWluaW11bUluZGV4SWQ7CiAKICAgICBBU1NFUlQobWF4SW5k
ZXhJZCA+PSAwKTsKKyAgICByZXR1cm4gbWF4SW5kZXhJZDsKK30KIAotICAgIGludDY0X3QgaW5k
ZXhJZCA9IG1heEluZGV4SWQgKyAxOwotICAgIGlmICghcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhJ
bmRleElkS2V5LCBpbmRleElkKSkKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIGJvb2wgc2V0
TWF4SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQoreworICAgIGlu
dDY0X3QgbWF4SW5kZXhJZCA9IC0xOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRleElk
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOworICAgIGlmICghZ2V0
SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElkKSkKKyAgICAgICAgbWF4
SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOwogCi0gICAgcmV0dXJuIGluZGV4SWQ7CisgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gY2hyb21pdW0gcGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgaWYgKGluZGV4
SWQgPT0gLTEpCisgICAgICAgIGluZGV4SWQgPSBtYXhJbmRleElkICsgMTsKKworICAgIGlmIChp
bmRleElkIDw9IG1heEluZGV4SWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJQb3NzaWJsZSBjb3Jy
dXB0aW9uOiBuZXcgaW5kZXggaWQgaXMgdG9vIHNtYWxsLiIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtl
eSwgaW5kZXhJZCk7CiB9CiAKLWJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBp
bnQ2NF90JiBpbmRleElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlzVW5pcXVlLCBib29s
IGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgYXNzaWduZWRJbmRleElkKQogewogICAgIElEQl9UUkFD
RSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBMZXZlbERCVHJh
bnNhY3Rpb24qIGxldmVsREJUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uOjpsZXZlbERCVHJhbnNh
Y3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKLSAgICBpbmRleElkID0gZ2V0TmV3SW5kZXhJZChsZXZl
bERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpOwotICAgIGlmIChpbmRl
eElkIDwgMCkKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmlu
ZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgw
ODUKKyAgICBpZiAoaW5kZXhJZCA9PSAtMSkKKyAgICAgICAgaW5kZXhJZCA9IGdldE1heEluZGV4
SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSArIDE7CisK
KyAgICBpZiAoIXNldE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29u
c3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJh
c2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6TmFtZSk7CkBA
IC05NzEsNiArMTAxMiw5IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1
bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgwODUKKyAgICBhc3NpZ25lZEluZGV4SWQgPSBpbmRleElkOworCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCA3N2NiMDZlNzg1YWY4MDk4MDk3Yjll
OTJjODZmZTFmMmE3ZWRmNjY5Li5lZWEyM2QyOTRmMGU5NDA2NzUxODc3MjMzYTAyZWZkMzc2NGYx
MTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZl
bERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC00NSwxNCArNDUsMTQgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfklEQkxldmVsREJCYWNraW5nU3RvcmUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYg
Zm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50
NjRfdCYgZm91bmRJZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBi
b29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCYgcm93SWQpOwogICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKElEQkJhY2tpbmdTdG9yZTo6
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbik7CiAgICAg
dmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGlu
dDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3RvcjxJREJL
ZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRG
bGFncyk7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRP
YmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0X3Qg
ZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZv
dW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+
JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBmb3VuZE1heEluZGV4
SWRzKTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZp
ZXIoKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5n
U3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQktleSYpOwpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChJREJCYWNraW5nU3RvcmU6OlRyYW5z
YWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlUmVjb3JkQ2FsbGJhY2smKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4m
IGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+
JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxi
b29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRl
eChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUs
IGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBhc3NpZ25lZEluZGV4SWQpOwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAg
ICAgdmlydHVhbCBib29sIHB1dEluZGV4RGF0YUZvclJlY29yZChJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgT2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJNZXRhZGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRh
dGEuaAppbmRleCBiM2NiY2ExYjI2NDkwNjJhNGNjZjA3ODFiM2NmMWM4MDM0ZjlmNjA3Li4wOTZm
ODlhZmE5M2QxMWY5YjhiYjhmZWNiZTk3ZjkxZGMyMTU0MzBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKQEAgLTUyLDE2ICs1MiwyMCBAQCBz
dHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YSB7CiAgICAgICAgIDogaW50VmVyc2lvbihOb0ludFZl
cnNpb24pCiAgICAgewogICAgIH0KLSAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24pCisgICAg
SURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90IG1heE9iamVjdFN0
b3JlSWQpCiAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGlkKGlkKQogICAgICAgICAs
IHZlcnNpb24odmVyc2lvbikKICAgICAgICAgLCBpbnRWZXJzaW9uKGludFZlcnNpb24pCisgICAg
ICAgICwgbWF4T2JqZWN0U3RvcmVJZChtYXhPYmplY3RTdG9yZUlkKQogICAgIHsKICAgICB9CiAK
ICAgICBTdHJpbmcgbmFtZTsKKyAgICBpbnQ2NF90IGlkOwogICAgIFN0cmluZyB2ZXJzaW9uOwog
ICAgIGludDY0X3QgaW50VmVyc2lvbjsKKyAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiBPYmpl
Y3RTdG9yZU1hcDsKICAgICBPYmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7CkBAIC02OSwxMyAr
NzMsMTggQEAgc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewogCiBzdHJ1Y3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSB7CiAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSgpIHsgfQotICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCBtYXhJbmRleElkKQogICAgICAgICA6IG5h
bWUobmFtZSkKICAgICAgICAgLCBrZXlQYXRoKGtleVBhdGgpCi0gICAgICAgICwgYXV0b0luY3Jl
bWVudChhdXRvSW5jcmVtZW50KSB7IH0KKyAgICAgICAgLCBhdXRvSW5jcmVtZW50KGF1dG9JbmNy
ZW1lbnQpCisgICAgICAgICwgbWF4SW5kZXhJZChtYXhJbmRleElkKQorICAgIHsKKyAgICB9CiAg
ICAgU3RyaW5nIG5hbWU7CisgICAgaW50NjRfdCBpZDsKICAgICBJREJLZXlQYXRoIGtleVBhdGg7
CiAgICAgYm9vbCBhdXRvSW5jcmVtZW50OworICAgIGludDY0X3QgbWF4SW5kZXhJZDsKIAogICAg
IHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkluZGV4TWV0YWRhdGE+IEluZGV4TWFwOwogICAg
IEluZGV4TWFwIGluZGV4ZXM7CkBAIC04MywxMiArOTIsMTQgQEAgc3RydWN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgewogCiBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YSB7CiAgICAgSURCSW5kZXhN
ZXRhZGF0YSgpIHsgfQotICAgIElEQkluZGV4TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQor
ICAgIElEQkluZGV4TWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQogICAg
ICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBpZChpZCkKICAgICAgICAgLCBrZXlQYXRoKGtl
eVBhdGgpCiAgICAgICAgICwgdW5pcXVlKHVuaXF1ZSkKICAgICAgICAgLCBtdWx0aUVudHJ5KG11
bHRpRW50cnkpIHsgfQogICAgIFN0cmluZyBuYW1lOworICAgIGludDY0X3QgaWQ7CiAgICAgSURC
S2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgdW5pcXVlOwogICAgIGJvb2wgbXVsdGlFbnRyeTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCA0Y2JlNjNkMTE1ZTBhYTA0NGI2MGY5NGU1NGJmZWVhZGM5NGU3YmRjLi4yMTc3
ZjdlYTBkN2Q0YmI2ZGM0ZDBjYWQyN2VmM2FiZTI4ZWNlNjRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC00MDEsMTIg
KzQwMSwxNSBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5k
ZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKKyAgICBpbnQ2NF90IGluZGV4SWQgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZh
Y2U6OkF1dG9nZW5lcmF0ZUluZGV4SWQ7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXhCYWNrZW5kID0gbV9iYWNrZW5kLT5jcmVhdGVJbmRleChuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG11bHRpRW50cnksIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAg
IEFTU0VSVCghaW5kZXhCYWNrZW5kICE9ICFlYyk7IC8vIElmIHdlIGRpZG4ndCBnZXQgYW4gaW5k
ZXgsIHdlIHNob3VsZCBoYXZlIGdvdHRlbiBhbiBleGNlcHRpb24gY29kZS4gQW5kIHZpY2UgdmVy
c2EuCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIElEQkluZGV4TWV0YWRh
dGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKKyAgICArK21f
bWV0YWRhdGEubWF4SW5kZXhJZDsKKworICAgIElEQkluZGV4TWV0YWRhdGEgbWV0YWRhdGEobmFt
ZSwgaW5kZXhJZCwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKICAgICBSZWZQdHI8SURC
SW5kZXg+IGluZGV4ID0gSURCSW5kZXg6OmNyZWF0ZShtZXRhZGF0YSwgaW5kZXhCYWNrZW5kLnJl
bGVhc2UoKSwgdGhpcywgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9pbmRleE1hcC5zZXQo
bmFtZSwgaW5kZXgpOwogICAgIG1fbWV0YWRhdGEuaW5kZXhlcy5zZXQobmFtZSwgbWV0YWRhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCA3ODk5OTJhYjZlNWMzNGRmNDVjYjI5
YTY1NWQ2YzlhNjc1NTUyMWE1Li4yYWI5MWQ3MzNlZjJlNjUzN2NhMmQ0MTA2MGFlYmQ3ZWI4ZTc3
MzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNTEsMjggKzUxLDIxIEBAIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCkKIHsK
IH0KIAotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgaW50NjRfdCBpZCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNy
ZW1lbnQpCitJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgaW50NjRfdCBtYXhJbmRleElkKQogICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkK
ICAgICAsIG1faWQoaWQpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fa2V5UGF0aChrZXlQ
YXRoKQogICAgICwgbV9hdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpCisgICAgLCBtX21heElu
ZGV4SWQobWF4SW5kZXhJZCkKIHsKLSAgICBsb2FkSW5kZXhlcygpOwotfQotCi1JREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFi
YXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKLSAgICA6IG1fZGF0YWJhc2UoZGF0
YWJhc2UpCi0gICAgLCBtX2lkKEludmFsaWRJZCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwg
bV9rZXlQYXRoKGtleVBhdGgpCi0gICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkK
LXsKKyAgICBpZiAobV9pZCAhPSBBdXRvZ2VuZXJhdGVJbmRleElkKQorICAgICAgICBsb2FkSW5k
ZXhlcygpOwogfQogCiBJREJPYmplY3RTdG9yZU1ldGFkYXRhIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1l
dGFkYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX2F1dG9JbmNyZW1lbnQpOworICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBtX2tleVBhdGgsIG1fYXV0b0lu
Y3JlbWVudCwgbV9tYXhJbmRleElkKTsKICAgICBmb3IgKEluZGV4TWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1faW5kZXhlcy5iZWdpbigpOyBpdCAhPSBtX2luZGV4ZXMuZW5kKCk7ICsraXQpCiAg
ICAgICAgIG1ldGFkYXRhLmluZGV4ZXMuc2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRh
dGEoKSk7CiAgICAgcmV0dXJuIG1ldGFkYXRhOwpAQCAtNDM2LDEzICs0MjksMjEgQEAgdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHQKIAogUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKCFtX2luZGV4ZXMuY29udGFpbnMobmFtZSkpOwor
ICAgIHJldHVybiBjcmVhdGVJbmRleChBdXRvZ2VuZXJhdGVJbmRleElkLCBuYW1lLCBrZXlQYXRo
LCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKK1Bhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250YWlucyhuYW1lKSwgIkluZGV4
ZXMgYWxyZWFkeSBjb250YWluICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAotICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0
ZShtX2RhdGFiYXNlLCB0aGlzLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnkpOwor
ICAgIENPTVBJTEVfQVNTRVJUKEF1dG9nZW5lcmF0ZUluZGV4SWQgPT0gSURCQmFja2luZ1N0b3Jl
OjpBdXRvZ2VuZXJhdGVJbmRleElkLCBBdXRvZ2VuZXJhdGVJbmRleElkTWF0Y2hlcyk7CisgICAg
UmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5kZXhCYWNrZW5kSW1wbDo6
Y3JlYXRlKG1fZGF0YWJhc2UsIHRoaXMsIGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnkpOwogICAgIEFTU0VSVChpbmRleC0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9u
LT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKKyAgICBBU1NFUlQo
aWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCB8fCBpZCA+IG1fbWF4SW5kZXhJZCk7CisgICAgbV9t
YXhJbmRleElkID0gaWQ7CiAKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4g
b2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygK
QEAgLTQ1OSwxMSArNDYwLDEzIEBAIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNl
PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleChjb25zCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3Rv
cmUsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgaW50NjRfdCBpZDsK
LSAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSW5kZXgodHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5kYXRhYmFzZUlk
KCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBp
bmRleC0+dW5pcXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCksIGlkKSkgeworICAgIGlmICghb2Jq
ZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgb2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3Rv
cmUtPmlkKCksIGluZGV4LT5pZCgpLCBpbmRleC0+bmFtZSgpLCBpbmRleC0+a2V5UGF0aCgpLCBp
bmRleC0+dW5pcXVlKCksIGluZGV4LT5tdWx0aUVudHJ5KCksIGlkKSkgewogICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIGNocm9taXVtIHBsdW1iaW5nIGhhcyBsYW5kZWQ6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIEFTU0VSVChpbmRleC0+
aWQoKSA9PSBBdXRvZ2VuZXJhdGVJbmRleElkIHx8IGluZGV4LT5pZCgpID09IGlkKTsKICAgICBp
bmRleC0+c2V0SWQoaWQpOwogCiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCmluZGV4IGJkOTViYmViZTJmN2UyYTJiZDI5MzEy
MGJmZjgxMjdlMGNiYjJmZTcuLmEyNDY0ZjY2MjhlMTM2ZWNhNWYwODk1MzJmMTQ2OGVjMDgxZDg2
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgKQEAgLTQ3LDEzICs0Nyw5IEBAIHN0cnVjdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
IDogcHVibGljIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0
IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUo
Y29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBpbnQ2NF90IG1heEluZGV4SWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQYXRo
LCBhdXRvSW5jcmVtZW50KSk7Ci0gICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBk
YXRhYmFzZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBi
b29sIGF1dG9JbmNyZW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwoZGF0YWJhc2UsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKGRhdGFiYXNlLCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbWF4SW5k
ZXhJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCk7
CiAKQEAgLTczLDcgKzY5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIHdoZW4gY2hyb21pdW0gcGx1bWJpbmcgaGFzIGxhbmRlZDogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+
JiAsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTk2
LDggKzk0LDcgQEAgcHVibGljOgogICAgIGludDY0X3QgZGF0YWJhc2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YWJhc2UtPmlkKCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQp
OwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5l
cmF0ZUtleShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyMiw2
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgSURCS2V5UGF0aCBt
X2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAgaW50NjRfdCBtX21heElu
ZGV4SWQ7CiAKICAgICBJbmRleE1hcCBtX2luZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCAwMTc5YjZhODhhZjYyNmFkYjJlY2M0YWIyMDQxMGFkMGNhM2Zh
ZjJmLi4wMjdjZWQ2MzBiYjhhNmVkN2IxZjRjNGNiYTExNjI1N2E1NDllMzkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTYsNiArNTYsMTEgQEAgcHVibGljOgogICAg
ICAgICBBZGRPbmx5LAogICAgICAgICBDdXJzb3JVcGRhdGUKICAgICB9OworCisgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgTWluaW11bUluZGV4SWQgPSAzMDsKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBoYXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBB
dXRvZ2VuZXJhdGVJbmRleElkID0gLTE7CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SURC
S2V5PiA+IEluZGV4S2V5czsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoSW5kZXhLZXlzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQdXRN
b2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSosIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBF
eGNlcHRpb25Db2RlJikgPSAwOwpAQCAtNjMsNiArNjgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBjaHJvbWl1bSBwbHVtYmluZyBo
YXMgbGFuZGVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwg
Ym9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJ
REJLZXk+IHBycFByaW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PEluZGV4S2V5cz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCmluZGV4IDgzYjlhNDI1Zjg0N2ZhOWQ4ODE3Mzdj
MzA5ZWE4YTI4MmFiNGVmMjkuLjE2Y2ZiZDg1ZGI0NjEzYjRkZjNmZmQ4Y2ZhYWFmMTQ2OTBmY2U0
YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2Uu
aApAQCAtNTUsNiArNTUsMTEgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQk9i
amVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYs
IGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9i
amVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJz
aGlwIG9mIHRoZSBXZWJJREJUcmFuc2FjdGlvbiB0byB0aGUgY2FsbGVyLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKaW5kZXggMWYyZTllYWQ0NWYy
MjNhNjlhNjYwY2M3Y2M2Nzg0MTAwMmYxZmY2ZS4uOTU3ZTA4MmJiMGZiMjYyOTdlNDVkNWQ4ZmY3
OGZhODc0ZjBmZDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJNZXRhZGF0YS5oCkBAIC01MCw2ICs1MCw4IEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAg
ICAgLy8gc2V0VmVyc2lvbiwgV2ViU3RyaW5nIHZlcnNpb24gY2FuIGJlIHJlbW92ZWQuCiAgICAg
V2ViU3RyaW5nIHZlcnNpb247CiAgICAgbG9uZyBsb25nIGludFZlcnNpb247CisgICAgbG9uZyBs
b25nIGlkOworICAgIGxvbmcgbG9uZyBtYXhPYmplY3RTdG9yZUlkOwogICAgIFdlYlZlY3RvcjxP
YmplY3RTdG9yZT4gb2JqZWN0U3RvcmVzOwogICAgIFdlYklEQk1ldGFkYXRhKCkKICAgICAgICAg
OiBpbnRWZXJzaW9uKE5vSW50VmVyc2lvbikgeyB9CkBAIC01OCw2ICs2MCw4IEBAIHN0cnVjdCBX
ZWJJREJNZXRhZGF0YSB7CiAgICAgICAgIFdlYlN0cmluZyBuYW1lOwogICAgICAgICBXZWJJREJL
ZXlQYXRoIGtleVBhdGg7CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICAgICAgbG9u
ZyBsb25nIGlkOworICAgICAgICBsb25nIGxvbmcgbWF4SW5kZXhJZDsKICAgICAgICAgV2ViVmVj
dG9yPEluZGV4PiBpbmRleGVzOwogICAgICAgICBPYmplY3RTdG9yZSgpCiAgICAgICAgICAgICA6
IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6Y3JlYXRlTnVsbCgpKQpAQCAtNjksNiArNzMsNyBAQCBz
dHJ1Y3QgV2ViSURCTWV0YWRhdGEgewogICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CiAg
ICAgICAgIGJvb2wgdW5pcXVlOwogICAgICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIGxv
bmcgbG9uZyBpZDsKICAgICAgICAgSW5kZXgoKQogICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklE
QktleVBhdGg6OmNyZWF0ZU51bGwoKSkKICAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5k
ZXggYTJiODdkYTgxNjFlODgzZjA0NDI5YjdlMjMwMjVlMWFiMjA4YzdjMS4uY2EwMTAzY2RhNmZj
M2YzNzJjYWRjYWFiN2NkNmNlMzA1YTIyN2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCkBAIC02Myw2ICs2MywxMSBAQCBwdWJs
aWM6CiAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQorICAgIHZpcnR1YWwgV2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9u
ZywgY29uc3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdl
YlZlY3RvcjxXZWJTdHJpbmc+JiwgY29uc3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5n
PiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH07CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8g
dGhlIGNhbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmNwcAppbmRleCA1MDFjZTYxZmI1OTU2MjY2YjBjM2JmMWI0YzAy
YWVmNmNkYTAwODA2Li44YjFmYmM0MDVjYWExOTA5MGVjMDMwMDQ4Mjg1NzQ2NGMwZjRjNDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHkuY3BwCkBAIC02Niw2ICs2NiwxNyBAQCBJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRh
dGFiYXNlQmFja2VuZFByb3h5OjptZXRhZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURC
RGF0YWJhc2UtPm1ldGFkYXRhKCk7CiB9CiAKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRo
LCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBw
b2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFz
LCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50
ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5Kj4odHJhbnNhY3Rpb24pOworICAgIE93blB0cjxXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0
U3RvcmUgPSBhZG9wdFB0cihtX3dlYklEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShpZCwg
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklE
QlRyYW5zYWN0aW9uKCksIGVjKSk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2Jq
ZWN0U3RvcmUucmVsZWFzZSgpKTsKK30KKwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0lu
Y3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDc5NTYxMGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2
NTAuLmVhNjkzYWRhMTdlM2E1MWVjYjE5YTA5ZGEzNDZiN2RjMWZjYTEwNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApA
QCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlz
dCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0
U3RvcmVCYWNrZW5kUHJveHkuY3BwCmluZGV4IGI1M2ViMmMzYTQ2ODZlNmQzYWU0MjZkYTMxNGIy
Njc1YTIyZjIwZjAuLjJiOWI0NGE3YTFmZmNkZDgwMjA3NWVhMGQzOGU2YjdjMDcxNzQ4YTUgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEwMyw2ICsxMDMsMTcgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eTo6Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
SURCVHIKICAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5jbGVhcihuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSwgZWMpOwogfQogCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3Vh
cmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5k
ZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBw
cm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlv
blByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2Fj
dGlvbik7CisgICAgT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCA9IGFkb3B0UHRyKG1fd2ViSURC
T2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOwor
ICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJJbmRleEJh
Y2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4LnJlbGVhc2UoKSk7Cit9CisKIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rp
b24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVj
dCBhcywgaW4gdGhlIHJlbmRlcmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKaW5kZXggNzRjYjBiZDU3MDNiNjE1
MjVkYTVmZDVjNDgyZTVlNmVhNDQ4Y2RiMS4uODQ3MGMxYWQ5MDViYzE1NmZkOWYzYjhmYzE0ZWZm
MWU0MTFlOGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlS
YW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAg
IHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YkNvcmU6OklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
Jik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5
LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxJbmRl
eEtleXM+JiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAg
dmlydHVhbCB2b2lkIHNldEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKaW5kZXggYjU4Y2Q1MTExNzc2
ODg0Zjk1NjAxZTllZTc5ZTBkODI4OTNjNjJkMC4uYWVmZWIwZmFmNmMxYjNkNGM2MTJmNzU2MjZi
ZTkxZDIyOTViZmY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJEYXRhYmFzZUltcGwuY3BwCkBAIC02MCw2ICs2MCwxNiBAQCBXZWJJREJNZXRhZGF0YSBXZWJJ
REJEYXRhYmFzZUltcGw6Om1ldGFkYXRhKCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhYmFzZUJh
Y2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAKK1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFz
ZUltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3Rv
cmUgPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUoaWQsIG5hbWUsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSgpLCBlYyk7CisgICAgaWYgKCFvYmplY3RTdG9yZSkgeworICAgICAgICBBU1NFUlQo
ZWMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmpl
Y3RTdG9yZUltcGwob2JqZWN0U3RvcmUpOworfQorCiBXZWJJREJPYmplY3RTdG9yZSogV2ViSURC
RGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2Vi
SURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1f
ZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVPYmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5j
cmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJh
c2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwu
aAppbmRleCA1MThmZmNkYjk3OTgwMDVlNGM4OGMwNzg4ZTA0ZWFlNTNmNzZjOGM3Li44NDk5Njlj
YjRiYTI4ZjA1OGE1MTUyZjkzODg5MjNmYWFmMWNhYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJJREJNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogCiAgICAg
dmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFdl
YklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24o
Y29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgbmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk1ldGFkYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFk
YXRhLmNwcAppbmRleCBiNDRhOWU5ZjhiOTczZmRhZTI4NzAxYzNlZTcxYzY4MWI3MzE0NmFlLi5i
OGUzZGIzYTQwMTdmYTc1MzBmOTI2ZDBmZmNkOGQyZTFlODJkNzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCTWV0YWRhdGEuY3BwCkBAIC00Myw2ICs0Myw3IEBAIFdl
YklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1l
dGFkYXRhJiBtZXRhZGF0YSkKICAgICB2ZXJzaW9uID0gbWV0YWRhdGEudmVyc2lvbjsKICAgICBp
bnRWZXJzaW9uID0gbWV0YWRhdGEuaW50VmVyc2lvbjsKICAgICBvYmplY3RTdG9yZXMgPSBXZWJW
ZWN0b3I8T2JqZWN0U3RvcmU+KHN0YXRpY19jYXN0PHNpemVfdD4obWV0YWRhdGEub2JqZWN0U3Rv
cmVzLnNpemUoKSkpOworICAgIG1heE9iamVjdFN0b3JlSWQgPSBtZXRhZGF0YS5tYXhPYmplY3RT
dG9yZUlkOwogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0
YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIHN0b3JlSXRlcmF0b3IgPSBtZXRhZGF0
YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsgc3RvcmVJdGVyYXRvciAhPSBtZXRhZGF0YS5vYmplY3RT
dG9yZXMuZW5kKCk7ICsrc3RvcmVJdGVyYXRvcikgewpAQCAtNTIsNiArNTMsNyBAQCBXZWJJREJN
ZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0
YSYgbWV0YWRhdGEpCiAgICAgICAgIHdlYk9iamVjdFN0b3JlLmtleVBhdGggPSBvYmplY3RTdG9y
ZS5rZXlQYXRoOwogICAgICAgICB3ZWJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50ID0gb2JqZWN0
U3RvcmUuYXV0b0luY3JlbWVudDsKICAgICAgICAgd2ViT2JqZWN0U3RvcmUuaW5kZXhlcyA9IFdl
YlZlY3RvcjxJbmRleD4oc3RhdGljX2Nhc3Q8c2l6ZV90PihvYmplY3RTdG9yZS5pbmRleGVzLnNp
emUoKSkpOworICAgICAgICB3ZWJPYmplY3RTdG9yZS5tYXhJbmRleElkID0gb2JqZWN0U3RvcmUu
bWF4SW5kZXhJZDsKIAogICAgICAgICBzaXplX3QgaiA9IDA7CiAgICAgICAgIGZvciAoSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGluZGV4SXRlcmF0b3Ig
PSBvYmplY3RTdG9yZS5pbmRleGVzLmJlZ2luKCk7IGluZGV4SXRlcmF0b3IgIT0gb2JqZWN0U3Rv
cmUuaW5kZXhlcy5lbmQoKTsgKytpbmRleEl0ZXJhdG9yKSB7CkBAIC02OSwxNCArNzEsMTQgQEAg
V2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNl
TWV0YWRhdGEmIG1ldGFkYXRhKQogCiBXZWJJREJNZXRhZGF0YTo6b3BlcmF0b3IgSURCRGF0YWJh
c2VNZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0YSBkYihuYW1lLCB2
ZXJzaW9uLCBpbnRWZXJzaW9uKTsKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIGRiKG5hbWUsIGlk
LCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBtYXhPYmplY3RTdG9yZUlkKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFN0b3Jlcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBP
YmplY3RTdG9yZSB3ZWJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3Jlc1tpXTsKLSAgICAgICAgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSh3ZWJPYmplY3RTdG9yZS5uYW1lLCB3ZWJP
YmplY3RTdG9yZS5rZXlQYXRoLCB3ZWJPYmplY3RTdG9yZS5hdXRvSW5jcmVtZW50KTsKKyAgICAg
ICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmplY3RTdG9yZSh3ZWJPYmplY3RTdG9yZS5uYW1l
LCB3ZWJPYmplY3RTdG9yZS5pZCwgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCwgd2ViT2JqZWN0U3Rv
cmUuYXV0b0luY3JlbWVudCwgd2ViT2JqZWN0U3RvcmUubWF4SW5kZXhJZCk7CiAKICAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCB3ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKTsgKytq
KSB7CiAgICAgICAgICAgICBjb25zdCBJbmRleCB3ZWJJbmRleCA9IHdlYk9iamVjdFN0b3JlLmlu
ZGV4ZXNbal07Ci0gICAgICAgICAgICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdlYkluZGV4Lm5h
bWUsIHdlYkluZGV4LmtleVBhdGgsIHdlYkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgubXVsdGlFbnRy
eSk7CisgICAgICAgICAgICBJREJJbmRleE1ldGFkYXRhIGluZGV4KHdlYkluZGV4Lm5hbWUsIHdl
YkluZGV4LmlkLCB3ZWJJbmRleC5rZXlQYXRoLCB3ZWJJbmRleC51bmlxdWUsIHdlYkluZGV4Lm11
bHRpRW50cnkpOwogICAgICAgICAgICAgb2JqZWN0U3RvcmUuaW5kZXhlcy5zZXQoaW5kZXgubmFt
ZSwgaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIGRiLm9iamVjdFN0b3Jlcy5zZXQob2JqZWN0
U3RvcmUubmFtZSwgb2JqZWN0U3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggZjVkZDkxM2M5NDg1Mjc4YjQ2
NjhiZDI3MzQ2MTJmOGFlZDIxNzU5YS4uMTk4YTI4Nzg4NmEyNjhkZTgyNDRiYjQ3OTM2Zjg3YWYw
ZTEwYjY2ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuY3BwCkBAIC0xMTcsNiArMTE3LDE0IEBAIFdlYklEQkluZGV4KiBXZWJJ
REJPYmplY3RTdG9yZUltcGw6OmNyZWF0ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViCiAgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOwogfQogCitXZWJJ
REJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleChsb25nIGxvbmcgaWQs
IGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNr
ZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KGlkLCBuYW1l
LCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJJREJJbmRleEltcGwoaW5kZXgpOworfQorCiBXZWJJ
REJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IGluZGV4ID0gbV9vYmplY3RTdG9yZS0+aW5kZXgobmFtZSwgZWMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRl
eCAwNDAyMGU1NThmNDRkNDFkYmY2OTk0MmUzNmVlNjBiNTg3NDRlODIzLi45MDI2NDFhMDE5NGY3
ODczOTE0MTY0YjAyNmY0MGRiOWE0NTYwODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGVhcihXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRl
eChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1
ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgobG9uZyBsb25nLCBjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBXZWJJREJJbmRleCogaW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167007</attachid>
            <date>2012-10-03 17:39:07 -0700</date>
            <delta_ts>2012-10-04 12:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97834-20121003173818.patch</filename>
            <type>text/plain</type>
            <size>65231</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzcxYzBhYmQ4Nzg2Mzcx
YjUyYWVhYWIzOWVmODZkYjI2NWRiYjQzMC4uYTEzZjdmMGRlNWUwNDc4Yzg1MDQ2ZmRhZDI4OGRm
ODQ0MzVhZTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTEwLTAzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8gdGhlIGZyb250ZW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBpbnQ2NC1i
YXNlZCBkYXRhYmFzZS9vYmplY3RTdG9yZS9pbmRleCBpZHMgdG8gdGhlIHJlbmRlcmVyLAorICAg
ICAgICBzdGVwIDEgb2YgMi4gU3VwcG9ydCBib3RoIHN0eWxlcyBvZiBjcmVhdGVPYmplY3RTdG9y
ZSBhbmQKKyAgICAgICAgY3JlYXRlSW5kZXg6IHRob3NlIHRoYXQgdGFrZSBhbiBleHBsaWNpdCBp
ZCwgYW5kIHRob3NlIHRoYXQgdGFrZQorICAgICAgICAtMSwgbWVhbmluZyB0byBhdXRvZ2VuZXJh
dGUgYW4gaWQgb24gdGhlIGJhY2tlbmQuIEluIHBhcnQgMiwgYWZ0ZXIKKyAgICAgICAgdGhlIGNo
cm9taXVtIHNpZGUgbGFuZHMsIHN1cHBvcnQgZm9yIHRoZSBhdXRvZ2VuZXJhdGVkIGlkcyB3aWxs
IGJlCisgICAgICAgIHJlbW92ZWQuIChTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MDg1KQorCisgICAgICAgIFRoaXMgaXMgYSBwYXJ0IG9mIGxhcmdlciByZWZh
Y3RvcmluZyB3b3JrIHRvIHVsdGltYXRlbHkgbWFrZSB0aGUgaW50ZXJmYWNlCisgICAgICAgIGJl
dHdlZW4gdGhlIGZyb250ZW5kIGFuZCB0aGUgYmFja2VuZCBzaW1wbGVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgZXh0ZW5zaXZlIEFTU0VSVHMgYW5kIGV4aXN0aW5nIHRlc3RzIGNvdmVyIGNv
cnJlY3RuZXNzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9i
amVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhPYmplY3RTdG9yZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1heEluZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4
SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6Cisg
ICAgICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAx
Mi0xMC0wMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBCdWlsZCBmaXggZm9yIFdpbkNFIGFmdGVyIHIxMzAxNjAuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IGNiNTlkNWIxMWFhZWY1OWIyM2U2MjdiYmVhZThiODI0NThjNzFkZDUuLjI1MDMx
Y2ViMGFlZWJiNjg0MGI2YjgxMWIzOTFkM2I5YmU3YTAyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMTAtMDMgIEFsZWMgRmxldHQgIDxhbGVjZmxl
dHRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogcHJvbW90ZSBvYmplY3RzdG9y
ZS9pbmRleCBiYWNrZW5kIGlkcyB0byB0aGUgZnJvbnRlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VwcG9ydCBmb3IgbWFyc2hhbGxpbmcgYWRkaXRp
b25hbCBJREJNZXRhZGF0YSBhbmQgbmV3IGNhbGxzIHRvCisgICAgICAgIGNyZWF0ZU9iamVjdFN0
b3JlL2NyZWF0ZUluZGV4LgorCisgICAgICAgICogcHVibGljL1dlYklEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAg
ICAgICogcHVibGljL1dlYklEQk1ldGFkYXRhLmg6CisgICAgICAgIChPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChJbmRleCk6CisgICAgICAgICogcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5Lmg6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgIChX
ZWJJREJEYXRhYmFzZUltcGwpOgorICAgICAgICAqIHNyYy9XZWJJREJNZXRhZGF0YS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRhZGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQk1ldGFkYXRhOjpvcGVyYXRvciBJREJEYXRhYmFzZU1ldGFkYXRhKToK
KyAgICAgICAgKiBzcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDoKKyAgICAgICAgKFdlYklE
Qk9iamVjdFN0b3JlSW1wbCk6CisKIDIwMTItMTAtMDMgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9t
bXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBSVENQZWVyQ29ubmVj
dGlvbiBzaG91bGQgc2VuZCBkb3duIGl0cyBoYW5kbGVyIHZpYSB0aGUgRnJhbWVMb2FkZXJDbGll
bnQgZGlyZWN0bHkgYWZ0ZXIgY3JlYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDExYjUxMWZjMzkwZmU2MDU4M2Yx
ZTlhYjk0ZjA4ZTQxZTdiNTU3MTYuLjBhNzRlNzQ5MDI3NjU3NjdlNGRiNDMxNGVmMDc4N2FlMjg3
NjBmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJh
Y2tpbmdTdG9yZS5oCkBAIC00NiwxNyArNDYsMjEgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
VHJhbnNhY3Rpb247CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIHdoZW4gc3dpdGNoIHRv
IGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBBdXRv
Z2VuZXJhdGVJbmRleElkID0gLTE7CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVy
YXRlT2JqZWN0U3RvcmVJZCA9IC0xOworCiAgICAgdmlydHVhbCB+SURCQmFja2luZ1N0b3JlKCkg
e307CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3Qm
IGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3Vu
ZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
ZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBz
dHJpbmdWZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihUcmFuc2FjdGlvbios
IGludDY0X3Qgcm93SWQsIGludDY0X3QgaW50VmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCB1cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVj
dFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0
aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3Jl
bWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlkKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYg
Zm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4m
IGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZl
Y3RvcjxpbnQ2NF90PiYgZm91bmRNYXhJbmRleElkcykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
cmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBjbGFzcyBPYmpl
Y3RTdG9yZVJlY29yZElkZW50aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXI+IHsKQEAgLTgyLDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8
U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBW
ZWN0b3I8Ym9vbD4mIGZvdW5kVW5pcXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVu
dHJ5RmxhZ3MpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoVHJhbnNhY3Rpb24q
LCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50
cnksIGludDY0X3QmIGluZGV4SWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBi
b29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgYXNzaWduZWRJbmRleElk
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
LCBjb25zdCBJREJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4RGF0YUZvclJlY29yZChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4
SWQsIGNvbnN0IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA0M2UwYmRl
ZWVlODNjODA3ZGU5NmUyNGI2NzI4NGRlODc3YTViMjExLi5kOTcyYzJkYmQyNTY1YzM1OWFhMDYw
MWQxNmZmMzI0OWY0MzQ3M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xNjcsOSArMTY3LDExIEBAIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEgbWV0YWRhdGEobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgaW50
NjRfdCBvYmplY3RTdG9yZUlkID0gSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpBdXRvZ2Vu
ZXJhdGVPYmplY3RTdG9yZUlkOworICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEo
bmFtZSwgb2JqZWN0U3RvcmVJZCwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlOjpNaW5pbXVtSW5kZXhJZCk7CiAgICAgUmVmUHRyPElEQk9iamVj
dFN0b3JlPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlOjpjcmVhdGUobWV0YWRhdGEsIG9i
amVjdFN0b3JlQmFja2VuZC5yZWxlYXNlKCksIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLmdl
dCgpKTsKICAgICBtX21ldGFkYXRhLm9iamVjdFN0b3Jlcy5zZXQobmFtZSwgbWV0YWRhdGEpOwor
ICAgICsrbV9tZXRhZGF0YS5tYXhPYmplY3RTdG9yZUlkOwogCiAgICAgbV92ZXJzaW9uQ2hhbmdl
VHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlQ3JlYXRlZChuYW1lLCBvYmplY3RTdG9yZSk7CiAgICAg
cmV0dXJuIG9iamVjdFN0b3JlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
NDQ2NmM1Y2Q2NjQwNmFlOTVjODVlZWM5NDM2MmE0NzZmYTAxNzlkOC4uMzY1MzU1Njk0ZGNiZWFm
MGI3MDllZTRlODgzZGI0ODUyY2UwMDg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEz
Nyw2ICsxMzcsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgLCBtX3ZlcnNpb24oTm9TdHJpbmdWZXJzaW9uKQogICAgICwgbV9pbnRWZXJzaW9uKElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKKyAgICAsIG1fbWF4T2JqZWN0U3RvcmVJ
ZChJbnZhbGlkSWQpCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAs
IG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSgpKQpAQCAtMTQ3LDcgKzE0OCw3IEBAIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBu
YW1lLCBJREJCYWNraW5nU3RvCiAKIGJvb2wgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3Blbklu
dGVybmFsKCkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0
YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lkKTsKKyAg
ICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0SURCRGF0YWJhc2VNZXRhRGF0YSht
X25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lkLCBtX21heE9iamVjdFN0b3JlSWQp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc3VjY2VzcyA9PSAobV9pZCAhPSBJbnZhbGlkSWQp
LCAic3VjY2VzcyA9ICVzLCBtX2lkID0gJWxsZCIsIHN1Y2Nlc3MgPyAidHJ1ZSIgOiAiZmFsc2Ui
LCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1faWQpKTsKICAgICBpZiAoc3VjY2VzcykgewogICAg
ICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CkBAIC0xNjcsNyArMTY4LDcgQEAgUGFzc1JlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNv
bnN0CiAKIElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRh
dGEoKSBjb25zdAogewotICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBt
X3ZlcnNpb24sIG1faW50VmVyc2lvbik7CisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0
YShtX25hbWUsIG1faWQsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX21heE9iamVjdFN0b3Jl
SWQpOwogICAgIGZvciAoT2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vYmpl
Y3RTdG9yZXMuYmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCiAgICAg
ICAgIG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5zZXQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLT5tZXRh
ZGF0YSgpKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CkBAIC0xNzUsMTQgKzE3NiwyNCBAQCBJREJE
YXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QK
IAogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
SURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICByZXR1cm4gY3JlYXRlT2JqZWN0U3RvcmUoQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCwgbmFt
ZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb25QdHIsIGVjKTsKK30KKworUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKICAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKG5hbWUpKTsKIAotICAgIFJl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50
KTsKKyAgICBDT01QSUxFX0FTU0VSVChBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkID09IElEQkJh
Y2tpbmdTdG9yZTo6QXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCwgQXV0b2dlbmVyYXRlT2JqZWN0
U3RvcmVJZE1hdGNoZXMpOworICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBv
YmplY3RTdG9yZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZCwg
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlOjpNaW5pbXVtSW5kZXhJZCk7CiAgICAgQVNTRVJUKG9iamVjdFN0b3JlLT5uYW1lKCkgPT0g
bmFtZSk7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rp
b24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAg
ICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9D
SEFOR0UpOwogCisgICAgLy8gRklYTUU6IEZpeCBlZGdlIGNhc2VzIGFyb3VuZCB0cmFuc2FjdGlv
biBhYm9ydHMgdGhhdCBwcmV2ZW50IHRoaXMgZnJvbSBqdXN0IGJlaW5nIEFTU0VSVChpZCA9PSBt
X21heE9iamVjdFN0b3JlSWQgKyAxKQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaWQgPT0gQXV0
b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBpZCA+IG1fbWF4T2JqZWN0U3RvcmVJZCwgImNyZWF0
ZU9iamVjdFN0b3JlIHdpdGggJWxsdSBidXQgbmVlZGVkIHNvbWV0aGluZyBiaWdnZXIgdGhhbiAl
bGxkIiwgaWQsIG1fbWF4T2JqZWN0U3RvcmVJZCk7CisgICAgbV9tYXhPYmplY3RTdG9yZUlkID0g
aWQ7CisKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlz
OwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJ
bnRlcm5hbCwgZGF0YWJhc2UsIG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksCkBAIC0xOTksMTEg
KzIxMCwxMyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCiB7CiAgICAgaW50NjRfdCBvYmplY3RT
dG9yZUlkOwogCi0gICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+
aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUoKSwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0
U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0U3RvcmVJZCkpIHsKKyAgICBpZiAoIWRhdGFi
YXNlLT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwg
b2JqZWN0U3RvcmUtPm5hbWUoKSwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUt
PmF1dG9JbmNyZW1lbnQoKSwgb2JqZWN0U3RvcmVJZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24t
PmFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIEFTU0VS
VChvYmplY3RTdG9yZS0+aWQoKSA9PSBBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkIHx8IG9iamVj
dFN0b3JlLT5pZCgpID09IG9iamVjdFN0b3JlSWQpOwogICAgIG9iamVjdFN0b3JlLT5zZXRJZChv
YmplY3RTdG9yZUlkKTsKICAgICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7
CiB9CkBAIC02MDYsMTQgKzYxOSwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Omxv
YWRPYmplY3RTdG9yZXMoKQogICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIFZlY3RvcjxJ
REJLZXlQYXRoPiBrZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdz
OwotICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywg
a2V5UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncyk7CisgICAgVmVjdG9yPGludDY0X3Q+IG1heElu
ZGV4SWRzOworICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBu
YW1lcywga2V5UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncywgbWF4SW5kZXhJZHMpOwogCiAgICAg
QVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoa2V5UGF0aHMu
c2l6ZSgpID09IGlkcy5zaXplKCkpOwogICAgIEFTU0VSVChhdXRvSW5jcmVtZW50RmxhZ3Muc2l6
ZSgpID09IGlkcy5zaXplKCkpOworICAgIEFTU0VSVChtYXhJbmRleElkcy5zaXplKCkgPT0gaWRz
LnNpemUoKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykK
LSAgICAgICAgbV9vYmplY3RTdG9yZXMuc2V0KG5hbWVzW2ldLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpjcmVhdGUodGhpcywgaWRzW2ldLCBuYW1lc1tpXSwga2V5UGF0aHNbaV0sIGF1dG9J
bmNyZW1lbnRGbGFnc1tpXSkpOworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0s
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ld
LCBrZXlQYXRoc1tpXSwgYXV0b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlRnJvbU1h
cChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsPiBkYXRhYmFzZSwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBwcnBP
YmplY3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA3MzQyZTcwNTRiNTI1ZGY5OTI1MWI1
ZGZkODNmZDI1YTM4YTMxYWE3Li4xOTk0YjVmOWI1NDE4ODk3NzMxN2ZmYjQ5MDE1ZTZmNDIyYjMx
YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAv
LyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0
YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2
NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gdHJhbnNhY3Rpb24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5z
aWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtOTgsNiArOTksNyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKICAgICBpbnQ2
NF90IG1faW50VmVyc2lvbjsKKyAgICBpbnQ2NF90IG1fbWF4T2JqZWN0U3RvcmVJZDsKIAogICAg
IFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBh
IFJlZlB0ciBzaW5jZSB0aGUgZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2Ug
Z3JvdXAsIGJ1dCBpdCdzIGJldHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggY2JjYjlhNTljNTU2YWMwNWNhNzZiNGNiNzg4
MGJiMzlmZWMwMTI2OC4uYTMyYTk2YmNhMDU4YjBlODJmOTA3NWM1MzQxZDVkYzM5ODcwMjYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsK
IAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQg
bWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MDg1CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlT2JqZWN0
U3RvcmVJZCA9IC0xOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRl
T2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCBlM2QzZTA0M2Qy
NDkwN2FiMzI0MDhlNTM4NTRjZjc1NmZhZTMwMmRhLi43ZjMyYjljZDJmZmUxNTNlN2VkYjAyZTI2
Y2RhNGE2YWM1YjQ0YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtNTQsMjQgKzU0LDEzIEBAIElE
QkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCogZGF0YWJhc2UsCiB7CiB9CiAKLUlEQkluZGV4QmFja2VuZEltcGw6OklEQklu
ZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5KQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKLSAgICAsIG1fb2JqZWN0U3RvcmVC
YWNrZW5kKG9iamVjdFN0b3JlQmFja2VuZCkKLSAgICAsIG1faWQoSW52YWxpZElkKQotICAgICwg
bV9uYW1lKG5hbWUpCi0gICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKLSAgICAsIG1fdW5pcXVlKHVu
aXF1ZSkKLSAgICAsIG1fbXVsdGlFbnRyeShtdWx0aUVudHJ5KQotewotfQotCiBJREJJbmRleEJh
Y2tlbmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1wbCgpCiB7CiB9CiAKIElEQkluZGV4TWV0YWRh
dGEgSURCSW5kZXhCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIHJldHVybiBJ
REJJbmRleE1ldGFkYXRhKG1fbmFtZSwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5
KTsKKyAgICByZXR1cm4gSURCSW5kZXhNZXRhZGF0YShtX25hbWUsIG1faWQsIG1fa2V5UGF0aCwg
bV91bmlxdWUsIG1fbXVsdGlFbnRyeSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwg
dW5zaWduZWQgc2hvcnQgdW50eXBlZERpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFj
ZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNr
ZW5kSW1wbC5oCmluZGV4IDE3M2MzMmQwOGZmMTQzM2I5OTkwZTUwNTIyNTBjYzg5Y2E2ZGE4Yjku
LjlmYmVjMTY5N2UyNzFjNzNhMDJkNTYxNTY3NmM2M2NlNGQ5MTBiMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgK
QEAgLTQ3LDEwICs0Nyw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCSW5kZXhCYWNrZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0U3RvcmVCYWNrZW5kLCBp
ZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0
U3RvcmVCYWNrZW5kLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZEltcGwoZGF0YWJhc2UsIG9iamVjdFN0b3JlQmFj
a2VuZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KSk7Ci0gICAgfQogICAgIHZp
cnR1YWwgfklEQkluZGV4QmFja2VuZEltcGwoKTsKIAogICAgIGludDY0X3QgaWQoKSBjb25zdApA
QCAtNzYsNyArNzIsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCSW5kZXhCYWNrZW5k
SW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbCosIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnkpOwotICAgIElEQkluZGV4QmFja2VuZEltcGwo
Y29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCosIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9v
bCBtdWx0aUVudHJ5KTsKIAogICAgIHN0YXRpYyB2b2lkIG9wZW5DdXJzb3JJbnRlcm5hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBj
b3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggNTBlZGZkNDZjYzBjMmM5OTM0ZGM1ZDVjODlkMmVjNWFkN2VkYmRi
YS4uNWYyNTlhMTRiNTYxZWQzNTI4NDQ1NzRmMTY0MjMzMDliN2ViMjJjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTE5NCw2ICsxOTQsMjQgQEAgc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0
YShMZXZlbERCRGF0YWJhc2UqIGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRpYyBp
bnQ2NF90IGdldE1heE9iamVjdFN0b3JlSWQoREJPclRyYW5zYWN0aW9uKiBkYiwgaW50NjRfdCBk
YXRhYmFzZUlkKQoreworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhPYmplY3RTdG9yZUlkS2V5
ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6Ok1heE9iamVjdFN0b3JlSWQpOworICAgIHJldHVybiBnZXRNYXhPYmplY3RTdG9yZUlk
KGRiLCBtYXhPYmplY3RTdG9yZUlkS2V5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JU
cmFuc2FjdGlvbj4KK3N0YXRpYyBpbnQ2NF90IGdldE1heE9iamVjdFN0b3JlSWQoREJPclRyYW5z
YWN0aW9uKiBkYiwgY29uc3QgVmVjdG9yPGNoYXI+JiBtYXhPYmplY3RTdG9yZUlkS2V5KQorewor
ICAgIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCA9IC0xOworICAgIGlmICghZ2V0SW50KGRiLCBt
YXhPYmplY3RTdG9yZUlkS2V5LCBtYXhPYmplY3RTdG9yZUlkKSkKKyAgICAgICAgbWF4T2JqZWN0
U3RvcmVJZCA9IDA7CisKKyAgICBBU1NFUlQobWF4T2JqZWN0U3RvcmVJZCA+PSAwKTsKKyAgICBy
ZXR1cm4gbWF4T2JqZWN0U3RvcmVJZDsKK30KKwogSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6SURC
TGV2ZWxEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlC
YWNrZW5kSW1wbCogZmFjdG9yeSwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IGRiKQogICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKQEAg
LTI4Miw3ICszMDAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldERhdGFiYXNl
TmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCiAgICAgfQogfQogCi1ib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9u
LCBpbnQ2NF90JiBmb3VuZElkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1Zl
cnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCwgaW50NjRf
dCYgbWF4T2JqZWN0U3RvcmVJZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0
YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMzAwLDYgKzMx
OCw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYKICAgICBpZiAoZm91bmRJbnRWZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQogICAgICAgICBmb3VuZElu
dFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAKKyAgICBtYXhP
YmplY3RTdG9yZUlkID0gZ2V0TWF4T2JqZWN0U3RvcmVJZChtX2RiLmdldCgpLCBmb3VuZElkKTsK
KwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNzUsNyArMzk1LDggQEAgYm9vbCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
aW50NjRfdCBkYXRhYmFzZUlkOwogICAgIFN0cmluZyB2ZXJzaW9uOwogICAgIGludDY0X3QgaW50
VmVyc2lvbjsKLSAgICBpZiAoIWdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwg
aW50VmVyc2lvbiwgZGF0YWJhc2VJZCkpCisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkOwor
ICAgIGlmICghZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9u
LCBkYXRhYmFzZUlkLCBtYXhPYmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CkBAIC00
MDUsNyArNDI2LDcgQEAgc3RhdGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlw
ZShjb25zdCBMZXZlbERCSXRlcmF0b3IqIGl0LCBjb25zdCBWZWMKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKQordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZv
dW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBm
b3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kTWF4SW5kZXhJZHMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMiKTsKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gc3RhcnRLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
MSwgMCk7CkBAIC00MTUsNiArNDM2LDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICBB
U1NFUlQoZm91bmROYW1lcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChmb3VuZEtleVBhdGhzLmlz
RW1wdHkoKSk7CiAgICAgQVNTRVJUKGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLmlzRW1wdHkoKSk7
CisgICAgQVNTRVJUKGZvdW5kTWF4SW5kZXhJZHMuaXNFbXB0eSgpKTsKIAogICAgIE93blB0cjxM
ZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBpdC0+c2Vl
ayhzdGFydEtleSk7CkBAIC00NjgsNiArNDkwLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4K
ICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBpbnQ2NF90IG1heEluZGV4SWQg
PSBkZWNvZGVJbnQoaXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAg
ICAgICAgIGl0LT5uZXh0KCk7IC8vIFtvcHRpb25hbF0gaGFzIGtleSBwYXRoIChpcyBub3QgbnVs
bCkKICAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCks
IHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okhhc0tleVBh
dGgpKSB7CkBAIC00OTgsMzEgKzUyMSwzMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAg
ICAgICBmb3VuZE5hbWVzLmFwcGVuZChvYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBmb3VuZEtl
eVBhdGhzLmFwcGVuZChrZXlQYXRoKTsKICAgICAgICAgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3Mu
YXBwZW5kKGF1dG9JbmNyZW1lbnQpOworICAgICAgICBmb3VuZE1heEluZGV4SWRzLmFwcGVuZCht
YXhJbmRleElkKTsKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3Jl
SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkKQor
c3RhdGljIGJvb2wgc2V0TWF4T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5z
YWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAg
ICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQgPSAtMTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
bWF4T2JqZWN0U3RvcmVJZEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpNYXhPYmplY3RTdG9yZUlkKTsKLSAgICBpZiAoIWdl
dEludCh0cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSwgbWF4T2JqZWN0U3RvcmVJZCkp
Ci0gICAgICAgIG1heE9iamVjdFN0b3JlSWQgPSAwOwotCi0gICAgQVNTRVJUKG1heE9iamVjdFN0
b3JlSWQgPj0gMCk7CisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkID0gZ2V0TWF4T2JqZWN0
U3RvcmVJZCh0cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSk7CiAKLSAgICBpbnQ2NF90
IG9iamVjdFN0b3JlSWQgPSBtYXhPYmplY3RTdG9yZUlkICsgMTsKLSAgICBpZiAoIXB1dEludCh0
cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSwgb2JqZWN0U3RvcmVJZCkpCi0gICAgICAg
IHJldHVybiAtMTsKLQotICAgIHJldHVybiBvYmplY3RTdG9yZUlkOworICAgIGlmIChvYmplY3RT
dG9yZUlkIDw9IG1heE9iamVjdFN0b3JlSWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJQb3NzaWJs
ZSBjb3JydXB0aW9uOiBuZXcgb2JqZWN0IHN0b3JlIGlkIGlzIHRvbyBzbWFsbC4iKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gcHV0SW50KHRyYW5zYWN0aW9uLCBt
YXhPYmplY3RTdG9yZUlkS2V5LCBvYmplY3RTdG9yZUlkKTsKIH0KIAotYm9vbCBJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYg
YXNzaWduZWRPYmplY3RTdG9yZUlkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2
NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJUcmFuc2FjdGlv
biogbGV2ZWxEQlRyYW5zYWN0aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZy
b20odHJhbnNhY3Rpb24pOwotICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGdldE5ld09iamVj
dFN0b3JlSWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkKTsKLSAgICBpZiAob2JqZWN0
U3RvcmVJZCA8IDApCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZy
b250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSBBdXRvZ2Vu
ZXJhdGVPYmplY3RTdG9yZUlkKQorICAgICAgICBvYmplY3RTdG9yZUlkID0gZ2V0TWF4T2JqZWN0
U3RvcmVJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQpICsgMTsKKworICAgIGlmICgh
c2V0TWF4T2JqZWN0U3RvcmVJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gbmFtZUtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpOYW1lKTsKQEAgLTU4OSw2ICs2
MTIsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElE
QkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qIHRyYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVu
ZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgwODUKICAgICBhc3NpZ25lZE9iamVjdFN0b3JlSWQgPSBvYmplY3RTdG9y
ZUlkOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05MTgsNyArOTQyLDcgQEAgdm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUkKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQ2NF90IGdldE5ld0luZGV4SWQoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQpCitzdGF0aWMgaW50NjRfdCBnZXRNYXhJbmRleElkKExldmVsREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQogewogICAgIGludDY0X3QgbWF4SW5kZXhJZCA9IC0xOwogICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBtYXhJbmRleElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4
SWQpOwpAQCAtOTI2LDIwICs5NTAsMzcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJZChM
ZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAgICAg
ICAgbWF4SW5kZXhJZCA9IE1pbmltdW1JbmRleElkOwogCiAgICAgQVNTRVJUKG1heEluZGV4SWQg
Pj0gMCk7CisgICAgcmV0dXJuIG1heEluZGV4SWQ7Cit9CiAKLSAgICBpbnQ2NF90IGluZGV4SWQg
PSBtYXhJbmRleElkICsgMTsKLSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJ
ZEtleSwgaW5kZXhJZCkpCi0gICAgICAgIHJldHVybiAtMTsKK3N0YXRpYyBib29sIHNldE1heElu
ZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKK3sKKyAgICBpbnQ2NF90
IG1heEluZGV4SWQgPSAtMTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKTsKKyAgICBpZiAoIWdldEludCh0
cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgbWF4SW5kZXhJZCkpCisgICAgICAgIG1heEluZGV4
SWQgPSBNaW5pbXVtSW5kZXhJZDsKIAotICAgIHJldHVybiBpbmRleElkOworICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBj
b21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1Cisg
ICAgaWYgKGluZGV4SWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCkKKyAgICAgICAgaW5kZXhJZCA9
IG1heEluZGV4SWQgKyAxOworCisgICAgaWYgKGluZGV4SWQgPD0gbWF4SW5kZXhJZCkgeworICAg
ICAgICBMT0dfRVJST1IoIlBvc3NpYmxlIGNvcnJ1cHRpb246IG5ldyBpbmRleCBpZCBpcyB0b28g
c21hbGwuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcHV0
SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBpbmRleElkKTsKIH0KIAotYm9vbCBJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBp
c1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGluZGV4SWQpCitib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBhc3Np
Z25lZEluZGV4SWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpj
cmVhdGVJbmRleCIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9u
ID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwotICAg
IGluZGV4SWQgPSBnZXROZXdJbmRleElkKGxldmVsREJUcmFuc2FjdGlvbiwgZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCk7Ci0gICAgaWYgKGluZGV4SWQgPCAwKQorICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgaWYg
KGluZGV4SWQgPT0gQXV0b2dlbmVyYXRlSW5kZXhJZCkKKyAgICAgICAgaW5kZXhJZCA9IGdldE1h
eEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkKSAr
IDE7CisKKyAgICBpZiAoIXNldE1heEluZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6TmFt
ZSk7CkBAIC05NzEsNiArMTAxMiw5IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiogdHJhbnNhY3RpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBz
d2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIGFzc2lnbmVkSW5kZXhJZCA9
IGluZGV4SWQ7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCmluZGV4
IDc3Y2IwNmU3ODVhZjgwOTgwOTdiOWU5MmM4NmZlMWYyYTdlZGY2NjkuLmVlYTIzZDI5NGYwZTk0
MDY3NTE4NzcyMzNhMDJlZmQzNzY0ZjExMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ1LDE0
ICs0NSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZv
dW5kTmFtZXMpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVy
c2lvbiwgaW50NjRfdCYgZm91bmRJZCk7CisgICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNl
TWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRf
dCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RT
dG9yZUlkKTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9u
LCBpbnQ2NF90JiByb3dJZCk7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50
VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50
NjRfdCBpbnRWZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzKTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2Jq
ZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVt
ZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5k
SWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3Vu
ZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8
aW50NjRfdD4mIGZvdW5kTWF4SW5kZXhJZHMpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9yZUlk
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoSURCQmFja2luZ1N0b3JlOjpU
cmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiBjcmVh
dGVJbnZhbGlkUmVjb3JkSWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldE9iamVj
dFN0b3JlUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5Jik7CkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVjb3Jk
KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVSZWNvcmRDYWxsYmFjayYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5h
bWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91
bmRVbmlxdWVGbGFncywgVmVjdG9yPGJvb2w+JiBmb3VuZE11bHRpRW50cnlGbGFncyk7Ci0gICAg
dmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnks
IGludDY0X3QmIGluZGV4SWQpOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChJREJCYWNr
aW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2ln
bmVkSW5kZXhJZCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KElEQkJhY2tpbmdTdG9y
ZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgaW50NjRfdCBpbmRleElkKTsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5kZXhEYXRhRm9yUmVj
b3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXkmLCBjb25z
dCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRl
SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25z
dCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCmluZGV4IGIzY2JjYTFiMjY0OTA2MmE0Y2NmMDc4
MWIzY2YxYzgwMzRmOWY2MDcuLjA5NmY4OWFmYTkzZDExZjliOGJiOGZlY2JlOTdmOTFkYzIxNTQz
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFk
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEu
aApAQCAtNTIsMTYgKzUyLDIwIEBAIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKICAgICAg
ICAgOiBpbnRWZXJzaW9uKE5vSW50VmVyc2lvbikKICAgICB7CiAgICAgfQotICAgIElEQkRhdGFi
YXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGlu
dDY0X3QgaW50VmVyc2lvbikKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNp
b24sIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCkKICAgICAgICAgOiBuYW1lKG5hbWUpCisgICAg
ICAgICwgaWQoaWQpCiAgICAgICAgICwgdmVyc2lvbih2ZXJzaW9uKQogICAgICAgICAsIGludFZl
cnNpb24oaW50VmVyc2lvbikKKyAgICAgICAgLCBtYXhPYmplY3RTdG9yZUlkKG1heE9iamVjdFN0
b3JlSWQpCiAgICAgewogICAgIH0KIAogICAgIFN0cmluZyBuYW1lOworICAgIGludDY0X3QgaWQ7
CiAgICAgU3RyaW5nIHZlcnNpb247CiAgICAgaW50NjRfdCBpbnRWZXJzaW9uOworICAgIGludDY0
X3QgbWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0b3JlTWFwOwogICAgIE9iamVjdFN0b3JlTWFwIG9i
amVjdFN0b3JlczsKQEAgLTY5LDEzICs3MywxOCBAQCBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0
YSB7CiAKIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIHsKICAgICBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhKCkgeyB9Ci0gICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAg
ICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwg
Y29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1h
eEluZGV4SWQpCiAgICAgICAgIDogbmFtZShuYW1lKQogICAgICAgICAsIGtleVBhdGgoa2V5UGF0
aCkKLSAgICAgICAgLCBhdXRvSW5jcmVtZW50KGF1dG9JbmNyZW1lbnQpIHsgfQorICAgICAgICAs
IGF1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkKKyAgICAgICAgLCBtYXhJbmRleElkKG1heElu
ZGV4SWQpCisgICAgeworICAgIH0KICAgICBTdHJpbmcgbmFtZTsKKyAgICBpbnQ2NF90IGlkOwog
ICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIGF1dG9JbmNyZW1lbnQ7CisgICAgaW50
NjRfdCBtYXhJbmRleElkOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCSW5kZXhN
ZXRhZGF0YT4gSW5kZXhNYXA7CiAgICAgSW5kZXhNYXAgaW5kZXhlczsKQEAgLTgzLDEyICs5Miwx
NCBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSB7CiAKIHN0cnVjdCBJREJJbmRleE1l
dGFkYXRhIHsKICAgICBJREJJbmRleE1ldGFkYXRhKCkgeyB9Ci0gICAgSURCSW5kZXhNZXRhZGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5p
cXVlLCBib29sIG11bHRpRW50cnkpCisgICAgSURCSW5kZXhNZXRhZGF0YShjb25zdCBTdHJpbmcm
IG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnkpCiAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAsIGlkKGlk
KQogICAgICAgICAsIGtleVBhdGgoa2V5UGF0aCkKICAgICAgICAgLCB1bmlxdWUodW5pcXVlKQog
ICAgICAgICAsIG11bHRpRW50cnkobXVsdGlFbnRyeSkgeyB9CiAgICAgU3RyaW5nIG5hbWU7Cisg
ICAgaW50NjRfdCBpZDsKICAgICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgYm9vbCB1bmlxdWU7
CiAgICAgYm9vbCBtdWx0aUVudHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IDRjYmU2M2QxMTVlMGFhMDQ0YjYwZjk0
ZTU0YmZlZWFkYzk0ZTdiZGMuLjIxNzdmN2VhMGQ3ZDRiYjZkYzRkMGNhZDI3ZWYzYWJlMjhlY2U2
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5jcHAKQEAgLTQwMSwxMiArNDAxLDE1IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElE
Qk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGludDY0X3QgaW5kZXhJZCA9IElEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlSW5kZXhJZDsKICAgICBSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleEJhY2tlbmQgPSBtX2JhY2tlbmQtPmNy
ZWF0ZUluZGV4KG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgbV90cmFuc2FjdGlv
bi0+YmFja2VuZCgpLCBlYyk7CiAgICAgQVNTRVJUKCFpbmRleEJhY2tlbmQgIT0gIWVjKTsgLy8g
SWYgd2UgZGlkbid0IGdldCBhbiBpbmRleCwgd2Ugc2hvdWxkIGhhdmUgZ290dGVuIGFuIGV4Y2Vw
dGlvbiBjb2RlLiBBbmQgdmljZSB2ZXJzYS4KICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgSURCSW5kZXhNZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBrZXlQYXRoLCB1bmlxdWUs
IG11bHRpRW50cnkpOworICAgICsrbV9tZXRhZGF0YS5tYXhJbmRleElkOworCisgICAgSURCSW5k
ZXhNZXRhZGF0YSBtZXRhZGF0YShuYW1lLCBpbmRleElkLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnkpOwogICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKG1l
dGFkYXRhLCBpbmRleEJhY2tlbmQucmVsZWFzZSgpLCB0aGlzLCBtX3RyYW5zYWN0aW9uLmdldCgp
KTsKICAgICBtX2luZGV4TWFwLnNldChuYW1lLCBpbmRleCk7CiAgICAgbV9tZXRhZGF0YS5pbmRl
eGVzLnNldChuYW1lLCBtZXRhZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCmluZGV4
IDc4OTk5MmFiNmU1YzM0ZGY0NWNiMjlhNjU1ZDZjOWE2NzU1NTIxYTUuLjFjOTRjOGE5NjFmYzJk
YzVhODRjZWMzOWY4MzA5MTY4MTlmNTFjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3Bw
CkBAIC01MSwyOCArNTEsMjEgQEAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6fklEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwoKQogewogfQogCi1JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqIGRh
dGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKK0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCog
ZGF0YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQpCiAgICAg
OiBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwgbV9pZChpZCkKICAgICAsIG1fbmFtZShuYW1l
KQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgpCiAgICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0lu
Y3JlbWVudCkKKyAgICAsIG1fbWF4SW5kZXhJZChtYXhJbmRleElkKQogewotICAgIGxvYWRJbmRl
eGVzKCk7Ci19Ci0KLUlEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
KQotICAgIDogbV9kYXRhYmFzZShkYXRhYmFzZSkKLSAgICAsIG1faWQoSW52YWxpZElkKQotICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKLSAgICAsIG1fYXV0b0lu
Y3JlbWVudChhdXRvSW5jcmVtZW50KQoteworICAgIGlmIChtX2lkICE9IEF1dG9nZW5lcmF0ZUlu
ZGV4SWQpCisgICAgICAgIGxvYWRJbmRleGVzKCk7CiB9CiAKIElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2tleVBhdGgsIG1fYXV0b0lu
Y3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1f
aWQsIG1fa2V5UGF0aCwgbV9hdXRvSW5jcmVtZW50LCBtX21heEluZGV4SWQpOwogICAgIGZvciAo
SW5kZXhNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9pbmRleGVzLmJlZ2luKCk7IGl0ICE9IG1f
aW5kZXhlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEuaW5kZXhlcy5zZXQoaXQtPmZp
cnN0LCBpdC0+c2Vjb25kLT5tZXRhZGF0YSgpKTsKICAgICByZXR1cm4gbWV0YWRhdGE7CkBAIC00
MzYsMTMgKzQyOSwyMSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFySW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdAogCiBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoIW1faW5k
ZXhlcy5jb250YWlucyhuYW1lKSk7CisgICAgcmV0dXJuIGNyZWF0ZUluZGV4KEF1dG9nZW5lcmF0
ZUluZGV4SWQsIG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSwgdHJhbnNhY3Rpb25Q
dHIsIGVjKTsKK30KKworUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pbmRleGVz
LmNvbnRhaW5zKG5hbWUpLCAiSW5kZXhlcyBhbHJlYWR5IGNvbnRhaW4gJXMiLCBuYW1lLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURC
SW5kZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKG1fZGF0YWJhc2UsIHRoaXMsIG5hbWUsIGtleVBhdGgs
IHVuaXF1ZSwgbXVsdGlFbnRyeSk7CisgICAgQ09NUElMRV9BU1NFUlQoQXV0b2dlbmVyYXRlSW5k
ZXhJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9nZW5lcmF0ZUluZGV4SWQsIEF1dG9nZW5lcmF0
ZUluZGV4SWRNYXRjaGVzKTsKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgg
PSBJREJJbmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZSwgdGhpcywgaWQsIG5hbWUs
IGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlFbnRyeSk7CiAgICAgQVNTRVJUKGluZGV4LT5uYW1lKCkg
PT0gbmFtZSk7CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNh
Y3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsK
ICAgICBBU1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lP
Tl9DSEFOR0UpOworICAgIEFTU0VSVChpZCA9PSBBdXRvZ2VuZXJhdGVJbmRleElkIHx8IGlkID4g
bV9tYXhJbmRleElkKTsKKyAgICBtX21heEluZGV4SWQgPSBpZDsKIAogICAgIFJlZlB0cjxJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKApAQCAtNDU5LDExICs0NjAsMTMgQEAgUGFzc1JlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0
ZUluZGV4KGNvbnMKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXhJ
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBpbmRleCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlv
bikKIHsKICAgICBpbnQ2NF90IGlkOwotICAgIGlmICghb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9y
ZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
b2JqZWN0U3RvcmUtPmRhdGFiYXNlSWQoKSwgb2JqZWN0U3RvcmUtPmlkKCksIGluZGV4LT5uYW1l
KCksIGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51bmlxdWUoKSwgaW5kZXgtPm11bHRpRW50cnko
KSwgaWQpKSB7CisgICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZUlu
ZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBvYmplY3RTdG9yZS0+
ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPmlkKCksIGluZGV4LT5uYW1l
KCksIGluZGV4LT5rZXlQYXRoKCksIGluZGV4LT51bmlxdWUoKSwgaW5kZXgtPm11bHRpRW50cnko
KSwgaWQpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydCgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250
LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBBU1NFUlQoaW5kZXgtPmlkKCkgPT0gQXV0b2dlbmVy
YXRlSW5kZXhJZCB8fCBpbmRleC0+aWQoKSA9PSBpZCk7CiAgICAgaW5kZXgtPnNldElkKGlkKTsK
IAogICAgIHRyYW5zYWN0aW9uLT5kaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuaAppbmRleCBiZDk1YmJlYmUyZjdlMmEyYmQyOTMxMjBiZmY4MTI3ZTBjYmIyZmU3
Li5iNWRhY2FiOWZjNDY5NmMzOWY4YTZjYmRlMGE0ZTI1YzA1NGM3N2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbC5oCkBAIC00NywxMyArNDcsOSBAQCBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRh
ZGF0YTsKIAogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsKiBkYXRhYmFzZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJ
REJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNl
QmFja2VuZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCBtYXhJ
bmRleElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKGRhdGFiYXNlLCBpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCkp
OwotICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsKGRhdGFiYXNlLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChkYXRhYmFzZSwg
aWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1heEluZGV4SWQpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCgpOwogCkBAIC03Myw3ICs2OSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3aXRj
aCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGludDY0X3QsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11
bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQ
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+
JiAsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbmRleGVzUmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTk2
LDggKzk0LDcgQEAgcHVibGljOgogICAgIGludDY0X3QgZGF0YWJhc2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YWJhc2UtPmlkKCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQpOwotICAgIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJv
b2wgYXV0b0luY3JlbWVudCk7CisgICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsKiwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heEluZGV4SWQp
OwogCiAgICAgdm9pZCBsb2FkSW5kZXhlcygpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5l
cmF0ZUtleShQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKQEAgLTEyMiw2
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX25hbWU7CiAgICAgSURCS2V5UGF0aCBt
X2tleVBhdGg7CiAgICAgYm9vbCBtX2F1dG9JbmNyZW1lbnQ7CisgICAgaW50NjRfdCBtX21heElu
ZGV4SWQ7CiAKICAgICBJbmRleE1hcCBtX2luZGV4ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UuaAppbmRleCAwMTc5YjZhODhhZjYyNmFkYjJlY2M0YWIyMDQxMGFkMGNhM2Zh
ZjJmLi4yZWI1YTg2MDg1ZDc0ODA2NDk4ZmJmNTU5OGZjOWRhYmFmODRmNGMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTYsNiArNTYsMTEgQEAgcHVibGljOgogICAg
ICAgICBBZGRPbmx5LAogICAgICAgICBDdXJzb3JVcGRhdGUKICAgICB9OworCisgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgTWluaW11bUluZGV4SWQgPSAzMDsKKyAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIHN0YXRp
YyBjb25zdCBpbnQ2NF90IEF1dG9nZW5lcmF0ZUluZGV4SWQgPSAtMTsKKwogICAgIHR5cGVkZWYg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gSW5kZXhLZXlzOwogCiAgICAgdmlydHVhbCB2b2lkIHB1
dFdpdGhJbmRleEtleXMoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVm
UHRyPElEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8SW5kZXhLZXlzPiYsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CkBAIC02Myw2ICs2OCw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4s
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJ
bmRleChpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3
aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiwgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVz
UmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJEYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJh
c2UuaAppbmRleCA4M2I5YTQyNWY4NDdmYTlkODgxNzM3YzMwOWVhOGEyODJhYjRlZjI5Li4xNmNm
YmQ4NWRiNDYxM2I0ZGYzZmZkOGNmYWFhZjE0NjkwZmNlNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKQEAgLTU1LDYgKzU1LDExIEBAIHB1
YmxpYzoKICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRlT2JqZWN0
U3RvcmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmLCBjb25zdCBXZWJJREJLZXlQYXRoJiwg
Ym9vbCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJikKKyAgICB7
CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0
aW9uQ29kZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2ZXJzaW9uLCBXZWJJREJDYWxsYmFj
a3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiB0aGUgV2ViSURCVHJhbnNh
Y3Rpb24gdG8gdGhlIGNhbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJNZXRhZGF0YS5oCmluZGV4IDFmMmU5ZWFkNDVmMjIzYTY5YTY2MGNjN2NjNjc4NDEwMDJm
MWZmNmUuLjk1N2UwODJiYjBmYjI2Mjk3ZTQ1ZDVkOGZmNzhmYTg3NGYwZmQyOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk1ldGFkYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaApAQCAtNTAsNiAr
NTAsOCBAQCBzdHJ1Y3QgV2ViSURCTWV0YWRhdGEgewogICAgIC8vIHNldFZlcnNpb24sIFdlYlN0
cmluZyB2ZXJzaW9uIGNhbiBiZSByZW1vdmVkLgogICAgIFdlYlN0cmluZyB2ZXJzaW9uOwogICAg
IGxvbmcgbG9uZyBpbnRWZXJzaW9uOworICAgIGxvbmcgbG9uZyBpZDsKKyAgICBsb25nIGxvbmcg
bWF4T2JqZWN0U3RvcmVJZDsKICAgICBXZWJWZWN0b3I8T2JqZWN0U3RvcmU+IG9iamVjdFN0b3Jl
czsKICAgICBXZWJJREJNZXRhZGF0YSgpCiAgICAgICAgIDogaW50VmVyc2lvbihOb0ludFZlcnNp
b24pIHsgfQpAQCAtNTgsNiArNjAsOCBAQCBzdHJ1Y3QgV2ViSURCTWV0YWRhdGEgewogICAgICAg
ICBXZWJTdHJpbmcgbmFtZTsKICAgICAgICAgV2ViSURCS2V5UGF0aCBrZXlQYXRoOwogICAgICAg
ICBib29sIGF1dG9JbmNyZW1lbnQ7CisgICAgICAgIGxvbmcgbG9uZyBpZDsKKyAgICAgICAgbG9u
ZyBsb25nIG1heEluZGV4SWQ7CiAgICAgICAgIFdlYlZlY3RvcjxJbmRleD4gaW5kZXhlczsKICAg
ICAgICAgT2JqZWN0U3RvcmUoKQogICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklEQktleVBhdGg6
OmNyZWF0ZU51bGwoKSkKQEAgLTY5LDYgKzczLDcgQEAgc3RydWN0IFdlYklEQk1ldGFkYXRhIHsK
ICAgICAgICAgV2ViSURCS2V5UGF0aCBrZXlQYXRoOwogICAgICAgICBib29sIHVuaXF1ZTsKICAg
ICAgICAgYm9vbCBtdWx0aUVudHJ5OworICAgICAgICBsb25nIGxvbmcgaWQ7CiAgICAgICAgIElu
ZGV4KCkKICAgICAgICAgICAgIDoga2V5UGF0aChXZWJJREJLZXlQYXRoOjpjcmVhdGVOdWxsKCkp
CiAgICAgICAgICAgICAsIHVuaXF1ZShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oCmluZGV4IGEyYjg3ZGE4MTYxZTg4M2YwNDQy
OWI3ZTIzMDI1ZTFhYjIwOGM3YzEuLmNhMDEwM2NkYTZmYzNmMzcyY2FkY2FhYjdjZDZjZTMwNWEy
MjdkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQk9i
amVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2Jq
ZWN0U3RvcmUuaApAQCAtNjMsNiArNjMsMTEgQEAgcHVibGljOgogICAgICAgICBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2aXJ0dWFs
IFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYsIGNv
bnN0IFdlYklEQktleVBhdGgmLCBib29sLCBib29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgdmlydHVhbCB2b2lkIHNldElu
ZGV4S2V5cyhjb25zdCBXZWJJREJLZXkmLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYsIGNv
bnN0IFdlYlZlY3RvcjxXZWJJbmRleEtleXM+JiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRl
eGVzUmVhZHkoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mLCBjb25zdCBXZWJJREJUcmFuc2Fj
dGlvbiYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9OwogICAgIC8vIFRyYW5zZmVy
cyBvd25lcnNoaXAgb2YgdGhlIFdlYklEQkluZGV4IHRvIHRoZSBjYWxsZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAK
aW5kZXggNTAxY2U2MWZiNTk1NjI2NmIwYzNiZjFiNGMwMmFlZjZjZGEwMDgwNi4uOGIxZmJjNDA1
Y2FhMTkwOTBlYzAzMDA0ODI4NTc0NjRjMGY0YzQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApAQCAtNjYsNiAr
NjYsMTcgQEAgSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bWV0
YWRhdGEoKSBjb25zdAogICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5tZXRhZGF0YSgpOwog
fQogCitQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJh
c2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3QgaWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRv
IGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAg
IC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVj
dHMuCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBz
dGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAg
ICBPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gYWRvcHRQdHIobV93ZWJJ
REJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUoaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNy
ZW1lbnQsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOwor
ICAgIGlmICghb2JqZWN0U3RvcmUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBJREJP
YmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlLnJlbGVhc2UoKSk7Cit9
CisKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVy
IHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaAppbmRleCA3OTU2
MTBhYTY1NzJkY2E0NmNjMjY0ZGI1YjA4YmQxNzhjMWM1NjUwLi5lYTY5M2FkYTE3ZTNhNTFlY2Ix
OWEwOWRhMzQ2YjdkYzFmY2ExMDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNv
bnN0OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFN0cmluZyYgdmVyc2lv
biwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IHRyYW5zYWN0aW9uKFdlYkNvcmU6OkRPTVN0cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVk
IHNob3J0IG1vZGUsIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcApp
bmRleCBiNTNlYjJjM2E0Njg2ZTZkM2FlNDI2ZGEzMTRiMjY3NWEyMmYyMGYwLi4yYjliNDRhN2Ex
ZmZjZGQ4MDIwNzVlYTBkMzhlNmI3YzA3MTc0OGE1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCkBAIC0x
MDMsNiArMTAzLDE3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyCiAgICAgbV93ZWJJREJPYmpl
Y3RTdG9yZS0+Y2xlYXIobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5z
YWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAorUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpj
cmVhdGVJbmRleChpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVy
IHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxl
bWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIE93blB0cjxXZWJJ
REJJbmRleD4gaW5kZXggPSBhZG9wdFB0cihtX3dlYklEQk9iamVjdFN0b3JlLT5jcmVhdGVJbmRl
eChpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCAqdHJhbnNhY3Rpb25Qcm94
eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRl
eC5yZWxlYXNlKCkpOworfQorCiBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4g
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eS5oCmluZGV4IDc0Y2IwYmQ1NzAzYjYxNTI1ZGE1ZmQ1YzQ4MmU1ZTZlYTQ0OGNk
YjEuLjg0NzBjMWFkOTA1YmMxNTZmZDlmM2I4ZmMxNGVmZjFlNDExZThiZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHkuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRf
dCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4S2V5cyhQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQktleT4gcHJwUHJpbWFyeUtleSwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8SW5kZXhLZXlzPiYsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleGVz
UmVhZHkoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuY3BwCmluZGV4IGI1OGNkNTExMTc3Njg4NGY5NTYwMWU5ZWU3OWUwZDgyODkz
YzYyZDAuLmFlZmViMGZhZjZjMWIzZDRjNjEyZjc1NjI2YmU5MWQyMjk1YmZmNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcApAQCAt
NjAsNiArNjAsMTYgQEAgV2ViSURCTWV0YWRhdGEgV2ViSURCRGF0YWJhc2VJbXBsOjptZXRhZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YWJhc2VCYWNrZW5kLT5tZXRhZGF0YSgpOwogfQog
CitXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmplY3RTdG9y
ZShsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYg
dHJhbnNhY3Rpb24sIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUJhY2tlbmQt
PmNyZWF0ZU9iamVjdFN0b3JlKGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFu
c2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOworICAgIGlm
ICghb2JqZWN0U3RvcmUpIHsKKyAgICAgICAgQVNTRVJUKGVjKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorICAgIHJldHVybiBuZXcgV2ViSURCT2JqZWN0U3RvcmVJbXBsKG9iamVjdFN0b3Jl
KTsKK30KKwogV2ViSURCT2JqZWN0U3RvcmUqIFdlYklEQkRhdGFiYXNlSW1wbDo6Y3JlYXRlT2Jq
ZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRoJiBrZXlQ
YXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2Fj
dGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2RhdGFiYXNlQmFja2VuZC0+Y3JlYXRl
T2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgdHJhbnNhY3Rpb24uZ2V0
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggNTE4ZmZjZGI5Nzk4MDA1
ZTRjODhjMDc4OGUwNGVhZTUzZjc2YzhjNy4uODQ5OTY5Y2I0YmEyOGYwNThhNTE1MmY5Mzg4OTIz
ZmFhZjFjYWE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViSURC
TWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgV2ViSURCT2JqZWN0U3Rv
cmUqIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9yZSogY3JlYXRl
T2JqZWN0U3RvcmUobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklE
QktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwgV2ViRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0IFdlYlN0cmluZyYg
dmVyc2lvbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgV2ViSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKGNvbnN0IFdlYkRPTVN0cmluZ0xpc3Qm
IG5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBXZWJFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJNZXRhZGF0YS5jcHAKaW5kZXggYjQ0YTllOWY4
Yjk3M2ZkYWUyODcwMWMzZWU3MWM2ODFiNzMxNDZhZS4uYjhlM2RiM2E0MDE3ZmE3NTMwZjkyNmQw
ZmZjZDhkMmUxZTgyZDczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCTWV0YWRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
Qk1ldGFkYXRhLmNwcApAQCAtNDMsNiArNDMsNyBAQCBXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0
YWRhdGEoY29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAg
dmVyc2lvbiA9IG1ldGFkYXRhLnZlcnNpb247CiAgICAgaW50VmVyc2lvbiA9IG1ldGFkYXRhLmlu
dFZlcnNpb247CiAgICAgb2JqZWN0U3RvcmVzID0gV2ViVmVjdG9yPE9iamVjdFN0b3JlPihzdGF0
aWNfY2FzdDxzaXplX3Q+KG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5zaXplKCkpKTsKKyAgICBtYXhP
YmplY3RTdG9yZUlkID0gbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIHNpemVfdCBp
ID0gMDsKICAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9iamVjdFN0b3JlTWFwOjpjb25z
dF9pdGVyYXRvciBzdG9yZUl0ZXJhdG9yID0gbWV0YWRhdGEub2JqZWN0U3RvcmVzLmJlZ2luKCk7
IHN0b3JlSXRlcmF0b3IgIT0gbWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgpOyArK3N0b3JlSXRl
cmF0b3IpIHsKQEAgLTUyLDYgKzUzLDcgQEAgV2ViSURCTWV0YWRhdGE6OldlYklEQk1ldGFkYXRh
KGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQogICAgICAgICB3
ZWJPYmplY3RTdG9yZS5rZXlQYXRoID0gb2JqZWN0U3RvcmUua2V5UGF0aDsKICAgICAgICAgd2Vi
T2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCA9IG9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQ7CiAg
ICAgICAgIHdlYk9iamVjdFN0b3JlLmluZGV4ZXMgPSBXZWJWZWN0b3I8SW5kZXg+KHN0YXRpY19j
YXN0PHNpemVfdD4ob2JqZWN0U3RvcmUuaW5kZXhlcy5zaXplKCkpKTsKKyAgICAgICAgd2ViT2Jq
ZWN0U3RvcmUubWF4SW5kZXhJZCA9IG9iamVjdFN0b3JlLm1heEluZGV4SWQ7CiAKICAgICAgICAg
c2l6ZV90IGogPSAwOwogICAgICAgICBmb3IgKElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkluZGV4
TWFwOjpjb25zdF9pdGVyYXRvciBpbmRleEl0ZXJhdG9yID0gb2JqZWN0U3RvcmUuaW5kZXhlcy5i
ZWdpbigpOyBpbmRleEl0ZXJhdG9yICE9IG9iamVjdFN0b3JlLmluZGV4ZXMuZW5kKCk7ICsraW5k
ZXhJdGVyYXRvcikgewpAQCAtNjksMTQgKzcxLDE0IEBAIFdlYklEQk1ldGFkYXRhOjpXZWJJREJN
ZXRhZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKIAog
V2ViSURCTWV0YWRhdGE6Om9wZXJhdG9yIElEQkRhdGFiYXNlTWV0YWRhdGEoKSBjb25zdAogewot
ICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgZGIobmFtZSwgdmVyc2lvbiwgaW50VmVyc2lvbik7Cisg
ICAgSURCRGF0YWJhc2VNZXRhZGF0YSBkYihuYW1lLCBpZCwgdmVyc2lvbiwgaW50VmVyc2lvbiwg
bWF4T2JqZWN0U3RvcmVJZCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTdG9y
ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgT2JqZWN0U3RvcmUgd2ViT2JqZWN0U3Rv
cmUgPSBvYmplY3RTdG9yZXNbaV07Ci0gICAgICAgIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgb2Jq
ZWN0U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwgd2ViT2JqZWN0U3RvcmUua2V5UGF0aCwgd2Vi
T2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCk7CisgICAgICAgIElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgb2JqZWN0U3RvcmUod2ViT2JqZWN0U3RvcmUubmFtZSwgd2ViT2JqZWN0U3RvcmUuaWQsIHdl
Yk9iamVjdFN0b3JlLmtleVBhdGgsIHdlYk9iamVjdFN0b3JlLmF1dG9JbmNyZW1lbnQsIHdlYk9i
amVjdFN0b3JlLm1heEluZGV4SWQpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
d2ViT2JqZWN0U3RvcmUuaW5kZXhlcy5zaXplKCk7ICsraikgewogICAgICAgICAgICAgY29uc3Qg
SW5kZXggd2ViSW5kZXggPSB3ZWJPYmplY3RTdG9yZS5pbmRleGVzW2pdOwotICAgICAgICAgICAg
SURCSW5kZXhNZXRhZGF0YSBpbmRleCh3ZWJJbmRleC5uYW1lLCB3ZWJJbmRleC5rZXlQYXRoLCB3
ZWJJbmRleC51bmlxdWUsIHdlYkluZGV4Lm11bHRpRW50cnkpOworICAgICAgICAgICAgSURCSW5k
ZXhNZXRhZGF0YSBpbmRleCh3ZWJJbmRleC5uYW1lLCB3ZWJJbmRleC5pZCwgd2ViSW5kZXgua2V5
UGF0aCwgd2ViSW5kZXgudW5pcXVlLCB3ZWJJbmRleC5tdWx0aUVudHJ5KTsKICAgICAgICAgICAg
IG9iamVjdFN0b3JlLmluZGV4ZXMuc2V0KGluZGV4Lm5hbWUsIGluZGV4KTsKICAgICAgICAgfQog
ICAgICAgICBkYi5vYmplY3RTdG9yZXMuc2V0KG9iamVjdFN0b3JlLm5hbWUsIG9iamVjdFN0b3Jl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0
b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9y
ZUltcGwuY3BwCmluZGV4IGY1ZGQ5MTNjOTQ4NTI3OGI0NjY4YmQyNzM0NjEyZjhhZWQyMTc1OWEu
LjE5OGEyODc4ODZhMjY4ZGU4MjQ0YmI0NzkzNmY4N2FmMGUxMGI2NmUgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAt
MTE3LDYgKzExNywxNCBAQCBXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3RvcmVJbXBsOjpjcmVh
dGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYgogICAgIHJldHVybiBuZXcg
V2ViSURCSW5kZXhJbXBsKGluZGV4KTsKIH0KIAorV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0
b3JlSW1wbDo6Y3JlYXRlSW5kZXgobG9uZyBsb25nIGlkLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnksIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXggPSBt
X29iamVjdFN0b3JlLT5jcmVhdGVJbmRleChpZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0
aUVudHJ5LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwg
ZWMpOworICAgIGlmICghaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcg
V2ViSURCSW5kZXhJbXBsKGluZGV4KTsKK30KKwogV2ViSURCSW5kZXgqIFdlYklEQk9iamVjdFN0
b3JlSW1wbDo6aW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1fb2Jq
ZWN0U3RvcmUtPmluZGV4KG5hbWUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggMDQwMjBlNTU4ZjQ0ZDQxZGJmNjk5
NDJlMzZlZTYwYjU4NzQ0ZTgyMy4uOTAyNjQxYTAxOTRmNzg3MzkxNDE2NGIwMjZmNDBkYjlhNDU2
MDg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0
U3RvcmVJbXBsLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoV2Vi
SURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAKICAgICBXZWJJREJJbmRleCogY3JlYXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29u
c3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgV2ViSURCSW5k
ZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgY29uc3QgV2ViSURC
VHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgV2ViSURCSW5kZXgqIGluZGV4
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVs
ZXRlSW5kZXgoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYs
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167154</attachid>
            <date>2012-10-04 12:09:07 -0700</date>
            <delta_ts>2012-10-04 15:38:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97834-20121004120817.patch</filename>
            <type>text/plain</type>
            <size>71159</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUxMmRhMWRjZTg3ODZh
M2FmNDM1NjIwZmZlZDRmZTI1N2Y4MjY4OC4uYmExMTIwOTNmOGQ1MTdjZmQ5ZTk0OTBiMWY4OTY2
MWM3MWJjYzA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTEwLTAzICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IHBy
b21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8gdGhlIGZyb250ZW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBpbnQ2NC1i
YXNlZCBkYXRhYmFzZS9vYmplY3RTdG9yZS9pbmRleCBpZHMgdG8gdGhlIHJlbmRlcmVyLAorICAg
ICAgICBzdGVwIDEgb2YgMi4gU3VwcG9ydCBib3RoIHN0eWxlcyBvZiBjcmVhdGVPYmplY3RTdG9y
ZSBhbmQKKyAgICAgICAgY3JlYXRlSW5kZXg6IHRob3NlIHRoYXQgdGFrZSBhbiBleHBsaWNpdCBp
ZCwgYW5kIHRob3NlIHRoYXQgdGFrZQorICAgICAgICAtMSwgbWVhbmluZyB0byBhdXRvZ2VuZXJh
dGUgYW4gaWQgb24gdGhlIGJhY2tlbmQuIEluIHBhcnQgMiwgYWZ0ZXIKKyAgICAgICAgdGhlIGNo
cm9taXVtIHNpZGUgbGFuZHMsIHN1cHBvcnQgZm9yIHRoZSBhdXRvZ2VuZXJhdGVkIGlkcyB3aWxs
IGJlCisgICAgICAgIHJlbW92ZWQuIChTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MDg1KQorCisgICAgICAgIFRoaXMgaXMgYSBwYXJ0IG9mIGxhcmdlciByZWZh
Y3RvcmluZyB3b3JrIHRvIHVsdGltYXRlbHkgbWFrZSB0aGUgaW50ZXJmYWNlCisgICAgICAgIGJl
dHdlZW4gdGhlIGZyb250ZW5kIGFuZCB0aGUgYmFja2VuZCBzaW1wbGVyLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgZXh0ZW5zaXZlIEFTU0VSVHMgYW5kIGV4aXN0aW5nIHRlc3RzIGNvdmVyIGNv
cnJlY3RuZXNzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9i
amVjdFN0b3Jlcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAg
IChJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkluZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhC
YWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQklu
ZGV4QmFja2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6
OmNyZWF0ZSk6CisgICAgICAgIChJREJJbmRleEJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TWF4T2JqZWN0U3RvcmVJZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0
b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRNYXhPYmplY3RTdG9yZUlkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldE1heEluZGV4SWQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWF4
SW5kZXhJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoSURCTGV2ZWxEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFi
YXNlTWV0YWRhdGE6OklEQkRhdGFiYXNlTWV0YWRhdGEpOgorICAgICAgICAoSURCRGF0YWJhc2VN
ZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhKToKKyAgICAgICAgKElEQk9iamVjdFN0b3JlTWV0YWRhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YTo6SURCSW5kZXhNZXRhZGF0YSk6Cisg
ICAgICAgIChJREJJbmRleE1ldGFkYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZUluZGV4SW50
ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNy
ZWF0ZSk6CisgICAgICAgIChJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaDoKIDIwMTIt
MTAtMDQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogU2NyaXB0cyBwYW5lbCBzaG91bGQgbm90IGF1dG9tYXRpY2FsbHkgc3dp
dGNoIHRvIHNuaXBwZXQgZXZhbHVhdGlvbiB3aGVuIHByZXZpb3VzbHkgZXZhbHVhdGVkIHNuaXBw
ZXQgaXMgZWRpdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhMGRmMDA2MGNmNjhk
ZTQwYmFhNzIzNTRmMjI0ZmY3ODVmYTZjOTA4Li5lOWMzMGQyMThkMmVhYzBlOWIzYjIwZWM0OWNj
MDI2ZGMyNzlkNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTEwLTAzICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IHByb21vdGUgb2JqZWN0c3RvcmUvaW5kZXggYmFja2VuZCBpZHMgdG8g
dGhlIGZyb250ZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFN1cHBvcnQgZm9yIG1hcnNoYWxsaW5nIGFkZGl0aW9uYWwgSURCTWV0YWRhdGEgYW5kIG5l
dyBjYWxscyB0bworICAgICAgICBjcmVhdGVPYmplY3RTdG9yZS9jcmVhdGVJbmRleC4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJREJEYXRhYmFzZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJE
YXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJNZXRh
ZGF0YS5oOgorICAgICAgICAoT2JqZWN0U3RvcmUpOgorICAgICAgICAoSW5kZXgpOgorICAgICAg
ICAqIHB1YmxpYy9XZWJJREJPYmplY3RTdG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpj
cmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJE
YXRhYmFzZUJhY2tlbmRQcm94eS5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNrZW5kUHJveHkp
OgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5o
OgorICAgICAgICAoSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkpOgorICAgICAgICAqIHNyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUlt
cGw6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3Jj
L1dlYklEQkRhdGFiYXNlSW1wbC5oOgorICAgICAgICAoV2ViSURCRGF0YWJhc2VJbXBsKToKKyAg
ICAgICAgKiBzcmMvV2ViSURCTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJN
ZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJNZXRhZGF0
YTo6b3BlcmF0b3IgSURCRGF0YWJhc2VNZXRhZGF0YSk6CisgICAgICAgICogc3JjL1dlYklEQk9i
amVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlSW1w
bDo6Y3JlYXRlSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmg6CisgICAgICAgIChXZWJJREJPYmplY3RTdG9yZUltcGwpOgogMjAx
Mi0xMC0wNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBFbmFibGUgdGhlIG11bHRpcGxlIGZpZWxkcyBVSSBmb3IgaW5wdXRbdHlwZT1kYXRl
XQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2lu
Z1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaAppbmRleCAxMWI1MTFmYzM5MGZlNjA1ODNmMWU5YWI5NGYwOGU0MWU3YjU1NzE2Li4wYTc0
ZTc0OTAyNzY1NzY3ZTRkYjQzMTRlZjA3ODdhZTI4NzYwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtNDYsMTcgKzQ2
LDIxIEBAIGNsYXNzIElEQkJhY2tpbmdTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tp
bmdTdG9yZT4gewogcHVibGljOgogICAgIGNsYXNzIFRyYW5zYWN0aW9uOwogCisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGVzZSB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBp
cyBjb21wbGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1
CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlSW5kZXhJZCA9IC0xOworICAg
IHN0YXRpYyBjb25zdCBpbnQ2NF90IEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQgPSAtMTsKKwog
ICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3Qm
IGZvdW5kSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShj
b25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBm
b3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQsIGludDY0X3QmIG1heE9iamVjdFN0b3Jl
SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmVyc2lvbiwgaW50NjRfdCBpbnRW
ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJE
YXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2NF90IGlu
dFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlk
LCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywg
VmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0
b0luY3JlbWVudEZsYWdzKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3Jl
KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2Jq
ZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RTdG9yZXMoaW50NjRf
dCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYg
Zm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9v
bD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kTWF4SW5k
ZXhJZHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoVHJhbnNhY3Rp
b24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90
JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0U3RvcmUoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkgPSAwOwogCiAgICAgY2xhc3MgT2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyIDog
cHVibGljIFJlZkNvdW50ZWQ8T2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyPiB7CkBAIC04Miw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZm9yRWFjaE9iamVjdFN0b3JlUmVj
b3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIE9iamVjdFN0b3JlUmVjb3JkQ2FsbGJhY2smKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgVmVj
dG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMsIFZlY3Rv
cjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3VuZFVuaXF1ZUZs
YWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKSA9IDA7Ci0gICAgdmlydHVh
bCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYs
IGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90JiBpbmRleElkKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRp
RW50cnksIGludDY0X3QmIGFzc2lnbmVkSW5kZXhJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgcHV0SW5k
ZXhEYXRhRm9yUmVjb3JkKFRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiwgY29uc3QgT2Jq
ZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJ
bmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXIqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHAKaW5kZXggNDNlMGJkZWVlZTgzYzgwN2RlOTZlMjRiNjcyODRkZTg3
N2E1YjIxMS4uZDk3MmMyZGJkMjU2NWMzNTlhYTA2MDFkMTZmZjMyNDlmNDM0NzNiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAt
MTY3LDkgKzE2NywxMSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtl
eVBhdGgsIGF1dG9JbmNyZW1lbnQpOworICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZDsKKyAgICBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIG9iamVjdFN0b3JlSWQsIGtleVBh
dGgsIGF1dG9JbmNyZW1lbnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6TWluaW11
bUluZGV4SWQpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBJREJP
YmplY3RTdG9yZTo6Y3JlYXRlKG1ldGFkYXRhLCBvYmplY3RTdG9yZUJhY2tlbmQucmVsZWFzZSgp
LCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9tZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKKyAgICArK21fbWV0YWRhdGEubWF4T2JqZWN0
U3RvcmVJZDsKIAogICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZUNy
ZWF0ZWQobmFtZSwgb2JqZWN0U3RvcmUpOwogICAgIHJldHVybiBvYmplY3RTdG9yZS5yZWxlYXNl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCmluZGV4IDQ0NjZjNWNkNjY0MDZhZTk1Yzg1ZWVjOTQz
NjJhNDc2ZmEwMTc5ZDguLjZjNDFlZDYwOGU4NGQwN2QzYTg4YzJkYmJiMTYyMTdkNmY4YTM5YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCkBAIC0xMzcsNiArMTM3LDcgQEAgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbChjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkJhY2tpbmdTdG8KICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV92ZXJzaW9uKE5vU3RyaW5n
VmVyc2lvbikKICAgICAsIG1faW50VmVyc2lvbihJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZl
cnNpb24pCisgICAgLCBtX21heE9iamVjdFN0b3JlSWQoSW52YWxpZElkKQogICAgICwgbV9pZGVu
dGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAs
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVh
dGUoKSkKQEAgLTE0Nyw3ICsxNDgsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogCiBib29s
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3Zl
cnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5n
U3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVy
c2lvbiwgbV9pZCwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSwgInN1Y2Nlc3MgPSAlcywgbV9pZCA9ICVs
bGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPiht
X2lkKSk7CiAgICAgaWYgKHN1Y2Nlc3MpIHsKICAgICAgICAgbG9hZE9iamVjdFN0b3JlcygpOwpA
QCAtMTY3LDcgKzE2OCw3IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpiYWNraW5nU3RvcmUoKSBjb25zdAogCiBJREJEYXRhYmFzZU1ldGFkYXRh
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om1ldGFkYXRhKCkgY29uc3QKIHsKLSAgICBJREJEYXRh
YmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24pOwor
ICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBtX3ZlcnNpb24s
IG1faW50VmVyc2lvbiwgbV9tYXhPYmplY3RTdG9yZUlkKTsKICAgICBmb3IgKE9iamVjdFN0b3Jl
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fb2JqZWN0U3RvcmVzLmJlZ2luKCk7IGl0ICE9IG1f
b2JqZWN0U3RvcmVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5vYmplY3RTdG9yZXMu
c2V0KGl0LT5maXJzdCwgaXQtPnNlY29uZC0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJuIG1ldGFk
YXRhOwpAQCAtMTc1LDE0ICsxNzYsMjQgQEAgSURCRGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
YXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
blB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgcmV0dXJuIGNyZWF0ZU9iamVjdFN0b3Jl
KEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQs
IHRyYW5zYWN0aW9uUHRyLCBlYyk7Cit9CisKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZShp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgs
IGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CiAgICAgQVNTRVJUKCFtX29iamVjdFN0
b3Jlcy5jb250YWlucyhuYW1lKSk7CiAKLSAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhp
cywgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCk7CisgICAgQ09NUElMRV9BU1NFUlQoQXV0
b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9PSBJREJCYWNraW5nU3RvcmU6OkF1dG9nZW5lcmF0ZU9i
amVjdFN0b3JlSWQsIEF1dG9nZW5lcmF0ZU9iamVjdFN0b3JlSWRNYXRjaGVzKTsKKyAgICBSZWZQ
dHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhpcywgaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1l
bnQsIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZTo6TWluaW11bUluZGV4SWQpOwogICAg
IEFTU0VSVChvYmplY3RTdG9yZS0+bmFtZSgpID09IG5hbWUpOwogCiAgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6ZnJvbSh0cmFuc2FjdGlvblB0cik7CiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2Rl
KCkgPT0gSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFKTsKIAorICAgIC8vIEZJWE1FOiBG
aXggZWRnZSBjYXNlcyBhcm91bmQgdHJhbnNhY3Rpb24gYWJvcnRzIHRoYXQgcHJldmVudCB0aGlz
IGZyb20ganVzdCBiZWluZyBBU1NFUlQoaWQgPT0gbV9tYXhPYmplY3RTdG9yZUlkICsgMSkKKyAg
ICBBU1NFUlQoaWQgPT0gQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCB8fCBpZCA+IG1fbWF4T2Jq
ZWN0U3RvcmVJZCk7CisgICAgbV9tYXhPYmplY3RTdG9yZUlkID0gaWQ7CisKICAgICBSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIGlmICghdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzaygKICAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbCwgZGF0YWJhc2Us
IG9iamVjdFN0b3JlLCB0cmFuc2FjdGlvbiksCkBAIC0xOTksMTEgKzIxMCwxMyBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9iamVjdFN0b3JlSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosCiB7CiAgICAgaW50NjRfdCBvYmplY3RTdG9yZUlkOwogCi0gICAgaWYg
KCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZS0+aWQoKSwgb2JqZWN0U3RvcmUt
Pm5hbWUoKSwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1l
bnQoKSwgb2JqZWN0U3RvcmVJZCkpIHsKKyAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9y
ZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIGRhdGFiYXNlLT5pZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgb2JqZWN0U3RvcmUtPm5hbWUo
KSwgb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwgb2JqZWN0U3RvcmUtPmF1dG9JbmNyZW1lbnQoKSwg
b2JqZWN0U3RvcmVJZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2gg
dG8gZnJvbnQtZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODA4NQorICAgIEFTU0VSVChvYmplY3RTdG9yZS0+aWQo
KSA9PSBBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlkIHx8IG9iamVjdFN0b3JlLT5pZCgpID09IG9i
amVjdFN0b3JlSWQpOwogICAgIG9iamVjdFN0b3JlLT5zZXRJZChvYmplY3RTdG9yZUlkKTsKICAg
ICB0cmFuc2FjdGlvbi0+ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCk7CiB9CkBAIC02MDYsMTQgKzYx
OSwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMoKQog
ICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgIFZlY3RvcjxJREJLZXlQYXRoPiBrZXlQYXRo
czsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwotICAgIG1fYmFja2luZ1N0
b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIGF1dG9JbmNy
ZW1lbnRGbGFncyk7CisgICAgVmVjdG9yPGludDY0X3Q+IG1heEluZGV4SWRzOworICAgIG1fYmFj
a2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIGF1
dG9JbmNyZW1lbnRGbGFncywgbWF4SW5kZXhJZHMpOwogCiAgICAgQVNTRVJUKG5hbWVzLnNpemUo
KSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoa2V5UGF0aHMuc2l6ZSgpID09IGlkcy5zaXpl
KCkpOwogICAgIEFTU0VSVChhdXRvSW5jcmVtZW50RmxhZ3Muc2l6ZSgpID09IGlkcy5zaXplKCkp
OworICAgIEFTU0VSVChtYXhJbmRleElkcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGlkcy5zaXplKCk7IGkrKykKLSAgICAgICAgbV9vYmplY3RT
dG9yZXMuc2V0KG5hbWVzW2ldLCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGUodGhp
cywgaWRzW2ldLCBuYW1lc1tpXSwga2V5UGF0aHNbaV0sIGF1dG9JbmNyZW1lbnRGbGFnc1tpXSkp
OworICAgICAgICBtX29iamVjdFN0b3Jlcy5zZXQobmFtZXNbaV0sIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNyZWF0ZSh0aGlzLCBpZHNbaV0sIG5hbWVzW2ldLCBrZXlQYXRoc1tpXSwgYXV0
b0luY3JlbWVudEZsYWdzW2ldLCBtYXhJbmRleElkc1tpXSkpOwogfQogCiB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnJlbW92ZU9iamVjdFN0b3JlRnJvbU1hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBwcnBPYmplY3RTdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEltcGwuaAppbmRleCA3MzQyZTcwNTRiNTI1ZGY5OTI1MWI1ZGZkODNmZDI1YTM4YTMxYWE3
Li4xOTk0YjVmOWI1NDE4ODk3NzMxN2ZmYjQ5MDE1ZTZmNDIyYjMxYTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW1wbC5oCkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICAvLyBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBj
b25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBh
dGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGlkLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24oRE9NU3RyaW5nTGlzdCogb2JqZWN0U3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtOTgsNiArOTksNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAgICAgU3RyaW5nIG1fdmVyc2lvbjsKICAgICBpbnQ2NF90IG1faW50VmVyc2lvbjsK
KyAgICBpbnQ2NF90IG1fbWF4T2JqZWN0U3RvcmVJZDsKIAogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUg
ZmFjdG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJl
dHRlciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlLmgKaW5kZXggY2JjYjlhNTljNTU2YWMwNWNhNzZiNGNiNzg4MGJiMzlmZWMwMTI2OC4uYTMy
YTk2YmNhMDU4YjBlODJmOTA3NWM1MzQxZDVkYzM5ODcwMjYxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKIAorICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21w
bGV0ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAg
c3RhdGljIGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlT2JqZWN0U3RvcmVJZCA9IC0xOworCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlT2JqZWN0U3RvcmUoaW50NjRfdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3
aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2Rl
JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCBlM2QzZTA0M2QyNDkwN2FiMzI0MDhlNTM4NTRj
Zjc1NmZhZTMwMmRhLi43ZjMyYjljZDJmZmUxNTNlN2VkYjAyZTI2Y2RhNGE2YWM1YjQ0YmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRl
eEJhY2tlbmRJbXBsLmNwcApAQCAtNTQsMjQgKzU0LDEzIEBAIElEQkluZGV4QmFja2VuZEltcGw6
OklEQkluZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJh
c2UsCiB7CiB9CiAKLUlEQkluZGV4QmFja2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoY29u
c3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UsIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwqIG9iamVjdFN0b3JlQmFja2VuZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQotICAgIDogbV9k
YXRhYmFzZShkYXRhYmFzZSkKLSAgICAsIG1fb2JqZWN0U3RvcmVCYWNrZW5kKG9iamVjdFN0b3Jl
QmFja2VuZCkKLSAgICAsIG1faWQoSW52YWxpZElkKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAg
LCBtX2tleVBhdGgoa2V5UGF0aCkKLSAgICAsIG1fdW5pcXVlKHVuaXF1ZSkKLSAgICAsIG1fbXVs
dGlFbnRyeShtdWx0aUVudHJ5KQotewotfQotCiBJREJJbmRleEJhY2tlbmRJbXBsOjp+SURCSW5k
ZXhCYWNrZW5kSW1wbCgpCiB7CiB9CiAKIElEQkluZGV4TWV0YWRhdGEgSURCSW5kZXhCYWNrZW5k
SW1wbDo6bWV0YWRhdGEoKSBjb25zdAogewotICAgIHJldHVybiBJREJJbmRleE1ldGFkYXRhKG1f
bmFtZSwgbV9rZXlQYXRoLCBtX3VuaXF1ZSwgbV9tdWx0aUVudHJ5KTsKKyAgICByZXR1cm4gSURC
SW5kZXhNZXRhZGF0YShtX25hbWUsIG1faWQsIG1fa2V5UGF0aCwgbV91bmlxdWUsIG1fbXVsdGlF
bnRyeSk7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdW50
eXBlZERpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXhCYWNrZW5kSW1wbC5oCmluZGV4IDE3
M2MzMmQwOGZmMTQzM2I5OTkwZTUwNTIyNTBjYzg5Y2E2ZGE4YjkuLjlmYmVjMTY5N2UyNzFjNzNh
MDJkNTYxNTY3NmM2M2NlNGQ5MTBiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleEJhY2tlbmRJbXBsLmgKQEAgLTQ3LDEwICs0Nyw2IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5kZXhCYWNr
ZW5kSW1wbChkYXRhYmFzZSwgb2JqZWN0U3RvcmVCYWNrZW5kLCBpZCwgbmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5KSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRh
YmFzZSwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCogb2JqZWN0U3RvcmVCYWNrZW5kLCBjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnkpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQklu
ZGV4QmFja2VuZEltcGwoZGF0YWJhc2UsIG9iamVjdFN0b3JlQmFja2VuZCwgbmFtZSwga2V5UGF0
aCwgdW5pcXVlLCBtdWx0aUVudHJ5KSk7Ci0gICAgfQogICAgIHZpcnR1YWwgfklEQkluZGV4QmFj
a2VuZEltcGwoKTsKIAogICAgIGludDY0X3QgaWQoKSBjb25zdApAQCAtNzYsNyArNzIsNiBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSURCSW5kZXhCYWNrZW5kSW1wbChjb25zdCBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCosIGludDY0X3QgaWQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29s
IG11bHRpRW50cnkpOwotICAgIElEQkluZGV4QmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCosIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KTsKIAog
ICAgIHN0YXRpYyB2b2lkIG9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6
Q3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw+KTsKICAgICBzdGF0aWMgdm9pZCBjb3VudEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
NTBlZGZkNDZjYzBjMmM5OTM0ZGM1ZDVjODlkMmVjNWFkN2VkYmRiYS4uOGMzMDViY2EzNzc4YWQ4
OTc3ZDFiNzZlZWM3YmRiMWViNDE5YjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTE5
NCw2ICsxOTQsMjQgQEAgc3RhdGljIGJvb2wgc2V0VXBNZXRhZGF0YShMZXZlbERCRGF0YWJhc2Uq
IGRiLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordGVtcGxh
dGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRpYyBpbnQ2NF90IGdldE1heE9iamVj
dFN0b3JlSWQoREJPclRyYW5zYWN0aW9uKiBkYiwgaW50NjRfdCBkYXRhYmFzZUlkKQoreworICAg
IGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhPYmplY3RTdG9yZUlkS2V5ID0gRGF0YWJhc2VNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok1heE9iamVjdFN0
b3JlSWQpOworICAgIHJldHVybiBnZXRNYXhPYmplY3RTdG9yZUlkKGRiLCBtYXhPYmplY3RTdG9y
ZUlkS2V5KTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERCT3JUcmFuc2FjdGlvbj4KK3N0YXRp
YyBpbnQ2NF90IGdldE1heE9iamVjdFN0b3JlSWQoREJPclRyYW5zYWN0aW9uKiBkYiwgY29uc3Qg
VmVjdG9yPGNoYXI+JiBtYXhPYmplY3RTdG9yZUlkS2V5KQoreworICAgIGludDY0X3QgbWF4T2Jq
ZWN0U3RvcmVJZCA9IC0xOworICAgIGlmICghZ2V0SW50KGRiLCBtYXhPYmplY3RTdG9yZUlkS2V5
LCBtYXhPYmplY3RTdG9yZUlkKSkKKyAgICAgICAgbWF4T2JqZWN0U3RvcmVJZCA9IDA7CisKKyAg
ICBBU1NFUlQobWF4T2JqZWN0U3RvcmVJZCA+PSAwKTsKKyAgICByZXR1cm4gbWF4T2JqZWN0U3Rv
cmVJZDsKK30KKwogSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9y
eSwgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IGRiKQogICAgIDogbV9pZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKQEAgLTI4Miw3ICszMDAsNyBAQCB2
b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmlu
Zz4mIGZvdW5kTmFtZXMpCiAgICAgfQogfQogCi1ib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5k
U3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElk
KQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZv
dW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJ
ZCkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNv
ZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIApAQCAtMzAwLDYgKzMxOCw4IEBAIGJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYKICAgICBpZiAoZm91bmRJbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6OkRlZmF1bHRJbnRWZXJzaW9uKQogICAgICAgICBmb3VuZEludFZlcnNpb24gPSBJREJEYXRh
YmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAKKyAgICBtYXhPYmplY3RTdG9yZUlkID0gZ2V0
TWF4T2JqZWN0U3RvcmVJZChtX2RiLmdldCgpLCBmb3VuZElkKTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0zNzUsNyArMzk1LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpk
ZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgaW50NjRfdCBkYXRhYmFzZUlk
OwogICAgIFN0cmluZyB2ZXJzaW9uOwogICAgIGludDY0X3QgaW50VmVyc2lvbjsKLSAgICBpZiAo
IWdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwgaW50VmVyc2lvbiwgZGF0YWJh
c2VJZCkpCisgICAgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkOworICAgIGlmICghZ2V0SURCRGF0
YWJhc2VNZXRhRGF0YShuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBkYXRhYmFzZUlkLCBtYXhP
YmplY3RTdG9yZUlkKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
RGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CkBAIC00MDUsNyArNDI2LDcgQEAgc3Rh
dGljIGJvb2wgY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShjb25zdCBMZXZlbERCSXRl
cmF0b3IqIGl0LCBjb25zdCBWZWMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJREJMZXZl
bERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0
b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywgVmVjdG9y
PElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3Jl
bWVudEZsYWdzKQordm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMo
aW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3Ry
aW5nPiYgZm91bmROYW1lcywgVmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0
b3I8Ym9vbD4mIGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLCBWZWN0b3I8aW50NjRfdD4mIGZvdW5k
TWF4SW5kZXhJZHMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRPYmplY3RTdG9yZXMiKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgMSwgMCk7CkBAIC00MTUsNiAr
NDM2LDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50
NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICBBU1NFUlQoZm91bmROYW1lcy5p
c0VtcHR5KCkpOwogICAgIEFTU0VSVChmb3VuZEtleVBhdGhzLmlzRW1wdHkoKSk7CiAgICAgQVNT
RVJUKGZvdW5kQXV0b0luY3JlbWVudEZsYWdzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGZvdW5k
TWF4SW5kZXhJZHMuaXNFbXB0eSgpKTsKIAogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0
ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBpdC0+c2VlayhzdGFydEtleSk7CkBAIC00
NjgsNiArNDkwLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9y
ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICAgICAgICAgIExPR19F
UlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorICAgICAgICBpbnQ2NF90IG1heEluZGV4SWQgPSBkZWNvZGVJbnQoaXQtPnZh
bHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7
IC8vIFtvcHRpb25hbF0gaGFzIGtleSBwYXRoIChpcyBub3QgbnVsbCkKICAgICAgICAgaWYgKGNo
ZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okhhc0tleVBhdGgpKSB7CkBAIC00OTgsMzEg
KzUyMSwzMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyhp
bnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICBmb3VuZE5hbWVzLmFw
cGVuZChvYmplY3RTdG9yZU5hbWUpOwogICAgICAgICBmb3VuZEtleVBhdGhzLmFwcGVuZChrZXlQ
YXRoKTsKICAgICAgICAgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuYXBwZW5kKGF1dG9JbmNyZW1l
bnQpOworICAgICAgICBmb3VuZE1heEluZGV4SWRzLmFwcGVuZChtYXhJbmRleElkKTsKICAgICB9
CiB9CiAKLXN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQoTGV2ZWxEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkKQorc3RhdGljIGJvb2wgc2V0TWF4
T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKIHsKLSAgICBpbnQ2NF90IG1heE9iamVj
dFN0b3JlSWQgPSAtMTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4T2JqZWN0U3RvcmVJZEtl
eSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFE
YXRhS2V5OjpNYXhPYmplY3RTdG9yZUlkKTsKLSAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwg
bWF4T2JqZWN0U3RvcmVJZEtleSwgbWF4T2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIG1heE9iamVj
dFN0b3JlSWQgPSAwOwotCi0gICAgQVNTRVJUKG1heE9iamVjdFN0b3JlSWQgPj0gMCk7CisgICAg
aW50NjRfdCBtYXhPYmplY3RTdG9yZUlkID0gZ2V0TWF4T2JqZWN0U3RvcmVJZCh0cmFuc2FjdGlv
biwgbWF4T2JqZWN0U3RvcmVJZEtleSk7CiAKLSAgICBpbnQ2NF90IG9iamVjdFN0b3JlSWQgPSBt
YXhPYmplY3RTdG9yZUlkICsgMTsKLSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4T2Jq
ZWN0U3RvcmVJZEtleSwgb2JqZWN0U3RvcmVJZCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAg
IHJldHVybiBvYmplY3RTdG9yZUlkOworICAgIGlmIChvYmplY3RTdG9yZUlkIDw9IG1heE9iamVj
dFN0b3JlSWQpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJQb3NzaWJsZSBjb3JydXB0aW9uOiBuZXcg
b2JqZWN0IHN0b3JlIGlkIGlzIHRvbyBzbWFsbC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gcHV0SW50KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5
LCBvYmplY3RTdG9yZUlkKTsKIH0KIAotYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwg
aW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
IGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgaW50NjRfdCYgYXNzaWduZWRPYmplY3RTdG9y
ZUlkKQorYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShJREJC
YWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVj
dFN0b3JlSWQpCiB7CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVPYmplY3RTdG9yZSIpOwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbGV2ZWxEQlRyYW5zYWN0
aW9uID0gVHJhbnNhY3Rpb246OmxldmVsREJUcmFuc2FjdGlvbkZyb20odHJhbnNhY3Rpb24pOwot
ICAgIGludDY0X3Qgb2JqZWN0U3RvcmVJZCA9IGdldE5ld09iamVjdFN0b3JlSWQobGV2ZWxEQlRy
YW5zYWN0aW9uLCBkYXRhYmFzZUlkKTsKLSAgICBpZiAob2JqZWN0U3RvcmVJZCA8IDApCisgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2Vt
ZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgwODUKKyAgICBpZiAob2JqZWN0U3RvcmVJZCA9PSBBdXRvZ2VuZXJhdGVPYmplY3RTdG9yZUlk
KQorICAgICAgICBvYmplY3RTdG9yZUlkID0gZ2V0TWF4T2JqZWN0U3RvcmVJZChsZXZlbERCVHJh
bnNhY3Rpb24sIGRhdGFiYXNlSWQpICsgMTsKKworICAgIGlmICghc2V0TWF4T2JqZWN0U3RvcmVJ
ZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjpOYW1lKTsKQEAgLTU4OSw2ICs2MTIsNyBAQCBib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJh
bnNhY3Rpb24qIHRyYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlz
IGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUK
ICAgICBhc3NpZ25lZE9iamVjdFN0b3JlSWQgPSBvYmplY3RTdG9yZUlkOwogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC05MTgsNyArOTQyLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpn
ZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbnQ2NF90IGdldE5ld0luZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCitz
dGF0aWMgaW50NjRfdCBnZXRNYXhJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIGlu
dDY0X3QgbWF4SW5kZXhJZCA9IC0xOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRleElk
S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpOwpAQCAtOTI2LDIwICs5
NTAsMzcgQEAgc3RhdGljIGludDY0X3QgZ2V0TmV3SW5kZXhJZChMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQKICAgICAgICAgbWF4SW5kZXhJZCA9IE1p
bmltdW1JbmRleElkOwogCiAgICAgQVNTRVJUKG1heEluZGV4SWQgPj0gMCk7CisgICAgcmV0dXJu
IG1heEluZGV4SWQ7Cit9CiAKLSAgICBpbnQ2NF90IGluZGV4SWQgPSBtYXhJbmRleElkICsgMTsK
LSAgICBpZiAoIXB1dEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgaW5kZXhJZCkpCi0g
ICAgICAgIHJldHVybiAtMTsKK3N0YXRpYyBib29sIHNldE1heEluZGV4SWQoTGV2ZWxEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKK3sKKyAgICBpbnQ2NF90IG1heEluZGV4SWQgPSAtMTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjpNYXhJbmRleElkKTsKKyAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbWF4SW5k
ZXhJZEtleSwgbWF4SW5kZXhJZCkpCisgICAgICAgIG1heEluZGV4SWQgPSBNaW5pbXVtSW5kZXhJ
ZDsKIAotICAgIHJldHVybiBpbmRleElkOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVu
IHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgaWYgKGluZGV4SWQgPT0g
SURCQmFja2luZ1N0b3JlOjpBdXRvZ2VuZXJhdGVJbmRleElkKQorICAgICAgICBpbmRleElkID0g
bWF4SW5kZXhJZCArIDE7CisKKyAgICBpZiAoaW5kZXhJZCA8PSBtYXhJbmRleElkKSB7CisgICAg
ICAgIExPR19FUlJPUigiUG9zc2libGUgY29ycnVwdGlvbjogbmV3IGluZGV4IGlkIGlzIHRvbyBz
bWFsbC4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBwdXRJ
bnQodHJhbnNhY3Rpb24sIG1heEluZGV4SWRLZXksIGluZGV4SWQpOwogfQogCi1ib29sIElEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4KElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGlz
VW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgaW5kZXhJZCkKK2Jvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBpc1VuaXF1ZSwgYm9vbCBpc011bHRpRW50cnksIGludDY0X3QmIGFzc2ln
bmVkSW5kZXhJZCkKIHsKICAgICBJREJfVFJBQ0UoIklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNy
ZWF0ZUluZGV4Iik7CiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBsZXZlbERCVHJhbnNhY3Rpb24g
PSBUcmFuc2FjdGlvbjo6bGV2ZWxEQlRyYW5zYWN0aW9uRnJvbSh0cmFuc2FjdGlvbik7Ci0gICAg
aW5kZXhJZCA9IGdldE5ld0luZGV4SWQobGV2ZWxEQlRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkKTsKLSAgICBpZiAoaW5kZXhJZCA8IDApCisgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIHdoZW4gc3dpdGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRl
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKKyAgICBpZiAo
aW5kZXhJZCA9PSBBdXRvZ2VuZXJhdGVJbmRleElkKQorICAgICAgICBpbmRleElkID0gZ2V0TWF4
SW5kZXhJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpICsg
MTsKKworICAgIGlmICghc2V0TWF4SW5kZXhJZChsZXZlbERCVHJhbnNhY3Rpb24sIGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpOYW1l
KTsKQEAgLTk3MSw2ICsxMDEyLDkgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVh
dGVJbmRleChJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiB0cmFuc2FjdGkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB3aGVuIHN3
aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgYXNzaWduZWRJbmRleElkID0g
aW5kZXhJZDsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKaW5kZXgg
NzdjYjA2ZTc4NWFmODA5ODA5N2I5ZTkyYzg2ZmUxZjJhN2VkZjY2OS4uZWVhMjNkMjk0ZjBlOTQw
Njc1MTg3NzIzM2EwMmVmZDM3NjRmMTEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaApAQCAtNDUsMTQg
KzQ1LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2luZ1N0b3JlKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91
bmROYW1lcyk7Ci0gICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3Qg
U3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJz
aW9uLCBpbnQ2NF90JiBmb3VuZElkKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VN
ZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5kSWQsIGludDY0X3QmIG1heE9iamVjdFN0
b3JlSWQpOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24s
IGludDY0X3QmIHJvd0lkKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3Qg
U3RyaW5nJiB2ZXJzaW9uKTsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRW
ZXJzaW9uKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBpbnQ2
NF90IGludFZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShjb25zdCBT
dHJpbmcmIG5hbWUpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3JlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxTdHJpbmc+JiBm
b3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZlY3Rvcjxib29s
PiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpOwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmpl
Y3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1l
bnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCk7CisgICAgdmlydHVhbCB2b2lkIGdl
dE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJ
ZHMsIFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5k
S2V5UGF0aHMsIFZlY3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MsIFZlY3Rvcjxp
bnQ2NF90PiYgZm91bmRNYXhJbmRleElkcyk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVj
dFN0b3JlKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQp
OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShJREJCYWNraW5nU3RvcmU6OlRy
YW5zYWN0aW9uKiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IGNyZWF0
ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCk7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0T2JqZWN0
U3RvcmVSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkmKTsKQEAgLTY2LDcgKzY2
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBmb3JFYWNoT2JqZWN0U3RvcmVSZWNvcmQo
SURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJlY29yZENhbGxiYWNrJik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJvb2w+JiBmb3Vu
ZFVuaXF1ZUZsYWdzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kTXVsdGlFbnRyeUZsYWdzKTsKLSAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwg
aW50NjRfdCYgaW5kZXhJZCk7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KElEQkJhY2tp
bmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGlzVW5pcXVlLCBib29sIGlzTXVsdGlFbnRyeSwgaW50NjRfdCYgYXNzaWdu
ZWRJbmRleElkKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoSURCQmFja2luZ1N0b3Jl
OjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQpOwogICAgIHZpcnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNv
cmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJ
bmRleERhdGFGb3JSZWNvcmQoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKaW5kZXggYjNjYmNhMWIyNjQ5MDYyYTRjY2YwNzgx
YjNjZjFjODAzNGY5ZjYwNy4uMDk2Zjg5YWZhOTNkMTFmOWI4YmI4ZmVjYmU5N2Y5MWRjMjE1NDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5o
CkBAIC01MiwxNiArNTIsMjAgQEAgc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewogICAgICAg
ICA6IGludFZlcnNpb24oTm9JbnRWZXJzaW9uKQogICAgIHsKICAgICB9Ci0gICAgSURCRGF0YWJh
c2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50
NjRfdCBpbnRWZXJzaW9uKQorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lv
biwgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkKQogICAgICAgICA6IG5hbWUobmFtZSkKKyAgICAg
ICAgLCBpZChpZCkKICAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pCiAgICAgICAgICwgaW50VmVy
c2lvbihpbnRWZXJzaW9uKQorICAgICAgICAsIG1heE9iamVjdFN0b3JlSWQobWF4T2JqZWN0U3Rv
cmVJZCkKICAgICB7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CisgICAgaW50NjRfdCBpZDsK
ICAgICBTdHJpbmcgdmVyc2lvbjsKICAgICBpbnQ2NF90IGludFZlcnNpb247CisgICAgaW50NjRf
dCBtYXhPYmplY3RTdG9yZUlkOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YT4gT2JqZWN0U3RvcmVNYXA7CiAgICAgT2JqZWN0U3RvcmVNYXAgb2Jq
ZWN0U3RvcmVzOwpAQCAtNjksMTMgKzczLDE4IEBAIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRh
IHsKIAogc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgewogICAgIElEQk9iamVjdFN0b3Jl
TWV0YWRhdGEoKSB7IH0KLSAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorICAg
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBj
b25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4
SW5kZXhJZCkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwga2V5UGF0aChrZXlQYXRo
KQotICAgICAgICAsIGF1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkgeyB9CisgICAgICAgICwg
YXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQorICAgICAgICAsIG1heEluZGV4SWQobWF4SW5k
ZXhJZCkKKyAgICB7CisgICAgfQogICAgIFN0cmluZyBuYW1lOworICAgIGludDY0X3QgaWQ7CiAg
ICAgSURCS2V5UGF0aCBrZXlQYXRoOwogICAgIGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICBpbnQ2
NF90IG1heEluZGV4SWQ7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJJbmRleE1l
dGFkYXRhPiBJbmRleE1hcDsKICAgICBJbmRleE1hcCBpbmRleGVzOwpAQCAtODMsMTIgKzkyLDE0
IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIHsKIAogc3RydWN0IElEQkluZGV4TWV0
YWRhdGEgewogICAgIElEQkluZGV4TWV0YWRhdGEoKSB7IH0KLSAgICBJREJJbmRleE1ldGFkYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlx
dWUsIGJvb2wgbXVsdGlFbnRyeSkKKyAgICBJREJJbmRleE1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgaW50NjRfdCBpZCwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IGJvb2wgbXVsdGlFbnRyeSkKICAgICAgICAgOiBuYW1lKG5hbWUpCisgICAgICAgICwgaWQoaWQp
CiAgICAgICAgICwga2V5UGF0aChrZXlQYXRoKQogICAgICAgICAsIHVuaXF1ZSh1bmlxdWUpCiAg
ICAgICAgICwgbXVsdGlFbnRyeShtdWx0aUVudHJ5KSB7IH0KICAgICBTdHJpbmcgbmFtZTsKKyAg
ICBpbnQ2NF90IGlkOwogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBib29sIHVuaXF1ZTsK
ICAgICBib29sIG11bHRpRW50cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggNGNiZTYzZDExNWUwYWEwNDRiNjBmOTRl
NTRiZmVlYWRjOTRlN2JkYy4uMjE3N2Y3ZWEwZDdkNGJiNmRjNGQwY2FkMjdlZjNhYmUyOGVjZTY0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmNwcApAQCAtNDAxLDEyICs0MDEsMTUgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURC
T2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgaW50NjRfdCBpbmRleElkID0gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlOjpBdXRvZ2VuZXJhdGVJbmRleElkOwogICAgIFJlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4QmFja2VuZCA9IG1fYmFja2VuZC0+Y3Jl
YXRlSW5kZXgobmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCBtX3RyYW5zYWN0aW9u
LT5iYWNrZW5kKCksIGVjKTsKICAgICBBU1NFUlQoIWluZGV4QmFja2VuZCAhPSAhZWMpOyAvLyBJ
ZiB3ZSBkaWRuJ3QgZ2V0IGFuIGluZGV4LCB3ZSBzaG91bGQgaGF2ZSBnb3R0ZW4gYW4gZXhjZXB0
aW9uIGNvZGUuIEFuZCB2aWNlIHZlcnNhLgogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBJREJJbmRleE1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGtleVBhdGgsIHVuaXF1ZSwg
bXVsdGlFbnRyeSk7CisgICAgKyttX21ldGFkYXRhLm1heEluZGV4SWQ7CisKKyAgICBJREJJbmRl
eE1ldGFkYXRhIG1ldGFkYXRhKG5hbWUsIGluZGV4SWQsIGtleVBhdGgsIHVuaXF1ZSwgbXVsdGlF
bnRyeSk7CiAgICAgUmVmUHRyPElEQkluZGV4PiBpbmRleCA9IElEQkluZGV4OjpjcmVhdGUobWV0
YWRhdGEsIGluZGV4QmFja2VuZC5yZWxlYXNlKCksIHRoaXMsIG1fdHJhbnNhY3Rpb24uZ2V0KCkp
OwogICAgIG1faW5kZXhNYXAuc2V0KG5hbWUsIGluZGV4KTsKICAgICBtX21ldGFkYXRhLmluZGV4
ZXMuc2V0KG5hbWUsIG1ldGFkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXgg
Nzg5OTkyYWI2ZTVjMzRkZjQ1Y2IyOWE2NTVkNmM5YTY3NTU1MjFhNS4uMWM5NGM4YTk2MWZjMmRj
NWE4NGNlYzM5ZjgzMDkxNjgxOWY1MWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAK
QEAgLTUxLDI4ICs1MSwyMSBAQCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjp+SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbCgpCiB7CiB9CiAKLUlEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwoY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0
YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYg
a2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQorSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBk
YXRhYmFzZSwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRo
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4SW5kZXhJZCkKICAgICA6
IG1fZGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgLCBtX2tleVBhdGgoa2V5UGF0aCkKICAgICAsIG1fYXV0b0luY3JlbWVudChhdXRvSW5j
cmVtZW50KQorICAgICwgbV9tYXhJbmRleElkKG1heEluZGV4SWQpCiB7Ci0gICAgbG9hZEluZGV4
ZXMoKTsKLX0KLQotSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbChjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
Ci0gICAgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKQotICAgICwgbV9pZChJbnZhbGlkSWQpCi0gICAg
LCBtX25hbWUobmFtZSkKLSAgICAsIG1fa2V5UGF0aChrZXlQYXRoKQotICAgICwgbV9hdXRvSW5j
cmVtZW50KGF1dG9JbmNyZW1lbnQpCi17CisgICAgaWYgKG1faWQgIT0gQXV0b2dlbmVyYXRlSW5k
ZXhJZCkKKyAgICAgICAgbG9hZEluZGV4ZXMoKTsKIH0KIAogSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0CiB7Ci0gICAgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1fa2V5UGF0aCwgbV9hdXRvSW5j
cmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1ldGFkYXRhKG1fbmFtZSwgbV9p
ZCwgbV9rZXlQYXRoLCBtX2F1dG9JbmNyZW1lbnQsIG1fbWF4SW5kZXhJZCk7CiAgICAgZm9yIChJ
bmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2luZGV4ZXMuYmVnaW4oKTsgaXQgIT0gbV9p
bmRleGVzLmVuZCgpOyArK2l0KQogICAgICAgICBtZXRhZGF0YS5pbmRleGVzLnNldChpdC0+Zmly
c3QsIGl0LT5zZWNvbmQtPm1ldGFkYXRhKCkpOwogICAgIHJldHVybiBtZXRhZGF0YTsKQEAgLTQz
NiwxMyArNDI5LDIxIEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXJJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0CiAKIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJ
bmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVCghbV9pbmRl
eGVzLmNvbnRhaW5zKG5hbWUpKTsKKyAgICByZXR1cm4gY3JlYXRlSW5kZXgoQXV0b2dlbmVyYXRl
SW5kZXhJZCwgbmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5LCB0cmFuc2FjdGlvblB0
ciwgZWMpOworfQorCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRlSW5kZXgoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0
aUVudHJ5LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2luZGV4ZXMu
Y29udGFpbnMobmFtZSksICJJbmRleGVzIGFscmVhZHkgY29udGFpbiAlcyIsIG5hbWUudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSBJREJJ
bmRleEJhY2tlbmRJbXBsOjpjcmVhdGUobV9kYXRhYmFzZSwgdGhpcywgbmFtZSwga2V5UGF0aCwg
dW5pcXVlLCBtdWx0aUVudHJ5KTsKKyAgICBDT01QSUxFX0FTU0VSVChBdXRvZ2VuZXJhdGVJbmRl
eElkID09IElEQkJhY2tpbmdTdG9yZTo6QXV0b2dlbmVyYXRlSW5kZXhJZCwgQXV0b2dlbmVyYXRl
SW5kZXhJZE1hdGNoZXMpOworICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9
IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNlLCB0aGlzLCBpZCwgbmFtZSwg
a2V5UGF0aCwgdW5pcXVlLCBtdWx0aUVudHJ5KTsKICAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9
PSBuYW1lKTsKIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2Fj
dGlvbiA9IElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwog
ICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSk7CisgICAgQVNTRVJUKGlkID09IEF1dG9nZW5lcmF0ZUluZGV4SWQgfHwgaWQgPiBt
X21heEluZGV4SWQpOworICAgIG1fbWF4SW5kZXhJZCA9IGlkOwogCiAgICAgUmVmUHRyPElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBpZiAoIXRyYW5z
YWN0aW9uLT5zY2hlZHVsZVRhc2soCkBAIC00NTksMTEgKzQ2MCwxMyBAQCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y3JlYXRl
SW5kZXgoY29ucwogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleElu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+IHRyYW5zYWN0aW9u
KQogewogICAgIGludDY0X3QgaWQ7Ci0gICAgaWYgKCFvYmplY3RTdG9yZS0+YmFja2luZ1N0b3Jl
KCktPmNyZWF0ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBv
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBvYmplY3RTdG9yZS0+aWQoKSwgaW5kZXgtPm5hbWUo
KSwgaW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+bXVsdGlFbnRyeSgp
LCBpZCkpIHsKKyAgICBpZiAoIW9iamVjdFN0b3JlLT5iYWNraW5nU3RvcmUoKS0+Y3JlYXRlSW5k
ZXgodHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG9iamVjdFN0b3JlLT5k
YXRhYmFzZUlkKCksIG9iamVjdFN0b3JlLT5pZCgpLCBpbmRleC0+aWQoKSwgaW5kZXgtPm5hbWUo
KSwgaW5kZXgtPmtleVBhdGgoKSwgaW5kZXgtPnVuaXF1ZSgpLCBpbmRleC0+bXVsdGlFbnRyeSgp
LCBpZCkpIHsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiBzd2l0Y2ggdG8gZnJvbnQt
ZW5kIElEIG1hbmFnZW1lbnQgaXMgY29tcGxldGU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05ODA4NQorICAgIEFTU0VSVChpbmRleC0+aWQoKSA9PSBBdXRvZ2VuZXJh
dGVJbmRleElkIHx8IGluZGV4LT5pZCgpID09IGlkKTsKICAgICBpbmRleC0+c2V0SWQoaWQpOwog
CiAgICAgdHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFza0V2ZW50cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbC5oCmluZGV4IGJkOTViYmViZTJmN2UyYTJiZDI5MzEyMGJmZjgxMjdlMGNiYjJmZTcu
LmI1ZGFjYWI5ZmM0Njk2YzM5ZjhhNmNiZGUwYTRlMjVjMDU0Yzc3YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsLmgKQEAgLTQ3LDEzICs0Nyw5IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhOwogCiBjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsIDogcHVibGljIElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGwqIGRhdGFiYXNlLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElE
QktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VC
YWNrZW5kSW1wbCogZGF0YWJhc2UsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBpbnQ2NF90IG1heElu
ZGV4SWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGwoZGF0YWJhc2UsIGlkLCBuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50KSk7
Ci0gICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKiBkYXRhYmFzZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGwoZGF0YWJhc2UsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGRhdGFiYXNlLCBp
ZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgbWF4SW5kZXhJZCkpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKCk7CiAKQEAgLTczLDcgKzY5LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwg
RXhjZXB0aW9uQ29kZSYpOwogCisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dpdGNo
IHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gY3JlYXRlSW5kZXgoaW50NjRfdCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVs
dGlFbnRyeSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFBy
aW1hcnlLZXksIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4m
ICwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEluZGV4ZXNSZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtOTYs
OCArOTQsNyBAQCBwdWJsaWM6CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhYmFzZS0+aWQoKTsgfQogICAgIAogcHJpdmF0ZToKLSAgICBJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsKGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0lu
Y3JlbWVudCk7Ci0gICAgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChjb25zdCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9v
bCBhdXRvSW5jcmVtZW50KTsKKyAgICBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKGNvbnN0IElE
QkRhdGFiYXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIGludDY0X3QgbWF4SW5kZXhJZCk7
CiAKICAgICB2b2lkIGxvYWRJbmRleGVzKCk7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+IGdlbmVy
YXRlS2V5KFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4pOwpAQCAtMTIyLDYg
KzExOSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBJREJLZXlQYXRoIG1f
a2V5UGF0aDsKICAgICBib29sIG1fYXV0b0luY3JlbWVudDsKKyAgICBpbnQ2NF90IG1fbWF4SW5k
ZXhJZDsKIAogICAgIEluZGV4TWFwIG1faW5kZXhlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZS5oCmluZGV4IDAxNzliNmE4OGFmNjI2YWRiMmVjYzRhYjIwNDEwYWQwY2EzZmFm
MmYuLjJlYjVhODYwODVkNzQ4MDY0OThmYmY1NTk4ZmM5ZGFiYWY4NGY0YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZS5oCkBAIC01Niw2ICs1NiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIEFkZE9ubHksCiAgICAgICAgIEN1cnNvclVwZGF0ZQogICAgIH07CisKKyAgICBzdGF0aWMg
Y29uc3QgaW50NjRfdCBNaW5pbXVtSW5kZXhJZCA9IDMwOworICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyB3aGVuIHN3aXRjaCB0byBmcm9udC1lbmQgSUQgbWFuYWdlbWVudCBpcyBjb21wbGV0ZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MDg1CisgICAgc3RhdGlj
IGNvbnN0IGludDY0X3QgQXV0b2dlbmVyYXRlSW5kZXhJZCA9IC0xOworCiAgICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHV0
V2l0aEluZGV4S2V5cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxJbmRleEtleXM+JiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKQEAgLTYzLDYgKzY4LDggQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlu
ZGV4KGludDY0X3QsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wg
dW5pcXVlLCBib29sIG11bHRpRW50cnksIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHdoZW4gc3dp
dGNoIHRvIGZyb250LWVuZCBJRCBtYW5hZ2VtZW50IGlzIGNvbXBsZXRlOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwODUKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1hcnlLZXksIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNS
ZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSopID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJEYXRhYmFz
ZS5oCmluZGV4IDgzYjlhNDI1Zjg0N2ZhOWQ4ODE3MzdjMzA5ZWE4YTI4MmFiNGVmMjkuLjE2Y2Zi
ZDg1ZGI0NjEzYjRkZjNmZmQ4Y2ZhYWFmMTQ2OTBmY2U0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRGF0YWJhc2UuaApAQCAtNTUsNiArNTUsMTEgQEAgcHVi
bGljOgogICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KKyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVPYmplY3RT
dG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYsIGNvbnN0IFdlYklEQktleVBhdGgmLCBi
b29sLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKQorICAgIHsK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRp
b25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmVyc2lvbihjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICAvLyBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBXZWJJREJUcmFuc2Fj
dGlvbiB0byB0aGUgY2FsbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQk1ldGFkYXRhLmgKaW5kZXggMWYyZTllYWQ0NWYyMjNhNjlhNjYwY2M3Y2M2Nzg0MTAwMmYx
ZmY2ZS4uOTU3ZTA4MmJiMGZiMjYyOTdlNDVkNWQ4ZmY3OGZhODc0ZjBmZDI4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCTWV0YWRhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJNZXRhZGF0YS5oCkBAIC01MCw2ICs1
MCw4IEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAgICAgLy8gc2V0VmVyc2lvbiwgV2ViU3Ry
aW5nIHZlcnNpb24gY2FuIGJlIHJlbW92ZWQuCiAgICAgV2ViU3RyaW5nIHZlcnNpb247CiAgICAg
bG9uZyBsb25nIGludFZlcnNpb247CisgICAgbG9uZyBsb25nIGlkOworICAgIGxvbmcgbG9uZyBt
YXhPYmplY3RTdG9yZUlkOwogICAgIFdlYlZlY3RvcjxPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmVz
OwogICAgIFdlYklEQk1ldGFkYXRhKCkKICAgICAgICAgOiBpbnRWZXJzaW9uKE5vSW50VmVyc2lv
bikgeyB9CkBAIC01OCw2ICs2MCw4IEBAIHN0cnVjdCBXZWJJREJNZXRhZGF0YSB7CiAgICAgICAg
IFdlYlN0cmluZyBuYW1lOwogICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgICAg
IGJvb2wgYXV0b0luY3JlbWVudDsKKyAgICAgICAgbG9uZyBsb25nIGlkOworICAgICAgICBsb25n
IGxvbmcgbWF4SW5kZXhJZDsKICAgICAgICAgV2ViVmVjdG9yPEluZGV4PiBpbmRleGVzOwogICAg
ICAgICBPYmplY3RTdG9yZSgpCiAgICAgICAgICAgICA6IGtleVBhdGgoV2ViSURCS2V5UGF0aDo6
Y3JlYXRlTnVsbCgpKQpAQCAtNjksNiArNzMsNyBAQCBzdHJ1Y3QgV2ViSURCTWV0YWRhdGEgewog
ICAgICAgICBXZWJJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgICAgIGJvb2wgdW5pcXVlOwogICAg
ICAgICBib29sIG11bHRpRW50cnk7CisgICAgICAgIGxvbmcgbG9uZyBpZDsKICAgICAgICAgSW5k
ZXgoKQogICAgICAgICAgICAgOiBrZXlQYXRoKFdlYklEQktleVBhdGg6OmNyZWF0ZU51bGwoKSkK
ICAgICAgICAgICAgICwgdW5pcXVlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCT2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQk9iamVjdFN0b3JlLmgKaW5kZXggYTJiODdkYTgxNjFlODgzZjA0NDI5
YjdlMjMwMjVlMWFiMjA4YzdjMS4uY2EwMTAzY2RhNmZjM2YzNzJjYWRjYWFiN2NkNmNlMzA1YTIy
N2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCT2Jq
ZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJPYmpl
Y3RTdG9yZS5oCkBAIC02Myw2ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHZpcnR1YWwg
V2ViSURCSW5kZXgqIGNyZWF0ZUluZGV4KGxvbmcgbG9uZywgY29uc3QgV2ViU3RyaW5nJiwgY29u
c3QgV2ViSURCS2V5UGF0aCYsIGJvb2wsIGJvb2wsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpCisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5k
ZXhLZXlzKGNvbnN0IFdlYklEQktleSYsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiwgY29u
c3QgV2ViVmVjdG9yPFdlYkluZGV4S2V5cz4mLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4
ZXNSZWFkeShjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYsIGNvbnN0IFdlYklEQlRyYW5zYWN0
aW9uJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH07CiAgICAgLy8gVHJhbnNmZXJz
IG93bmVyc2hpcCBvZiB0aGUgV2ViSURCSW5kZXggdG8gdGhlIGNhbGxlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcApp
bmRleCA1MDFjZTYxZmI1OTU2MjY2YjBjM2JmMWI0YzAyYWVmNmNkYTAwODA2Li44YjFmYmM0MDVj
YWExOTA5MGVjMDMwMDQ4Mjg1NzQ2NGMwZjRjNDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuY3BwCkBAIC02Niw2ICs2
NiwxNyBAQCBJREJEYXRhYmFzZU1ldGFkYXRhIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjptZXRh
ZGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fd2ViSURCRGF0YWJhc2UtPm1ldGFkYXRhKCk7CiB9
CiAKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8g
YmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAg
Ly8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0
cy4KKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0
YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAg
IE93blB0cjxXZWJJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUgPSBhZG9wdFB0cihtX3dlYklE
QkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShpZCwgbmFtZSwga2V5UGF0aCwgYXV0b0luY3Jl
bWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKSk7Cisg
ICAgaWYgKCFvYmplY3RTdG9yZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUucmVsZWFzZSgpKTsKK30K
KwogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNl
QmFja2VuZFByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oCmluZGV4IDc5NTYx
MGFhNjU3MmRjYTQ2Y2MyNjRkYjViMDhiZDE3OGMxYzU2NTAuLmVhNjkzYWRhMTdlM2E1MWVjYjE5
YTA5ZGEzNDZiN2RjMWZjYTEwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW50ZXJmYWNlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9u
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
dHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCmlu
ZGV4IGI1M2ViMmMzYTQ2ODZlNmQzYWU0MjZkYTMxNGIyNjc1YTIyZjIwZjAuLjJiOWI0NGE3YTFm
ZmNkZDgwMjA3NWVhMGQzOGU2YjdjMDcxNzQ4YTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5jcHAKQEAgLTEw
Myw2ICsxMDMsMTcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y2xlYXIoUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHIKICAgICBtX3dlYklEQk9iamVj
dFN0b3JlLT5jbGVhcihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCAqdHJhbnNh
Y3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOwogfQogCitQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNy
ZWF0ZUluZGV4KGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0
aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVt
ZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgT3duUHRyPFdlYklE
QkluZGV4PiBpbmRleCA9IGFkb3B0UHRyKG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4
KGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRpRW50cnksICp0cmFuc2FjdGlvblByb3h5
LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYykpOworICAgIGlmICghaW5kZXgpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBJREJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKGluZGV4
LnJlbGVhc2UoKSk7Cit9CisKIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBJ
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5
LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVk
IHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmgKaW5kZXggNzRjYjBiZDU3MDNiNjE1MjVkYTVmZDVjNDgyZTVlNmVhNDQ4Y2Ri
MS4uODQ3MGMxYWQ5MDViYzE1NmZkOWYzYjhmYzE0ZWZmMWU0MTFlOGJlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eS5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChpbnQ2NF90
IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29s
IHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRp
RW50cnksIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5kZXhLZXlzKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiBwcnBQcmltYXJ5S2V5LCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxJbmRleEtleXM+JiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEluZGV4ZXNS
ZWFkeShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRh
dGFiYXNlSW1wbC5jcHAKaW5kZXggYjU4Y2Q1MTExNzc2ODg0Zjk1NjAxZTllZTc5ZTBkODI4OTNj
NjJkMC4uYWVmZWIwZmFmNmMxYjNkNGM2MTJmNzU2MjZiZTkxZDIyOTViZmY1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCkBAIC02
MCw2ICs2MCwxNiBAQCBXZWJJREJNZXRhZGF0YSBXZWJJREJEYXRhYmFzZUltcGw6Om1ldGFkYXRh
KCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhYmFzZUJhY2tlbmQtPm1ldGFkYXRhKCk7CiB9CiAK
K1dlYklEQk9iamVjdFN0b3JlKiBXZWJJREJEYXRhYmFzZUltcGw6OmNyZWF0ZU9iamVjdFN0b3Jl
KGxvbmcgbG9uZyBpZCwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJLZXlQYXRo
JiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiB0
cmFuc2FjdGlvbiwgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2RhdGFiYXNlQmFja2VuZC0+
Y3JlYXRlT2JqZWN0U3RvcmUoaWQsIG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIHRyYW5z
YWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CisgICAgaWYg
KCFvYmplY3RTdG9yZSkgeworICAgICAgICBBU1NFUlQoZWMpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgcmV0dXJuIG5ldyBXZWJJREJPYmplY3RTdG9yZUltcGwob2JqZWN0U3RvcmUp
OworfQorCiBXZWJJREJPYmplY3RTdG9yZSogV2ViSURCRGF0YWJhc2VJbXBsOjpjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQktleVBhdGgmIGtleVBh
dGgsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlPiBvYmplY3RTdG9yZSA9IG1fZGF0YWJhc2VCYWNrZW5kLT5jcmVhdGVP
YmplY3RTdG9yZShuYW1lLCBrZXlQYXRoLCBhdXRvSW5jcmVtZW50LCB0cmFuc2FjdGlvbi5nZXRJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuaAppbmRleCA1MThmZmNkYjk3OTgwMDVl
NGM4OGMwNzg4ZTA0ZWFlNTNmNzZjOGM3Li44NDk5NjljYjRiYTI4ZjA1OGE1MTUyZjkzODg5MjNm
YWFmMWNhYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJE
YXRhYmFzZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRh
YmFzZUltcGwuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJJREJN
ZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBXZWJJREJPYmplY3RTdG9y
ZSogY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJJREJL
ZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIFdlYklEQk9iamVjdFN0b3JlKiBjcmVhdGVP
YmplY3RTdG9yZShsb25nIGxvbmcsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURC
S2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBX
ZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNv
bnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mLCBXZWJFeGNlcHRp
b25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgV2ViU3RyaW5nJiB2
ZXJzaW9uLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCBXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24oY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYg
bmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk1ldGFkYXRhLmNwcAppbmRleCBiNDRhOWU5Zjhi
OTczZmRhZTI4NzAxYzNlZTcxYzY4MWI3MzE0NmFlLi5iOGUzZGIzYTQwMTdmYTc1MzBmOTI2ZDBm
ZmNkOGQyZTFlODJkNzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
TWV0YWRhdGEuY3BwCkBAIC00Myw2ICs0Myw3IEBAIFdlYklEQk1ldGFkYXRhOjpXZWJJREJNZXRh
ZGF0YShjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICB2
ZXJzaW9uID0gbWV0YWRhdGEudmVyc2lvbjsKICAgICBpbnRWZXJzaW9uID0gbWV0YWRhdGEuaW50
VmVyc2lvbjsKICAgICBvYmplY3RTdG9yZXMgPSBXZWJWZWN0b3I8T2JqZWN0U3RvcmU+KHN0YXRp
Y19jYXN0PHNpemVfdD4obWV0YWRhdGEub2JqZWN0U3RvcmVzLnNpemUoKSkpOworICAgIG1heE9i
amVjdFN0b3JlSWQgPSBtZXRhZGF0YS5tYXhPYmplY3RTdG9yZUlkOwogCiAgICAgc2l6ZV90IGkg
PSAwOwogICAgIGZvciAoSURCRGF0YWJhc2VNZXRhZGF0YTo6T2JqZWN0U3RvcmVNYXA6OmNvbnN0
X2l0ZXJhdG9yIHN0b3JlSXRlcmF0b3IgPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuYmVnaW4oKTsg
c3RvcmVJdGVyYXRvciAhPSBtZXRhZGF0YS5vYmplY3RTdG9yZXMuZW5kKCk7ICsrc3RvcmVJdGVy
YXRvcikgewpAQCAtNTIsNiArNTMsNyBAQCBXZWJJREJNZXRhZGF0YTo6V2ViSURCTWV0YWRhdGEo
Y29uc3QgV2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgICAgIHdl
Yk9iamVjdFN0b3JlLmtleVBhdGggPSBvYmplY3RTdG9yZS5rZXlQYXRoOwogICAgICAgICB3ZWJP
YmplY3RTdG9yZS5hdXRvSW5jcmVtZW50ID0gb2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudDsKICAg
ICAgICAgd2ViT2JqZWN0U3RvcmUuaW5kZXhlcyA9IFdlYlZlY3RvcjxJbmRleD4oc3RhdGljX2Nh
c3Q8c2l6ZV90PihvYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKSkpOworICAgICAgICB3ZWJPYmpl
Y3RTdG9yZS5tYXhJbmRleElkID0gb2JqZWN0U3RvcmUubWF4SW5kZXhJZDsKIAogICAgICAgICBz
aXplX3QgaiA9IDA7CiAgICAgICAgIGZvciAoSURCT2JqZWN0U3RvcmVNZXRhZGF0YTo6SW5kZXhN
YXA6OmNvbnN0X2l0ZXJhdG9yIGluZGV4SXRlcmF0b3IgPSBvYmplY3RTdG9yZS5pbmRleGVzLmJl
Z2luKCk7IGluZGV4SXRlcmF0b3IgIT0gb2JqZWN0U3RvcmUuaW5kZXhlcy5lbmQoKTsgKytpbmRl
eEl0ZXJhdG9yKSB7CkBAIC02OSwxNCArNzEsMTQgQEAgV2ViSURCTWV0YWRhdGE6OldlYklEQk1l
dGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQogCiBX
ZWJJREJNZXRhZGF0YTo6b3BlcmF0b3IgSURCRGF0YWJhc2VNZXRhZGF0YSgpIGNvbnN0CiB7Ci0g
ICAgSURCRGF0YWJhc2VNZXRhZGF0YSBkYihuYW1lLCB2ZXJzaW9uLCBpbnRWZXJzaW9uKTsKKyAg
ICBJREJEYXRhYmFzZU1ldGFkYXRhIGRiKG5hbWUsIGlkLCB2ZXJzaW9uLCBpbnRWZXJzaW9uLCBt
YXhPYmplY3RTdG9yZUlkKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFN0b3Jl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBPYmplY3RTdG9yZSB3ZWJPYmplY3RTdG9y
ZSA9IG9iamVjdFN0b3Jlc1tpXTsKLSAgICAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBvYmpl
Y3RTdG9yZSh3ZWJPYmplY3RTdG9yZS5uYW1lLCB3ZWJPYmplY3RTdG9yZS5rZXlQYXRoLCB3ZWJP
YmplY3RTdG9yZS5hdXRvSW5jcmVtZW50KTsKKyAgICAgICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSBvYmplY3RTdG9yZSh3ZWJPYmplY3RTdG9yZS5uYW1lLCB3ZWJPYmplY3RTdG9yZS5pZCwgd2Vi
T2JqZWN0U3RvcmUua2V5UGF0aCwgd2ViT2JqZWN0U3RvcmUuYXV0b0luY3JlbWVudCwgd2ViT2Jq
ZWN0U3RvcmUubWF4SW5kZXhJZCk7CiAKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCB3
ZWJPYmplY3RTdG9yZS5pbmRleGVzLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICBjb25zdCBJ
bmRleCB3ZWJJbmRleCA9IHdlYk9iamVjdFN0b3JlLmluZGV4ZXNbal07Ci0gICAgICAgICAgICBJ
REJJbmRleE1ldGFkYXRhIGluZGV4KHdlYkluZGV4Lm5hbWUsIHdlYkluZGV4LmtleVBhdGgsIHdl
YkluZGV4LnVuaXF1ZSwgd2ViSW5kZXgubXVsdGlFbnRyeSk7CisgICAgICAgICAgICBJREJJbmRl
eE1ldGFkYXRhIGluZGV4KHdlYkluZGV4Lm5hbWUsIHdlYkluZGV4LmlkLCB3ZWJJbmRleC5rZXlQ
YXRoLCB3ZWJJbmRleC51bmlxdWUsIHdlYkluZGV4Lm11bHRpRW50cnkpOwogICAgICAgICAgICAg
b2JqZWN0U3RvcmUuaW5kZXhlcy5zZXQoaW5kZXgubmFtZSwgaW5kZXgpOwogICAgICAgICB9CiAg
ICAgICAgIGRiLm9iamVjdFN0b3Jlcy5zZXQob2JqZWN0U3RvcmUubmFtZSwgb2JqZWN0U3RvcmUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3Jl
SW1wbC5jcHAKaW5kZXggZjVkZDkxM2M5NDg1Mjc4YjQ2NjhiZDI3MzQ2MTJmOGFlZDIxNzU5YS4u
MTk4YTI4Nzg4NmEyNjhkZTgyNDRiYjQ3OTM2Zjg3YWYwZTEwYjY2ZSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0x
MTcsNiArMTE3LDE0IEBAIFdlYklEQkluZGV4KiBXZWJJREJPYmplY3RTdG9yZUltcGw6OmNyZWF0
ZUluZGV4KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViCiAgICAgcmV0dXJuIG5ldyBX
ZWJJREJJbmRleEltcGwoaW5kZXgpOwogfQogCitXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjpjcmVhdGVJbmRleChsb25nIGxvbmcgaWQsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViSURCS2V5UGF0aCYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRy
eSwgY29uc3QgV2ViSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBXZWJFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleCA9IG1f
b2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KGlkLCBuYW1lLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBl
Yyk7CisgICAgaWYgKCFpbmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBX
ZWJJREJJbmRleEltcGwoaW5kZXgpOworfQorCiBXZWJJREJJbmRleCogV2ViSURCT2JqZWN0U3Rv
cmVJbXBsOjppbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYkV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4ID0gbV9vYmpl
Y3RTdG9yZS0+aW5kZXgobmFtZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCAwNDAyMGU1NThmNDRkNDFkYmY2OTk0
MmUzNmVlNjBiNTg3NDRlODIzLi45MDI2NDFhMDE5NGY3ODczOTE0MTY0YjAyNmY0MGRiOWE0NTYw
ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihXZWJJ
REJDYWxsYmFja3MqLCBjb25zdCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFdlYklEQkluZGV4KiBjcmVhdGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25z
dCBXZWJJREJUcmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXZWJJREJJbmRl
eCogY3JlYXRlSW5kZXgobG9uZyBsb25nLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YklEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBjb25zdCBXZWJJREJU
cmFuc2FjdGlvbiYsIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICBXZWJJREJJbmRleCogaW5kZXgo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBkZWxl
dGVJbmRleChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYklEQlRyYW5zYWN0aW9uJiwg
V2ViRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcAppbmRleCBiNmIzNjY3MWQ3NGZmMzRl
NmFmYjc2NDFkZThiODE4NzhkY2Q5OTZmLi4yMTZjODkzODQ2Nzc1Y2Y1YmQyZjQ1YzhhM2VjMGU2
Njg1ZTBlNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRh
dGFiYXNlQmFja2VuZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
SURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKQEAgLTU3LDEyICs1NywxMiBAQCBURVNUKElEQkRh
dGFiYXNlQmFja2VuZFRlc3QsIEJhY2tpbmdTdG9yZVJldGVudGlvbikKICAgICBFWFBFQ1RfR1Qo
YmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAogICAgIGNvbnN0IGJvb2wgYXV0b0luY3Jl
bWVudCA9IGZhbHNlOwotICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBzdG9y
ZSA9IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNyZWF0ZShkYi5nZXQoKSwgInN0b3JlIiwg
SURCS2V5UGF0aCgia2V5UGF0aCIpLCBhdXRvSW5jcmVtZW50KTsKKyAgICBSZWZQdHI8SURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbD4gc3RvcmUgPSBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
cmVhdGUoZGIuZ2V0KCksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6QXV0b2dlbmVyYXRl
T2JqZWN0U3RvcmVJZCwgInN0b3JlIiwgSURCS2V5UGF0aCgia2V5UGF0aCIpLCBhdXRvSW5jcmVt
ZW50LCAwKTsKICAgICBFWFBFQ1RfR1QoYmFja2luZ1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKIAog
ICAgIGNvbnN0IGJvb2wgdW5pcXVlID0gZmFsc2U7CiAgICAgY29uc3QgYm9vbCBtdWx0aUVudHJ5
ID0gZmFsc2U7Ci0gICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gSURCSW5k
ZXhCYWNrZW5kSW1wbDo6Y3JlYXRlKGRiLmdldCgpLCBzdG9yZS5nZXQoKSwgImluZGV4IiwgSURC
S2V5UGF0aCgia2V5UGF0aCIpLCB1bmlxdWUsIG11bHRpRW50cnkpOworICAgIFJlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShkYi5n
ZXQoKSwgc3RvcmUuZ2V0KCksIC0xLCAiaW5kZXgiLCBJREJLZXlQYXRoKCJrZXlQYXRoIiksIHVu
aXF1ZSwgbXVsdGlFbnRyeSk7CiAgICAgRVhQRUNUX0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQo
KSwgMSk7CiAKICAgICBkYi5jbGVhcigpOwpAQCAtMTQ5LDYgKzE0OSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IElEQkRhdGFiYXNlTWV0YWRhdGEoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVP
YmplY3RTdG9yZShpbnQ2NF90LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgm
LCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4
Y2VwdGlvbkNvZGUmKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgRXhjZXB0aW9uQ29kZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWZXJzaW9uKGNvbnN0
IFN0cmluZyYgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpIHsgfQogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKERPTVN0
cmluZ0xpc3QqIHN0b3JlTmFtZXMsIHVuc2lnbmVkIHNob3J0IG1vZGUsIEV4Y2VwdGlvbkNvZGUm
KSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0lEQkZha2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURC
RmFrZUJhY2tpbmdTdG9yZS5oCmluZGV4IDQ1N2FlMzc0NWY0MmM2ZTg0ZDI5ZTcyMjcxZjE5NTY4
ZjMyYzAxN2IuLjc1ZTA2NTg1ZWQ5M2Y3MjljODM1ZDRhNWJmY2U2OWQwZTVjMTA2ZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5o
CkBAIC0zMywxNCArMzMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCRmFrZUJh
Y2tpbmdTdG9yZSA6IHB1YmxpYyBJREJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKSBPVkVS
UklERSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNp
b24sIGludDY0X3QmIGZvdW5kSWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJp
bmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24s
IGludDY0X3QmIHJvd0lkKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lk
LCBjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihUcmFuc2FjdGlvbiosIGlu
dDY0X3Qgcm93SWQsIGludDY0X3QgdmVyc2lvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdFN0b3Jl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PiYgZm91bmRJZHMsIFZlY3RvcjxT
dHJpbmc+JiBmb3VuZE5hbWVzLCBWZWN0b3I8SURCS2V5UGF0aD4mIGZvdW5kS2V5UGF0aHMsIFZl
Y3Rvcjxib29sPiYgZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MpIE9WRVJSSURFIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29s
IGF1dG9JbmNyZW1lbnQsIGludDY0X3QmIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCkgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T2JqZWN0U3RvcmVzKGludDY0
X3QgZGF0YWJhc2VJZCwgVmVjdG9yPGludDY0X3Q+JiBmb3VuZElkcywgVmVjdG9yPFN0cmluZz4m
IGZvdW5kTmFtZXMsIFZlY3RvcjxJREJLZXlQYXRoPiYgZm91bmRLZXlQYXRocywgVmVjdG9yPGJv
b2w+JiBmb3VuZEF1dG9JbmNyZW1lbnRGbGFncywgVmVjdG9yPGludDY0X3Q+JiBmb3VuZE1heElu
ZGV4SWRzKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50
LCBpbnQ2NF90JiBhc3NpZ25lZE9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKFRyYW5zYWN0aW9uKiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFIHsgfQogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gY3JlYXRl
SW52YWxpZFJlY29yZElkZW50aWZpZXIoKSBPVkVSUklERSB7IHJldHVybiBQYXNzUmVmUHRyPE9i
amVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4oKTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGZvckVhY2hPYmplY3RTdG9yZVJlY29yZChUcmFuc2FjdGlvbios
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZVJl
Y29yZENhbGxiYWNrJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBnZXRJbmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBWZWN0b3I8aW50NjRfdD4mIGZvdW5kSWRzLCBWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcywg
VmVjdG9yPElEQktleVBhdGg+JiBmb3VuZEtleVBhdGhzLCBWZWN0b3I8Ym9vbD4mIGZvdW5kVW5p
cXVlRmxhZ3MsIFZlY3Rvcjxib29sPiYgZm91bmRNdWx0aUVudHJ5RmxhZ3MpIE9WRVJSSURFIHsg
fQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBp
bnQ2NF90JiBpbmRleElkKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBjcmVhdGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGJvb2wgaXNVbmlxdWUsIGJvb2wgaXNNdWx0aUVudHJ5LCBpbnQ2NF90
JiBhc3NpZ25lZEluZGV4SWQpIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVJbmRleChUcmFuc2FjdGlvbiosIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBwdXRJbmRleERhdGFGb3JSZWNvcmQoVHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJ
REJLZXkmLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleERhdGFGb3JSZWNvcmQo
VHJhbnNhY3Rpb24qLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
aW50NjRfdCBpbmRleElkLCBjb25zdCBPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIqKSBPVkVS
UklERSB7IHJldHVybiBmYWxzZTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>