<?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>123451</bug_id>
          
          <creation_ts>2013-10-29 11:00:58 -0700</creation_ts>
          <short_desc>Get IDBTransactionBackendLevelDBOperations *almost* ready to go cross platform</short_desc>
          <delta_ts>2013-10-29 13:42:00 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>123449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>944482</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:00:58 -0700</bug_when>
    <thetext>Get IDBTransactionBackendLevelDBOperations *almost* ready to go cross platform

This is part of https://bugs.webkit.org/show_bug.cgi?id=123449 - IDBTransactionBackend should be cross platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944484</commentid>
    <comment_count>1</comment_count>
      <attachid>215399</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:12:42 -0700</bug_when>
    <thetext>Created attachment 215399
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944486</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-29 11:14:57 -0700</bug_when>
    <thetext>Attachment 215399 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCallbacks.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBOperation.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBPendingOpenCall.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransactionBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBCursorBackendLevelDB.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBCursorBackendLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDBOperations.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBTransactionBackendLevelDBOperations.h&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;]&quot; exit_code: 1
Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:111:  The parameter name &quot;pendingOpenCall&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944487</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:16:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 215399 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, 
&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h:111:  The parameter name &quot;pendingOpenCall&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 1 in 18 files

Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944488</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:18:57 -0700</bug_when>
    <thetext>Ugh, WK2 won&apos;t build, forgot a WebCore project file change to export a new header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944489</commentid>
    <comment_count>5</comment_count>
      <attachid>215399</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-29 11:20:30 -0700</bug_when>
    <thetext>Comment on attachment 215399
Patch v1 

Attachment 215399 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/17078133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944492</commentid>
    <comment_count>6</comment_count>
      <attachid>215399</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-29 11:27:21 -0700</bug_when>
    <thetext>Comment on attachment 215399
Patch v1 

Attachment 215399 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/17138140</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944494</commentid>
    <comment_count>7</comment_count>
      <attachid>215402</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:28:44 -0700</bug_when>
    <thetext>Created attachment 215402
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944504</commentid>
    <comment_count>8</comment_count>
      <attachid>215402</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-29 11:37:02 -0700</bug_when>
    <thetext>Comment on attachment 215402
Patch v2 

Attachment 215402 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/17108145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944507</commentid>
    <comment_count>9</comment_count>
      <attachid>215402</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-29 11:39:21 -0700</bug_when>
    <thetext>Comment on attachment 215402
Patch v2 

Attachment 215402 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/17148124</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944512</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:42:45 -0700</bug_when>
    <thetext>Ummm... thanks EFL?

Last 500 characters of output:
 reference to `vtable for WebCore::IDBTransactionBackendInterface&apos;
../../lib/libwebcore_efl.a(IDBTransactionBackendLevelDB.cpp.o):(.data.rel.ro._ZTIN7WebCore28IDBTransactionBackendLevelDBE[_ZTIN7WebCore28IDBTransactionBackendLevelDBE]+0x10): undefined reference to `typeinfo for WebCore::IDBTransactionBackendInterface&apos;

Didn&apos;t see this on the Mac with the LevelDB build enabled...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944521</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:48:06 -0700</bug_when>
    <thetext>Might have been my mistake.  Uploading new patch to check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944522</commentid>
    <comment_count>12</comment_count>
      <attachid>215410</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 11:48:32 -0700</bug_when>
    <thetext>Created attachment 215410
Patch v3 - Make a method pure virtual that should already have been.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944545</commentid>
    <comment_count>13</comment_count>
      <attachid>215410</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-29 12:54:30 -0700</bug_when>
    <thetext>Comment on attachment 215410
Patch v3 - Make a method pure virtual that should already have been.

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

r=me.

&gt; Source/WebCore/ChangeLog:11
&gt; +        - Reworking the LeveDB Operations to handle the base class IDBTransactionBackendInterface

Typo, LevelDB

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:423
&gt; +    Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls;
&gt;      m_pendingOpenCalls.swap(pendingOpenCalls);

This would look slightly more straightforward like so:
Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls = std::move(m_pendingOpenCalls);

Hm, I wonder if we couldn&apos;t even do this:
auto pendingOpenCalls = std::move(m_pendingOpenCalls);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944552</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 13:08:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 215410 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215410&amp;action=review
&gt; 
&gt; r=me.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        - Reworking the LeveDB Operations to handle the base class IDBTransactionBackendInterface
&gt; 
&gt; Typo, LevelDB
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:423
&gt; &gt; +    Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls;
&gt; &gt;      m_pendingOpenCalls.swap(pendingOpenCalls);
&gt; 
&gt; This would look slightly more straightforward like so:
&gt; Deque&lt;OwnPtr&lt;IDBPendingOpenCall&gt;&gt; pendingOpenCalls = std::move(m_pendingOpenCalls);
&gt; 
&gt; Hm, I wonder if we couldn&apos;t even do this:
&gt; auto pendingOpenCalls = std::move(m_pendingOpenCalls);

I&apos;ll skip on trying to make either of these changes, as both result in:

/Volumes/Data/build/Debug/usr/local/include/wtf/Vector.h:141:32: Call to implicitly-deleted copy constructor of &apos;WTF::OwnPtr&lt;WebCore::IDBPendingOpenCall&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944569</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 13:37:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/158217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944571</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-29 13:42:00 -0700</bug_when>
    <thetext>and http://trac.webkit.org/changeset/158218 also</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215399</attachid>
            <date>2013-10-29 11:12:42 -0700</date>
            <delta_ts>2013-10-29 11:28:44 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77308</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YzY5MDJjLi42NWU0Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDEzLTEwLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBHZXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMgKmFsbW9zdCog
cmVhZHkgdG8gZ28gY3Jvc3MgcGxhdGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGludm9sdmVzOgorICAgICAgICAtIFNwbGl0dGluZyBv
dXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIGludG8gaXRzIG93biBo
ZWFkZXIKKyAgICAgICAgLSBTcGxpdHRpbmcgb3V0IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBl
bmRpbmdPcGVuQ2FsbCBpbnRvIGl0cyBvd24gaGVhZGVyCisgICAgICAgIC0gUmV3b3JraW5nIHRo
ZSBMZXZlREIgT3BlcmF0aW9ucyB0byBoYW5kbGUgdGhlIGJhc2UgY2xhc3MgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlCisgICAgICAgIC0gQWRkaW5nIHZpcnR1YWwgbWV0aG9kcyBpbiBh
IGZldyBvZiB0aGUgKkludGVyZmFjZSBjbGFzc2VzIHRvIHN1cHBvcnQgdGhlIGFib3ZlCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxi
YWNrcy5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpz
ZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQk9wZXJhdGlvbjo6fklEQk9wZXJhdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNhbGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5n
T3BlbkNhbGw6OmNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNh
bGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdPcGVu
Q2FsbDo6dmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNhbGw6OnRy
YW5zYWN0aW9uSWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ09wZW5DYWxsOjpJREJQ
ZW5kaW5nT3BlbkNhbGwpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1
cnNvckJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpDdXJz
b3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZU9wZW5DdXJz
b3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlQ2xl
YXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBl
cmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZUFib3J0T3Bl
cmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Q3Jl
YXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RT
dG9yZU9wZXJhdGlvbjo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25D
aGFuZ2VPcGVyYXRpb246OlZlcnNpb25DaGFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVBYm9y
dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6Q3JlYXRlSW5kZXhPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OkNyZWF0ZUlu
ZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbjo6RGVs
ZXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9w
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4QWJvcnRPcGVy
YXRpb246OkRlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2V0
T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2V0T3BlcmF0aW9uOjpHZXRP
cGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpQdXRPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb3VudE9wZXJhdGlvbjo6Q291bnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5n
ZU9wZXJhdGlvbjo6RGVsZXRlUmFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6
Q2xlYXJPcGVyYXRpb24pOgorCiAyMDEzLTEwLTI4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBJREIgZmFjdG9yeSBjcmVhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDRmYjQxMjEuLjA4OWJkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg0MCw2ICsxODQwLDggQEAgd2ViY29yZV9tb2R1bGVz
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNh
bGwuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVjb3JkSWRlbnRpZmllci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggYWJhNzcxYi4uNmQwYjUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAg
LTI5LDcgKzI5LDYgQEAKICNpZm5kZWYgSURCQ2FsbGJhY2tzX2gKICNkZWZpbmUgSURCQ2FsbGJh
Y2tzX2gKIAotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJ
REJLZXlQYXRoLmgiCkBAIC00MSw2ICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTsKK2NsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7CiAKIGNsYXNzIElEQkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkNhbGxiYWNr
cz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDk2M2YzMmIuLjcxMTVi
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNo
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9
IDA7CisKKyAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
SURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2hhcmVkQnVmZmVy
KiB2YWx1ZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAKaW5kZXggYmU4ODU5OC4uMzRjYzkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0UwogICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5
OwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IHN0b3JlID0gYmFja2luZ1N0
b3JlKCk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gc3RvcmUgPSBtX2Jh
Y2tpbmdTdG9yZTsKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9u
b3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21w
bGV4aXR5LgogICAgIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVy
OwogICAgIGJvb2wgb2sgPSBzdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9tZXRhZGF0YS5pZCwgb2JqZWN0U3RvcmVJ
ZCwgKnByaW1hcnlLZXksIHJlY29yZElkZW50aWZpZXIpOwpAQCAtNDE5LDEwICs0MTksMTAgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gT3BlbiBjYWxscyBjYW4gYmUgcmVxdWV1ZWQgaWYgYW4gb3Bl
biBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KLSAgICBEZXF1ZTxP
d25QdHI8UGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKKyAgICBEZXF1ZTxPd25Q
dHI8SURCUGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKICAgICBtX3BlbmRpbmdP
cGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVu
Q2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRp
bmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIE93blB0
cjxJREJQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMu
dGFrZUZpcnN0KCk7CiAgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2Fs
bGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09w
ZW5DYWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdPcGVuQ2FsbC0+dmVyc2lvbigpKTsKICAg
ICB9CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpv
cGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJh
c2VDYWxsYmFja3M7CiAKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8
fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5n
T3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5DYWxscy5hcHBlbmQoSURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywg
KmRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YQogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX21ldGFkYXRhLnZlcnNpb24pOwogICAg
IC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LgogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlv
bkNvdW50KCkpIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Bl
bkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklk
LCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQo
SURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywgKmRhdGFiYXNlQ2FsbGJhY2tz
LCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA5ZTczNjNmLi5kNmU2OGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZElt
cGxfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsX2gKIAotI2luY2x1ZGUgIklEQkNh
bGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTQ5LDE4ICs0
OCwxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50
aWZpZXIpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAotICAgIElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSgpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKLSAgICBpbnQ2NF90
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQotICAgIHZvaWQgYWRkT2JqZWN0
U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4T2JqZWN0
U3RvcmVJZCk7Ci0gICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpOwotICAgIHZvaWQgYWRkSW5kZXgoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhJbmRleElkKTsKLSAgICB2b2lkIHJlbW92ZUlu
ZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKKyAgICB2aXJ0dWFs
IGludDY0X3QgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX21ldGFkYXRhLmlkOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKICAgICAvLyBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CkBAIC05MCw4
ICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9t
ZXRhZGF0YTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VmVyc2lvbih1aW50NjRfdCB2
ZXJzaW9uKSBPVkVSUklERSB7IG1fbWV0YWRhdGEudmVyc2lvbiA9IHZlcnNpb247IH0KKwogICAg
IHZpcnR1YWwgYm9vbCBpc0lEQkRhdGFiYXNlQmFja2VuZEltcGwoKSBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ1NlY29uZEhhbGZPcGVuKCkg
T1ZFUlJJREUgeyByZXR1cm4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW47IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5D
YWxsPiBwZW5kaW5nT3BlbkNhbGwpIE9WRVJSSURFIHsgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4g
PSBwZW5kaW5nT3BlbkNhbGw7IH0KKwogICAgIGNsYXNzIFZlcnNpb25DaGFuZ2VPcGVyYXRpb247
CiAgICAgY2xhc3MgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOwogCkBAIC0xMTksMzMgKzEy
Myw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSo+IFRyYW5zYWN0aW9uTWFwOwogICAgIFRyYW5zYWN0aW9uTWFw
IG1fdHJhbnNhY3Rpb25zOwogCi0gICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3QgdmVyc2lvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
ZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25J
ZCwgdmVyc2lvbikpOwotICAgICAgICB9Ci0gICAgICAgIElEQkNhbGxiYWNrcyogY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KLSAgICAgICAgSURCRGF0YWJhc2VDYWxs
YmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrcy5n
ZXQoKTsgfQotICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
LSAgICAgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbklkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2
ZXJzaW9uKQotICAgICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAgICAg
ICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCi0gICAgICAgICAgICAs
IG1fdmVyc2lvbih2ZXJzaW9uKQotICAgICAgICAgICAgLCBtX3RyYW5zYWN0aW9uSWQodHJhbnNh
Y3Rpb25JZCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IG1fY2FsbGJhY2tzOwotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7Ci0gICAgICAgIGludDY0X3QgbV92ZXJzaW9uOwotICAgICAgICBj
b25zdCBpbnQ2NF90IG1fdHJhbnNhY3Rpb25JZDsKLSAgICB9OwotCi0gICAgRGVxdWU8T3duUHRy
PFBlbmRpbmdPcGVuQ2FsbD4+IG1fcGVuZGluZ09wZW5DYWxsczsKLSAgICBPd25QdHI8UGVuZGlu
Z09wZW5DYWxsPiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbjsKKyAgICBEZXF1ZTxPd25QdHI8SURC
UGVuZGluZ09wZW5DYWxsPj4gbV9wZW5kaW5nT3BlbkNhbGxzOworICAgIE93blB0cjxJREJQZW5k
aW5nT3BlbkNhbGw+IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuOwogCiAgICAgY2xhc3MgUGVuZGlu
Z0RlbGV0ZUNhbGwgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5k
ZXggMTQ3NWRhNS4uZWQwZjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2
LDggKzI2LDEyIEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAjZGVm
aW5lIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM3LDE0ICs0MSwxNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7Ci1jbGFzcyBJREJDYWxsYmFj
a3M7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIElEQktleTsKIGNsYXNzIElE
QktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKLXN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRh
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK3N0
cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CisK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBJbmRleEtleXM7CiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCkBAIC01NSw2ICs2MCw4IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9
CiAKKyAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkg
Y29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkg
PSAwOwpAQCAtOTEsNiArOTgsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVS
YW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGludDY0
X3QgaWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9y
ZUlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4SW5kZXhJZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFZlcnNp
b24odWludDY0X3QpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nU2Vjb25kSGFs
Zk9wZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihQ
YXNzT3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4gcGVuZGluZ09wZW5DYWxsKSA9IDA7CisKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJREJEYXRhYmFzZUJhY2tlbmRJbXBsKCkgeyByZXR1cm4gZmFsc2U7
IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlcmF0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwYzA2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlv
bi5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQk9wZXJhdGlvbl9o
CisjZGVmaW5lIElEQk9wZXJhdGlvbl9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJPcGVyYXRpb24geworcHVibGljOgor
ICAgIHZpcnR1YWwgfklEQk9wZXJhdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
KCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCT3BlcmF0aW9uX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdPcGVuQ2FsbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5DYWxsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY3NWM3MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdPcGVuQ2FsbC5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlBlbmRpbmdPcGVuQ2Fs
bF9oCisjZGVmaW5lIElEQlBlbmRpbmdPcGVuQ2FsbF9oCisKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkNhbGxiYWNrczsKK2Ns
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOworCitjbGFzcyBJREJQZW5kaW5nT3BlbkNhbGwgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRl
KElEQkNhbGxiYWNrcyYgY2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyYgZGF0YWJhc2VD
YWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJREJQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOworICAgIH0KKyAg
ICBJREJDYWxsYmFja3MqIGNhbGxiYWNrcygpIHsgcmV0dXJuIG1fY2FsbGJhY2tzLmdldCgpOyB9
CisgICAgSURCRGF0YWJhc2VDYWxsYmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4g
bV9kYXRhYmFzZUNhbGxiYWNrcy5nZXQoKTsgfQorICAgIGludDY0X3QgdmVyc2lvbigpIHsgcmV0
dXJuIG1fdmVyc2lvbjsgfQorICAgIGludDY0X3QgdHJhbnNhY3Rpb25JZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhbnNhY3Rpb25JZDsgfQorCitwcml2YXRlOgorICAgIElEQlBlbmRpbmdPcGVuQ2Fs
bChJREJDYWxsYmFja3MmIGNhbGxiYWNrcywgSURCRGF0YWJhc2VDYWxsYmFja3MmIGRhdGFiYXNl
Q2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKKyAgICAg
ICAgOiBtX2NhbGxiYWNrcygmY2FsbGJhY2tzKQorICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFj
a3MoJmRhdGFiYXNlQ2FsbGJhY2tzKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAg
ICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQorICAgIHsKKyAgICB9CisgICAg
UmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIGludDY0X3QgbV92ZXJzaW9uOwor
ICAgIGNvbnN0IGludDY0X3QgbV90cmFuc2FjdGlvbklkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8g
SURCUGVuZGluZ09wZW5DYWxsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaAppbmRleCA5YmMyMWNlLi43YWRiYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC00Miw2ICs0Miw4IEBACiAjaW5j
bHVkZSAiSURCQW55LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURC
Q3Vyc29yLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5j
bHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aAppbmRleCBmODgwYzljLi44MTg4Nzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
IkluZGV4ZWREQi5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTcxLDcgKzcyLDEzIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEZWxldGVSYW5nZU9wZXJhdGlvbihp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDbGVhck9wZXJh
dGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAw
OwogCisgICAgdmlydHVhbCB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tcGxldGVQcmVlbXB0aXZlRXZlbnQoKSA9IDA7CisKICAgICB2aXJ0dWFs
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6VHJhbnNhY3Rpb24qIGJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlJiBk
YXRhYmFzZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZUN1cnNvckJhY2tlbmQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
OjpDdXJzb3ImLCBJbmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZTo6VGFza1R5cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAgICAgaW50NjRf
dCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tl
bmRMZXZlbERCLmNwcAppbmRleCA0MjQ1NzdkLi44ZTMxYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERC
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1
cnNvckJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzUsMTUgKzM1LDE2IEBACiAjaW5jbHVkZSAiSURC
RGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJPcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IElEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJs
aWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIElEQkN1
cnNvckJhY2tlbmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURC
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRMZXZlbERCPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0
aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vyc29yLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVy
YXRpb24oY3Vyc29yLCBrZXksIGNhbGxiYWNrcykpOwogICAgIH0KQEAgLTYxLDkgKzYyLDkgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLWNs
YXNzIElEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIDogcHVi
bGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBJREJD
dXJzb3JCYWNrZW5kTGV2ZWxEQjo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFj
a2VuZExldmVsREI+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+
IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRMZXZlbERCPiBjdXJzb3IsIHVuc2ln
bmVkIGxvbmcgY291bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvckFkdmFuY2VPcGVyYXRpb24oY3Vy
c29yLCBjb3VudCwgY2FsbGJhY2tzKSk7CiAgICAgfQpAQCAtODEsOSArODIsOSBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgSURC
Q3Vyc29yQmFja2VuZExldmVsREI6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uIDog
cHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBJ
REJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Q3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24g
OiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRMZXZlbERCPiBjdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElE
Qk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZExldmVsREI+IGN1
cnNvciwgaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvclByZWZldGNoSXRl
cmF0aW9uT3BlcmF0aW9uKGN1cnNvciwgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSk7CiAgICAg
fQpAQCAtMTA0LDcgKzEwNSw3IEBAIHByaXZhdGU6CiBJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6
SURCQ3Vyc29yQmFja2VuZExldmVsREIoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U6OkN1cnNvcj4gY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAg
ICA6IG1fdGFza1R5cGUodGFza1R5cGUpCiAgICAgLCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkK
LSAgICAsIG1fZGF0YWJhc2UodHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkpCisgICAgLCBtX2RhdGFi
YXNlKCYodHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkpKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFu
c2FjdGlvbikKICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICwgbV9j
dXJzb3IoY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDdm
NzEzNDYuLjU2ZmE5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCQ3Vyc29yQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmgKQEAg
LTYyLDkgKzYyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChp
bnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKICAgICB2aXJ0dWFsIHZv
aWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IH0KIAotICAgIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkoKSBjb25zdCB7IHJldHVybiBtX2N1cnNvci0+a2V5KCk7IH0KLSAgICBQYXNzUmVm
UHRyPElEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5
S2V5KCk7IH0KLSAgICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJl
dHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9j
dXJzb3ItPnZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9jdXJzb3ItPmtleSgpLmdldCgpOyB9CisgICAgdmlydHVhbCBJREJLZXkq
IHByaW1hcnlLZXkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1cnNvci0+cHJpbWFyeUtl
eSgpLmdldCgpOyB9CisgICAgdmlydHVhbCBTaGFyZWRCdWZmZXIqIHZhbHVlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkp
ID8gMCA6IG1fY3Vyc29yLT52YWx1ZSgpLmdldCgpOyB9CisKICAgICB2b2lkIGNsb3NlKCk7CiAK
IHByaXZhdGU6CkBAIC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CiAgICAgSW5kZXhlZERCOjpDdXJz
b3JUeXBlIG1fY3Vyc29yVHlwZTsKLSAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gbV9kYXRhYmFzZTsKKyAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBtX2RhdGFiYXNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAppbmRleCA5
YWEyNTdlLi40YjAyZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
Qjo6fklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIoKQogICAgIEFTU0VSVChtX3N0YXRlID09
IEZpbmlzaGVkKTsKIH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hl
ZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0eXBlLCBQYXNz
T3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzaykK
K3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVUYXNrKElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdHlwZSwgUGFzc093blB0cjxJREJPcGVyYXRp
b24+IHRhc2ssIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9ydFRhc2spCiB7CiAgICAgaWYg
KG1fc3RhdGUgPT0gRmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OmFib3J0KFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4gZXJyb3IpCiAKICAgICAvLyBSdW4gdGhlIGFib3J0IHRhc2tzLCBpZiBh
bnkuCiAgICAgd2hpbGUgKCFtX2Fib3J0VGFza1F1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBP
d25QdHI8T3BlcmF0aW9uPiB0YXNrKG1fYWJvcnRUYXNrUXVldWUudGFrZUZpcnN0KCkpOworICAg
ICAgICBPd25QdHI8SURCT3BlcmF0aW9uPiB0YXNrKG1fYWJvcnRUYXNrUXVldWUudGFrZUZpcnN0
KCkpOwogICAgICAgICB0YXNrLT5wZXJmb3JtKCk7CiAgICAgfQogCkBAIC0yNTAsNyArMjUwLDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjp0YXNrVGltZXJGaXJlZChUaW1l
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXYKICAgICBUYXNrUXVldWUqIHRhc2tRdWV1ZSA9IG1f
cGVuZGluZ1ByZWVtcHRpdmVFdmVudHMgPyAmbV9wcmVlbXB0aXZlVGFza1F1ZXVlIDogJm1fdGFz
a1F1ZXVlOwogICAgIHdoaWxlICghdGFza1F1ZXVlLT5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBG
aW5pc2hlZCkgewogICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICAgICAg
T3duUHRyPE9wZXJhdGlvbj4gdGFzayh0YXNrUXVldWUtPnRha2VGaXJzdCgpKTsKKyAgICAgICAg
T3duUHRyPElEQk9wZXJhdGlvbj4gdGFzayh0YXNrUXVldWUtPnRha2VGaXJzdCgpKTsKICAgICAg
ICAgdGFzay0+cGVyZm9ybSgpOwogCiAgICAgICAgIC8vIEV2ZW50IGl0c2VsZiBtYXkgY2hhbmdl
IHdoaWNoIHF1ZXVlIHNob3VsZCBiZSBwcm9jZXNzZWQgbmV4dC4KQEAgLTMwMiw3ICszMDIsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlR2V0T3BlcmF0aW9u
KGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI6OnNjaGVkdWxlUHV0T3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEm
IG9iamVjdFN0b3JlTWV0YWRhdGEsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2Rl
IHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMp
CiB7Ci0gICAgc2NoZWR1bGVUYXNrKFB1dE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2lu
Z1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLT5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1
ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKKyAgICBz
Y2hlZHVsZVRhc2soUHV0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0
KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgdmFsdWUsIGtleSwgcHV0
TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiB9CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24o
c2l6ZV90IGluZGV4Q291bnQpCkBAIC0zMTIsMjQgKzMxMiwyOCBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVf
dCBpbmRleAogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlT3Bl
bkN1cnNvck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgc2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwg
dGFza1R5cGUsIGNhbGxiYWNrcykpOworICAgIHNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0
aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNlKCkuaWQoKSwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwg
dGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI6OnNjaGVkdWxlQ291bnRPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2
NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVkdWxlVGFzayhDb3VudE9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLT5pZCgp
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CisgICAgc2No
ZWR1bGVUYXNrKENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0
KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVk
dWxlRGVsZXRlUmFuZ2VPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKLSAgICBzY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVJZCwg
a2V5UmFuZ2UsIGNhbGxiYWNrcykpOworICAgIHNjaGVkdWxlVGFzayhEZWxldGVSYW5nZU9wZXJh
dGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCks
IG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBz
Y2hlZHVsZVRhc2soQ2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5n
ZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAg
c2NoZWR1bGVUYXNrKENsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUu
Z2V0KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CiB9CiAK
K1Bhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQjo6Y3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6
OkN1cnNvciYgY3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKQoreworICAgIHJldHVybiBJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Y3JlYXRlKCZj
dXJzb3IsIGN1cnNvclR5cGUsIHRhc2tUeXBlLCB0aGlzLCBvYmplY3RTdG9yZUlkKTsKK30KIAog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAppbmRleCAw
MjQ2MGEzLi5lMDk0MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZElt
cGwuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSURCT3BlcmF0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTUzLDI0ICs1NCwxOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGFib3J0KCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGFi
b3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIEZJTkFMOwogCi0gICAg
Y2xhc3MgT3BlcmF0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9wZXJhdGlv
bigpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpID0gMDsKLSAgICB9OwotCiAg
ICAgdmlydHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fbW9k
ZTsgfQogICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQotICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NP
d25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0g
bnVsbHB0cikgeyBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3Jt
YWxUYXNrLCB0YXNrLCBhYm9ydFRhc2spOyB9Ci0gICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CisgICAgdm9pZCBzY2hl
ZHVsZVRhc2soUGFzc093blB0cjxJREJPcGVyYXRpb24+IHRhc2ssIFBhc3NPd25QdHI8SURCT3Bl
cmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKSB7IHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KKyAgICB2b2lk
IHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBQYXNz
T3duUHRyPElEQk9wZXJhdGlvbj4sIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9ydFRhc2sg
PSBudWxscHRyKTsKICAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5k
TGV2ZWxEQiopOwogICAgIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2Vu
ZExldmVsREIqKTsKLSAgICB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIHsgbV9wZW5kaW5nUHJl
ZW1wdGl2ZUV2ZW50cysrOyB9Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVByZWVtcHRpdmVFdmVudCgp
IHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cy0tOyBBU1NFUlQobV9wZW5kaW5nUHJlZW1wdGl2
ZUV2ZW50cyA+PSAwKTsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRQcmVlbXB0aXZlRXZlbnQoKSBP
VkVSUklERSB7IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMrKzsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb21wbGV0ZVByZWVtcHRpdmVFdmVudCgpIE9WRVJSSURFIHsgbV9wZW5kaW5nUHJlZW1w
dGl2ZUV2ZW50cy0tOyBBU1NFUlQobV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyA+PSAwKTsgfQog
ICAgIHZpcnR1YWwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogYmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSB7IHJldHVybiAmbV90cmFuc2FjdGlvbjsgfQogCi0gICAgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNl
LmdldCgpOyB9CisgICAgdmlydHVhbCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UmIGRhdGFi
YXNlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gKm1fZGF0YWJhc2U7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZUNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JikgT1ZFUlJJREUgRklOQUw7CkBAIC04NCw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVDb3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPikgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRlUmFu
Z2VPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVDbGVhck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREUgRklOQUw7Ci0gICAgCisKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2Vu
ZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvciYsIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RT
dG9yZUlkKSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCKElEQkRhdGFiYXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJ
ZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKIApAQCAtMTExLDcgKzEwOCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKIAotICAgIHR5cGVk
ZWYgRGVxdWU8T3duUHRyPE9wZXJhdGlvbj4+IFRhc2tRdWV1ZTsKKyAgICB0eXBlZGVmIERlcXVl
PE93blB0cjxJREJPcGVyYXRpb24+PiBUYXNrUXVldWU7CiAgICAgVGFza1F1ZXVlIG1fdGFza1F1
ZXVlOwogICAgIFRhc2tRdWV1ZSBtX3ByZWVtcHRpdmVUYXNrUXVldWU7CiAgICAgVGFza1F1ZXVl
IG1fYWJvcnRUYXNrUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwCmluZGV4IGRhZDY1MDUuLmIyODdhMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9w
ZXJhdGlvbnMuY3BwCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQg
Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oKQogewogICAgIExPRyhTdG9yYWdl
QVBJLCAiQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24iKTsKLSAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5jcmVhdGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5pZCgpLCBtX29iamVjdFN0b3JlTWV0
YWRhdGEuaWQsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5uYW1lLCBtX29iamVjdFN0b3JlTWV0YWRh
dGEua2V5UGF0aCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQpKSB7CisgICAg
aWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBt
X29iamVjdFN0b3JlTWV0YWRhdGEuaWQsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5uYW1lLCBtX29i
amVjdFN0b3JlTWV0YWRhdGEua2V5UGF0aCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNy
ZW1lbnQpKSB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBT
dHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3IgY3JlYXRpbmcgb2JqZWN0IHN0b3JlICclcycu
IiwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBt
X3RyYW5zYWN0aW9uLT5hYm9ydChlcnJvci5yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CkBA
IC01MCw3ICs1MCw3IEBAIHZvaWQgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0o
KQogdm9pZCBDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3Jh
Z2VBUEksICJDcmVhdGVJbmRleE9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUt
PmNyZWF0ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmlkKCksIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleE1l
dGFkYXRhLmlkLCBtX2luZGV4TWV0YWRhdGEubmFtZSwgbV9pbmRleE1ldGFkYXRhLmtleVBhdGgs
IG1faW5kZXhNZXRhZGF0YS51bmlxdWUsIG1faW5kZXhNZXRhZGF0YS5tdWx0aUVudHJ5KSkgewor
ICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEuaWQsIG1faW5kZXhNZXRhZGF0YS5uYW1lLCBt
X2luZGV4TWV0YWRhdGEua2V5UGF0aCwgbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSwgbV9pbmRleE1l
dGFkYXRhLm11bHRpRW50cnkpKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0KElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBT
dHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3Igd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGluZGV4
ICclcycuIiwgbV9pbmRleE1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTU5LDEzICs1OSwxMyBAQCB2b2lkIENyZWF0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKCkKIHZvaWQgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSgp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uIik7Ci0g
ICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+cmVtb3ZlSW5kZXgobV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4SWQpOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkucmVtb3ZlSW5kZXgo
bV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQpOwogfQogCiB2b2lkIERlbGV0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIkRlbGV0ZUluZGV4T3BlcmF0
aW9uIik7Ci0gICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleChtX3RyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFz
ZSgpLT5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YS5pZCk7CisgICAgYm9v
bCBvayA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNraW5n
U3RvcmVUcmFuc2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9pbmRleE1ldGFkYXRhLmlkKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50
ZXJuYWwgZXJyb3IgZGVsZXRpbmcgaW5kZXggJyVzJy4iLCBtX2luZGV4TWV0YWRhdGEubmFtZS51
dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBEZWxldGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB2b2lk
IERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0oKQogewogICAgIExPRyhTdG9yYWdl
QVBJLCAiRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbiIpOwotICAgIG1fdHJhbnNhY3Rpb24tPmRh
dGFiYXNlKCktPmFkZEluZGV4KG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleE1ldGFkYXRhLCBJREJJ
bmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
YWRkSW5kZXgobV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEsIElEQkluZGV4TWV0YWRh
dGE6OkludmFsaWRJZCk7CiB9CiAKIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKCkKQEAgLTI3
OCw3ICsyNzgsOCBAQCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oKQogICAgIH0K
IAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUoc3Rh
dGljX2Nhc3Q8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4obV90YXNrVHlw
ZSkpOwotICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vyc29yID0gSURCQ3Vy
c29yQmFja2VuZExldmVsREI6OmNyZWF0ZShiYWNraW5nU3RvcmVDdXJzb3IuZ2V0KCksIG1fY3Vy
c29yVHlwZSwgdGFza1R5cGUsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVJZCk7
CisKKyAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gbV90cmFu
c2FjdGlvbi0+Y3JlYXRlQ3Vyc29yQmFja2VuZCgqYmFja2luZ1N0b3JlQ3Vyc29yLCBtX2N1cnNv
clR5cGUsIHRhc2tUeXBlLCBtX29iamVjdFN0b3JlSWQpOwogICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MoY3Vyc29yLCBjdXJzb3ItPmtleSgpLCBjdXJzb3ItPnByaW1hcnlLZXkoKSwgY3Vyc29y
LT52YWx1ZSgpKTsKIH0KIApAQCAtMzMzLDcgKzMzNCw3IEBAIHZvaWQgQ2xlYXJPcGVyYXRpb246
OnBlcmZvcm0oKQogdm9pZCBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7
CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAg
IGJvb2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUobV90cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+
aWQoKSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmlkKTsKKyAgICBib29sIG9rID0gbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZU1l
dGFkYXRhLmlkKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcg
b2JqZWN0IHN0b3JlICclcycuIiwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUudXRmOCgpLmRh
dGEoKSkpOwogICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7CkBAIC0zNDMsNDAg
KzM0NCw0MCBAQCB2b2lkIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKCkKIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9y
bSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uIik7Ci0g
ICAgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UgPSBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpOwotICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgpOwotICAgIHVp
bnQ2NF90IG9sZFZlcnNpb24gPSBkYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uOworICAgIElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSYgZGF0YWJhc2UgPSBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpOworICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLmlkKCk7CisgICAgdWlu
dDY0X3Qgb2xkVmVyc2lvbiA9IGRhdGFiYXNlLm1ldGFkYXRhKCkudmVyc2lvbjsKIAogICAgIC8v
IEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0
aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KICAgICBBU1NFUlQobV92ZXJzaW9uID4gKGludDY0
X3Qpb2xkVmVyc2lvbik7Ci0gICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbiA9IG1fdmVy
c2lvbjsKLSAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRh
dGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb24pKSB7CisgICAgZGF0YWJhc2Uu
c2V0Q3VycmVudFZlcnNpb24obV92ZXJzaW9uKTsKKyAgICBpZiAoIWRhdGFiYXNlLmJhY2tpbmdT
dG9yZSgpLT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24obV90cmFuc2FjdGlvbi0+YmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJz
aW9uKSkgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkVy
cm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZSB3aGVuIHVwZGF0aW5nIHZlcnNpb24u
Iik7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKICAgICAgICAgbV90cmFu
c2FjdGlvbi0+YWJvcnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VS
VCghZGF0YWJhc2UtPm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuKTsKLSAgICBkYXRhYmFzZS0+bV9w
ZW5kaW5nU2Vjb25kSGFsZk9wZW4gPSBQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShtX2NhbGxiYWNr
cywgbV9kYXRhYmFzZUNhbGxiYWNrcywgbV90cmFuc2FjdGlvbklkLCBtX3ZlcnNpb24pOwotICAg
IG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgZGF0YWJhc2UsIGRhdGFi
YXNlLT5tZXRhZGF0YSgpKTsKKyAgICBBU1NFUlQoIWRhdGFiYXNlLmhhc1BlbmRpbmdTZWNvbmRI
YWxmT3BlbigpKTsKKyAgICBkYXRhYmFzZS5zZXRQZW5kaW5nU2Vjb25kSGFsZk9wZW4oSURCUGVu
ZGluZ09wZW5DYWxsOjpjcmVhdGUoKm1fY2FsbGJhY2tzLCAqbV9kYXRhYmFzZUNhbGxiYWNrcywg
bV90cmFuc2FjdGlvbklkLCBtX3ZlcnNpb24pKTsKKyAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRl
TmVlZGVkKG9sZFZlcnNpb24sICZkYXRhYmFzZSwgZGF0YWJhc2UubWV0YWRhdGEoKSk7CiB9CiAK
IHZvaWQgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uIik7Ci0gICAg
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+cmVtb3ZlT2JqZWN0U3RvcmUobV9vYmplY3RTdG9y
ZUlkKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnJlbW92ZU9iamVjdFN0b3JlKG1f
b2JqZWN0U3RvcmVJZCk7CiB9CiAKIHZvaWQgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlv
bjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEZWxldGVPYmplY3RTdG9yZUFi
b3J0T3BlcmF0aW9uIik7Ci0gICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+YWRkT2JqZWN0
U3RvcmUobV9vYmplY3RTdG9yZU1ldGFkYXRhLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZh
bGlkSWQpOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuYWRkT2JqZWN0U3RvcmUobV9v
YmplY3RTdG9yZU1ldGFkYXRhLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJh
dGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJWZXJzaW9uQ2hhbmdlQWJv
cnRPcGVyYXRpb24iKTsKLSAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5tX21ldGFkYXRh
LnZlcnNpb24gPSBtX3ByZXZpb3VzSW50VmVyc2lvbjsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpLnNldEN1cnJlbnRWZXJzaW9uKG1fcHJldmlvdXNJbnRWZXJzaW9uKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oCmluZGV4IGM5ZDg5YzEuLmVlYTdjY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRp
b25zLmgKQEAgLTI2LDYxICsyNiw2MyBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCT3BlcmF0aW9uc19oCiAjZGVmaW5lIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJP
cGVyYXRpb25zX2gKIAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCIK
KyNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24gOiBwdWJsaWMgSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIENyZWF0ZU9iamVj
dFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFj
a2luZ1N0b3JlLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBDcmVhdGVPYmplY3RTdG9yZU9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAg
ICAgLCBtX29iamVjdFN0b3JlTWV0YWRhdGEob2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3Ry
YW5zYWN0aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1f
dHJhbnNhY3Rpb247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4g
bV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtX29iamVj
dFN0b3JlTWV0YWRhdGE7CiB9OwogCi1jbGFzcyBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiA6
IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3Mg
RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpP
cGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlv
biwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5z
YWN0aW9uLCBiYWNraW5nU3RvcmUsIG9iamVjdFN0b3JlTWV0YWRhdGEpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgRGVs
ZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQorICAgIERlbGV0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJh
bnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRh
KQogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
Qj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEg
bV9vYmplY3RTdG9yZU1ldGFkYXRhOwogfTsKIAotY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lv
bkNoYW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4g
Y3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxs
YmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2Fs
bGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklO
QUw7CiBwcml2YXRlOgotICAgIFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRf
dCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBWZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRh
YmFzZUNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAg
ICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQogICAgICAgICAsIG1fdmVyc2lv
bih2ZXJzaW9uKQpAQCAtODksNzggKzkxLDc4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247
CiAgICAgaW50NjRfdCBtX3RyYW5zYWN0aW9uSWQ7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CiAg
ICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAotY2xhc3MgQ3JlYXRlT2Jq
ZWN0U3RvcmVBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCOjpPcGVyYXRpb24geworY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbiA6
IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwg
dm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZU9iamVj
dFN0b3JlQWJvcnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNh
Y3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICBDcmVhdGVPYmplY3RTdG9yZUFib3J0
T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
KQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgIHsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlv
bjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0
aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogfTsKIAotY2xhc3MgRGVs
ZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiBvYmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBj
b25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbih0cmFu
c2FjdGlvbiwgb2JqZWN0U3RvcmUpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0o
KSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVP
YmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0
YWRhdGEpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBt
X29iamVjdFN0b3JlTWV0YWRhdGEob2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7CiAgICAgfQog
Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247
CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlv
bjsKICAgICBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0YTsKIH07
CiAKLWNsYXNzIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24gewor
Y2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9u
IDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgcHJldmlvdXNW
ZXJzaW9uLCBpbnQ2NF90IHByZXZpb3VzSW50VmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc093blB0
cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIHByZXZpb3VzVmVyc2lvbiwgaW50NjRfdCBwcmV2aW91
c0ludFZlcnNpb24pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFZlcnNpb25D
aGFuZ2VBYm9ydE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcHJldmlvdXNWZXJzaW9uLCBwcmV2aW91
c0ludFZlcnNpb24pKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklE
RSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIHByZXZp
b3VzVmVyc2lvbiwgaW50NjRfdCBwcmV2aW91c0ludFZlcnNpb24pCisgICAgVmVyc2lvbkNoYW5n
ZUFib3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIGNvbnN0IFN0cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2NF90IHByZXZpb3VzSW50VmVy
c2lvbikKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1f
cHJldmlvdXNWZXJzaW9uKHByZXZpb3VzVmVyc2lvbikKICAgICAgICAgLCBtX3ByZXZpb3VzSW50
VmVyc2lvbihwcmV2aW91c0ludFZlcnNpb24pCiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgU3RyaW5n
IG1fcHJldmlvdXNWZXJzaW9uOwogICAgIGludDY0X3QgbV9wcmV2aW91c0ludFZlcnNpb247CiB9
OwogCi1jbGFzcyBDcmVhdGVJbmRleE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBw
dWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBi
YWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNy
ZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVJbmRleE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2lu
Z1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZUlu
ZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQorICAgIENyZWF0ZUlu
ZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgICAgIDog
bV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNr
aW5nU3RvcmUpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0x
NjgsNDEgKzE3MCw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJl
ZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0
IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9p
bmRleE1ldGFkYXRhOwogfTsKIAotY2xhc3MgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1
YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ3Jl
YXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlv
bih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwogICAgIH0KICAgICB2aXJ0
dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDcmVhdGVJ
bmRleEFib3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKKyAgICBDcmVhdGVJ
bmRleEFib3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogICAgICAgICA6
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9i
amVjdFN0b3JlSWQpCiAgICAgICAgICwgbV9pbmRleElkKGluZGV4SWQpCiAgICAgewogICAgIH0K
IAotICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5z
YWN0aW9uOworICAgIGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IG1fdHJhbnNhY3Rpb247CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAg
Y29uc3QgaW50NjRfdCBtX2luZGV4SWQ7CiB9OwogCi1jbGFzcyBEZWxldGVJbmRleE9wZXJhdGlv
biA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xh
c3MgRGVsZXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVy
YXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwg
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1l
dGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVJbmRleE9w
ZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1l
dGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklO
QUw7CiBwcml2YXRlOgotICAgIERlbGV0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBp
bmRleE1ldGFkYXRhKQorICAgIERlbGV0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEm
IGluZGV4TWV0YWRhdGEpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAg
ICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9vYmplY3RT
dG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0yMTAsNDEgKzIxMiw0MSBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90
cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBt
X3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+
IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAg
IGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRhOwogfTsKIAotY2xhc3MgRGVs
ZXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCOjpPcGVyYXRpb24geworY2xhc3MgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURC
T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRl
eE1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVJbmRl
eEFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRh
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBw
cml2YXRlOgotICAgIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBEZWxldGVJbmRleEFib3J0T3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAg
ICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fb2JqZWN0U3Rv
cmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5kZXhNZXRhZGF0YShpbmRleE1ldGFk
YXRhKQogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlk
OwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRhOwogfTsKIAotY2xh
c3MgR2V0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9w
ZXJhdGlvbiB7CitjbGFzcyBHZXRPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
OjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2Fj
dGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSog
YmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+
IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG1ldGFkYXRhLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tzKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRl
OgotICAgIEdldE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2Fj
dGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3Qg
aW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
ICAgIEdldE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0
YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAg
ICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdT
dG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRhLmlkKQpA
QCAtMjYwLDcgKzI2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtZXRhZGF0YS5vYmpl
Y3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSWQpLmlkID09IG9iamVjdFN0b3JlSWQpOwogICAgIH0K
IAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9u
OworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rp
b247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5n
U3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgY29uc3QgaW50NjRf
dCBtX29iamVjdFN0b3JlSWQ7CkBAIC0yNzIsMTUgKzI3NCwxNSBAQCBwcml2YXRlOgogICAgIGNv
bnN0IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgUHV0T3Bl
cmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7
CitjbGFzcyBQdXRPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JiBpbmRleEtleXMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9u
PiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
Y29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJ
bmRleEtleXM+JiBpbmRleEtleXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhL
ZXlzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7
CiBwcml2YXRlOgotICAgIFB1dE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
KiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGlu
dDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3Rv
cmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBr
ZXksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJhdGlv
bihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJ
REJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+JiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtl
eXM+JiBpbmRleEtleXMpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAg
ICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFz
ZUlkKGRhdGFiYXNlSWQpCkBAIC0yOTQsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rp
b247CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2Fj
dGlvbjsKICAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tp
bmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmU7CkBAIC0zMDYsMzMgKzMwOCwzMyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+IG1faW5kZXhLZXlzOwogfTsKIAot
Y2xhc3MgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24g
OiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbih0cmFuc2Fj
dGlvbiwgaW5kZXhDb3VudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9W
RVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIHNpemVfdCBpbmRleENvdW50
KQorICAgIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uLCBzaXplX3QgaW5kZXhDb3VudCkKICAgICAgICAgOiBtX3RyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1faW5kZXhDb3VudChpbmRleENvdW50KQog
ICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4g
bV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IHNpemVfdCBtX2luZGV4Q291bnQ7CiB9OwogCi1j
bGFzcyBPcGVuQ3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBPcGVuQ3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElE
Qk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBp
bmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJz
b3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwg
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVy
YXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5DdXJzb3JPcGVy
YXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNh
bGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJ
TkFMOwogcHJpdmF0ZToKLSAgICBPcGVuQ3Vyc29yT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5
cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpD
dXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAg
IDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShi
YWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCkBAIC0zNDYs
NyArMzQ4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBSZWZQdHI8
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2
NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKQEAg
LTM1OCwxNSArMzYwLDE1IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNr
cz4gbV9jYWxsYmFja3M7CiB9OwogCi1jbGFzcyBDb3VudE9wZXJhdGlvbiA6IHB1YmxpYyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ291bnRPcGVyYXRp
b24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJm
YWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRy
PElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ291bnRPcGVyYXRp
b24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
aW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDb3VudE9wZXJhdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIENvdW50T3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAg
OiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJh
Y2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKQEAgLTM3Nyw3
ICszNzksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0
X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpAQCAt
Mzg2LDE1ICszODgsMTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tz
PiBtX2NhbGxiYWNrczsKIH07CiAKLWNsYXNzIERlbGV0ZVJhbmdlT3BlcmF0aW9uIDogcHVibGlj
IElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBEZWxldGVS
YW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGV0ZVJhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBi
YWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsK
IHByaXZhdGU6Ci0gICAgRGVsZXRlUmFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0
b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgRGVsZXRlUmFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUs
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
ICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2lu
Z1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkK
QEAgLTQwNCw3ICs0MDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0
IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNv
bnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9y
ZUlkOwpAQCAtNDEyLDE1ICs0MTQsMTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLWNsYXNzIENsZWFyT3BlcmF0aW9uIDogcHVi
bGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBDbGVh
ck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRl
KElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDbGVhck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgQ2xlYXJPcGVyYXRpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBDbGVh
ck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNl
SWQpCkBAIC00MjksNyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBj
b25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAg
ICBjb25zdCBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0
U3RvcmVJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4YmU1ODNhLi45NzUwMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjcxLDYgKzE2NzEsOCBAQAog
CQk1MTJERDhGQjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEYxMEQ5MUU2QUYw
MDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MTJERDhGQzBEOTFFNkFG
MDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJl
c291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTEyREQ4RkQwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMzBEOTFFNkFGMDAw
Rjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCAqLzsgfTsKKwkJNTEyRUE5QkMxODFGMkVFMDAwMUQw
MUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyRUE5QkIxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdP
cGVuQ2FsbC5oICovOyB9OworCQk1MTJFQTlCRTE4MjAyODU3MDAxRDAxRTAgLyogSURCT3BlcmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJF
QTlCRDE4MjAyODU3MDAxRDAxRTAgLyogSURCT3BlcmF0aW9uLmggKi87IH07CiAJCTUxMzI3RDYw
MTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5r
RG9jdW1lbnQuaCAqLzsgfTsKIAkJNTEzMjdENjExMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAqLzsgfTsKIAkJNTEz
RjE0NTMwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRjE0NTEwQUI2MzRDNDAwMDk0RERGIC8q
IEljb25Mb2FkZXIuY3BwICovOyB9OwpAQCAtODI2NSw2ICs4MjY3LDggQEAKIAkJNTEyREQ4RjEw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBcmNoaXZlUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyY2hpdmVSZXNvdXJjZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJERDhGMzBEOTFFNkFGMDAwRjg5RUUgLyog
QXJjaGl2ZUZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJjaGl2
ZUZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyRUE5QkIxODFGMkVF
MDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJREJQZW5kaW5nT3BlbkNhbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEyRUE5QkQxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTEzMjdENUUxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5rRG9jdW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzMjdENUYxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtE
b2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5rRG9j
dW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNGMTQ1MTBBQjYzNEM0
MDAwOTREREYgLyogSWNvbkxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSWNvbkxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Njc4NSw2ICsxNjc4OSw4IEBACiAJCQkJNTFENzE5OUMxODExMDZFMDAwMTZEQzUxIC8qIElEQk9w
ZW5EQlJlcXVlc3QuY3BwICovLAogCQkJCTUxRDcxOTlEMTgxMTA2RTAwMDE2REM1MSAvKiBJREJP
cGVuREJSZXF1ZXN0LmggKi8sCiAJCQkJNTFENzE5OUUxODExMDZFMDAwMTZEQzUxIC8qIElEQk9w
ZW5EQlJlcXVlc3QuaWRsICovLAorCQkJCTUxMkVBOUJEMTgyMDI4NTcwMDFEMDFFMCAvKiBJREJP
cGVyYXRpb24uaCAqLywKKwkJCQk1MTJFQTlCQjE4MUYyRUUwMDAxRDAxRTAgLyogSURCUGVuZGlu
Z09wZW5DYWxsLmggKi8sCiAJCQkJNTFENzE5OUYxODExMDZFMDAwMTZEQzUxIC8qIElEQlBlbmRp
bmdUcmFuc2FjdGlvbk1vbml0b3IuY3BwICovLAogCQkJCTUxRDcxOUEwMTgxMTA2RTAwMDE2REM1
MSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmggKi8sCiAJCQkJNTFFQUM1QjAxODE2
M0Y0RTAwNEYxQkE0IC8qIElEQlJlY29yZElkZW50aWZpZXIuaCAqLywKQEAgLTIyOTA2LDYgKzIy
OTEyLDcgQEAKIAkJCQk3OUFDOTIxOTEwOTk0NUM4MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk4NTQzRTBDRDNEOThDMDAwNjlCQzEgLyogSlND
b25zb2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGREExNUVCRTEyQjAzRjBCMDAzQTU4M0EgLyog
SlNDb252b2x2ZXJOb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJFQTlCQzE4MUYyRUUwMDAx
RDAxRTAgLyogSURCUGVuZGluZ09wZW5DYWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTZGRDQ4
RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMwNzA1REEwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTc1Q0EyQTIxMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMjk1LDYgKzIzMzAyLDcgQEAKIAkJCQlCMkZBM0RENzBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEz
REQ5MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREIwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNl
Z0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkVBOUJFMTgyMDI4NTcwMDFEMDFFMCAvKiBJ
REJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzREREMEFCNzVBNkYwMDBFNUFD
NCAvKiBKU1NWR1BhdGhTZWdNb3ZldG9BYnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRERG
MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdNb3ZldG9SZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3MDU4NTIxMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5o
IGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="commit-queue"
          id="238118"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215402</attachid>
            <date>2013-10-29 11:28:44 -0700</date>
            <delta_ts>2013-10-29 11:48:32 -0700</delta_ts>
            <desc>Patch v2 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82706</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YzY5MDJjLi42NWU0Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDEzLTEwLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBHZXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMgKmFsbW9zdCog
cmVhZHkgdG8gZ28gY3Jvc3MgcGxhdGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGludm9sdmVzOgorICAgICAgICAtIFNwbGl0dGluZyBv
dXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIGludG8gaXRzIG93biBo
ZWFkZXIKKyAgICAgICAgLSBTcGxpdHRpbmcgb3V0IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBl
bmRpbmdPcGVuQ2FsbCBpbnRvIGl0cyBvd24gaGVhZGVyCisgICAgICAgIC0gUmV3b3JraW5nIHRo
ZSBMZXZlREIgT3BlcmF0aW9ucyB0byBoYW5kbGUgdGhlIGJhc2UgY2xhc3MgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlCisgICAgICAgIC0gQWRkaW5nIHZpcnR1YWwgbWV0aG9kcyBpbiBh
IGZldyBvZiB0aGUgKkludGVyZmFjZSBjbGFzc2VzIHRvIHN1cHBvcnQgdGhlIGFib3ZlCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxi
YWNrcy5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpz
ZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQk9wZXJhdGlvbjo6fklEQk9wZXJhdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNhbGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5n
T3BlbkNhbGw6OmNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNh
bGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdPcGVu
Q2FsbDo6dmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNhbGw6OnRy
YW5zYWN0aW9uSWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ09wZW5DYWxsOjpJREJQ
ZW5kaW5nT3BlbkNhbGwpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1
cnNvckJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpDdXJz
b3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZU9wZW5DdXJz
b3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlQ2xl
YXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBl
cmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZUFib3J0T3Bl
cmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Q3Jl
YXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RT
dG9yZU9wZXJhdGlvbjo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25D
aGFuZ2VPcGVyYXRpb246OlZlcnNpb25DaGFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVBYm9y
dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6Q3JlYXRlSW5kZXhPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OkNyZWF0ZUlu
ZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbjo6RGVs
ZXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9w
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4QWJvcnRPcGVy
YXRpb246OkRlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2V0
T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2V0T3BlcmF0aW9uOjpHZXRP
cGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpQdXRPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb3VudE9wZXJhdGlvbjo6Q291bnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5n
ZU9wZXJhdGlvbjo6RGVsZXRlUmFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6
Q2xlYXJPcGVyYXRpb24pOgorCiAyMDEzLTEwLTI4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBJREIgZmFjdG9yeSBjcmVhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDRmYjQxMjEuLjA4OWJkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg0MCw2ICsxODQwLDggQEAgd2ViY29yZV9tb2R1bGVz
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNh
bGwuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVjb3JkSWRlbnRpZmllci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggYWJhNzcxYi4uNmQwYjUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAg
LTI5LDcgKzI5LDYgQEAKICNpZm5kZWYgSURCQ2FsbGJhY2tzX2gKICNkZWZpbmUgSURCQ2FsbGJh
Y2tzX2gKIAotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJ
REJLZXlQYXRoLmgiCkBAIC00MSw2ICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTsKK2NsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7CiAKIGNsYXNzIElEQkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkNhbGxiYWNr
cz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDk2M2YzMmIuLjcxMTVi
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNo
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9
IDA7CisKKyAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
SURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2hhcmVkQnVmZmVy
KiB2YWx1ZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAKaW5kZXggYmU4ODU5OC4uMzRjYzkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0UwogICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5
OwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IHN0b3JlID0gYmFja2luZ1N0
b3JlKCk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gc3RvcmUgPSBtX2Jh
Y2tpbmdTdG9yZTsKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9u
b3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21w
bGV4aXR5LgogICAgIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVy
OwogICAgIGJvb2wgb2sgPSBzdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9tZXRhZGF0YS5pZCwgb2JqZWN0U3RvcmVJ
ZCwgKnByaW1hcnlLZXksIHJlY29yZElkZW50aWZpZXIpOwpAQCAtNDE5LDEwICs0MTksMTAgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gT3BlbiBjYWxscyBjYW4gYmUgcmVxdWV1ZWQgaWYgYW4gb3Bl
biBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KLSAgICBEZXF1ZTxP
d25QdHI8UGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKKyAgICBEZXF1ZTxPd25Q
dHI8SURCUGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKICAgICBtX3BlbmRpbmdP
cGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVu
Q2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRp
bmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIE93blB0
cjxJREJQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMu
dGFrZUZpcnN0KCk7CiAgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2Fs
bGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09w
ZW5DYWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdPcGVuQ2FsbC0+dmVyc2lvbigpKTsKICAg
ICB9CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpv
cGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJh
c2VDYWxsYmFja3M7CiAKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8
fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5n
T3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5DYWxscy5hcHBlbmQoSURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywg
KmRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YQogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX21ldGFkYXRhLnZlcnNpb24pOwogICAg
IC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LgogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlv
bkNvdW50KCkpIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Bl
bkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklk
LCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQo
SURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywgKmRhdGFiYXNlQ2FsbGJhY2tz
LCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA5ZTczNjNmLi5kNmU2OGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZElt
cGxfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsX2gKIAotI2luY2x1ZGUgIklEQkNh
bGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTQ5LDE4ICs0
OCwxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50
aWZpZXIpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAotICAgIElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSgpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKLSAgICBpbnQ2NF90
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQotICAgIHZvaWQgYWRkT2JqZWN0
U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4T2JqZWN0
U3RvcmVJZCk7Ci0gICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpOwotICAgIHZvaWQgYWRkSW5kZXgoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhJbmRleElkKTsKLSAgICB2b2lkIHJlbW92ZUlu
ZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKKyAgICB2aXJ0dWFs
IGludDY0X3QgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX21ldGFkYXRhLmlkOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKICAgICAvLyBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CkBAIC05MCw4
ICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9t
ZXRhZGF0YTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VmVyc2lvbih1aW50NjRfdCB2
ZXJzaW9uKSBPVkVSUklERSB7IG1fbWV0YWRhdGEudmVyc2lvbiA9IHZlcnNpb247IH0KKwogICAg
IHZpcnR1YWwgYm9vbCBpc0lEQkRhdGFiYXNlQmFja2VuZEltcGwoKSBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ1NlY29uZEhhbGZPcGVuKCkg
T1ZFUlJJREUgeyByZXR1cm4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW47IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5D
YWxsPiBwZW5kaW5nT3BlbkNhbGwpIE9WRVJSSURFIHsgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4g
PSBwZW5kaW5nT3BlbkNhbGw7IH0KKwogICAgIGNsYXNzIFZlcnNpb25DaGFuZ2VPcGVyYXRpb247
CiAgICAgY2xhc3MgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOwogCkBAIC0xMTksMzMgKzEy
Myw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSo+IFRyYW5zYWN0aW9uTWFwOwogICAgIFRyYW5zYWN0aW9uTWFw
IG1fdHJhbnNhY3Rpb25zOwogCi0gICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3QgdmVyc2lvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
ZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25J
ZCwgdmVyc2lvbikpOwotICAgICAgICB9Ci0gICAgICAgIElEQkNhbGxiYWNrcyogY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KLSAgICAgICAgSURCRGF0YWJhc2VDYWxs
YmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrcy5n
ZXQoKTsgfQotICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
LSAgICAgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbklkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2
ZXJzaW9uKQotICAgICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAgICAg
ICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCi0gICAgICAgICAgICAs
IG1fdmVyc2lvbih2ZXJzaW9uKQotICAgICAgICAgICAgLCBtX3RyYW5zYWN0aW9uSWQodHJhbnNh
Y3Rpb25JZCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IG1fY2FsbGJhY2tzOwotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7Ci0gICAgICAgIGludDY0X3QgbV92ZXJzaW9uOwotICAgICAgICBj
b25zdCBpbnQ2NF90IG1fdHJhbnNhY3Rpb25JZDsKLSAgICB9OwotCi0gICAgRGVxdWU8T3duUHRy
PFBlbmRpbmdPcGVuQ2FsbD4+IG1fcGVuZGluZ09wZW5DYWxsczsKLSAgICBPd25QdHI8UGVuZGlu
Z09wZW5DYWxsPiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbjsKKyAgICBEZXF1ZTxPd25QdHI8SURC
UGVuZGluZ09wZW5DYWxsPj4gbV9wZW5kaW5nT3BlbkNhbGxzOworICAgIE93blB0cjxJREJQZW5k
aW5nT3BlbkNhbGw+IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuOwogCiAgICAgY2xhc3MgUGVuZGlu
Z0RlbGV0ZUNhbGwgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5k
ZXggMTQ3NWRhNS4uN2YyZWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2
LDggKzI2LDEyIEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAjZGVm
aW5lIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM3LDE0ICs0MSwxNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7Ci1jbGFzcyBJREJDYWxsYmFj
a3M7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIElEQktleTsKIGNsYXNzIElE
QktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKLXN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRh
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK3N0
cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CisK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBJbmRleEtleXM7CiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCkBAIC01NSw2ICs2MCw4IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9
CiAKKyAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkg
Y29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkg
PSAwOwpAQCAtOTEsNiArOTgsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVS
YW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGludDY0
X3QgaWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9y
ZUlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4SW5kZXhJZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFZlcnNp
b24odWludDY0X3QpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nU2Vjb25kSGFs
Zk9wZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihQ
YXNzT3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4pID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBp
c0lEQkRhdGFiYXNlQmFja2VuZEltcGwoKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVyYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzBjMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3BlcmF0aW9uX2gKKyNkZWZpbmUgSURCT3Bl
cmF0aW9uX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIElEQk9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURC
T3BlcmF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyNlbmRpZiAvLyBJREJPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNhbGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xNjc1YzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5DYWxsLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSURCUGVuZGluZ09wZW5DYWxsX2gKKyNkZWZpbmUgSURC
UGVuZGluZ09wZW5DYWxsX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQ2FsbGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VD
YWxsYmFja3M7CisKK2NsYXNzIElEQlBlbmRpbmdPcGVuQ2FsbCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5DYWxsPiBjcmVhdGUoSURCQ2FsbGJhY2tzJiBj
YWxsYmFja3MsIElEQkRhdGFiYXNlQ2FsbGJhY2tzJiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IElEQlBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CisgICAgfQorICAgIElEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KKyAgICBJREJEYXRhYmFz
ZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLmdldCgpOyB9CisgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9
CisgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bklkOyB9CisKK3ByaXZhdGU6CisgICAgSURCUGVuZGluZ09wZW5DYWxsKElEQkNhbGxiYWNrcyYg
Y2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyYgZGF0YWJhc2VDYWxsYmFja3MsIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1fY2FsbGJhY2tz
KCZjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcygmZGF0YWJhc2VDYWxs
YmFja3MpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV90cmFuc2Fj
dGlvbklkKHRyYW5zYWN0aW9uSWQpCisgICAgeworICAgIH0KKyAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0
YWJhc2VDYWxsYmFja3M7CisgICAgaW50NjRfdCBtX3ZlcnNpb247CisgICAgY29uc3QgaW50NjRf
dCBtX3RyYW5zYWN0aW9uSWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJQZW5kaW5nT3BlbkNh
bGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmlu
ZGV4IDliYzIxY2UuLjdhZGJhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJJREJBbnkuaCIK
ICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGY4ODBjOWMu
LjgxODg3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzEsNyArNzIsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZURlbGV0ZVJhbmdlT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVByZWVtcHRpdmVFdmVudCgpID0gMDsKKwogICAgIHZpcnR1YWwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogYmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UmIGRhdGFiYXNlKCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvciYsIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkKSA9IDA7CiAKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQ3Vyc29yQmFja2VuZExldmVsREIuY3BwCmlu
ZGV4IDQyNDU3N2QuLjhlMzFhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCQ3Vyc29yQmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQ3Vyc29yQmFja2VuZExldmVs
REIuY3BwCkBAIC0zNSwxNSArMzUsMTYgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgi
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJLZXlSYW5n
ZS5oIgorI2luY2x1ZGUgIklEQk9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCQ3Vyc29yQmFja2Vu
ZExldmVsREI6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgSURCQ3Vyc29yQmFja2VuZExldmVs
REI6OkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6
Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZExldmVsREI+IGN1
cnNvciwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRMZXZlbERCPiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbihjdXJzb3IsIGtl
eSwgY2FsbGJhY2tzKSk7CiAgICAgfQpAQCAtNjEsOSArNjIsOSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgSURCQ3Vyc29yQmFj
a2VuZExldmVsREI6OkN1cnNvckFkdmFuY2VPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIElEQkN1cnNvckJhY2tlbmRMZXZl
bERCOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6
T3BlcmF0aW9uPiBjcmVhdGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vy
c29yLCB1bnNpZ25lZCBsb25nIGNvdW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZExldmVsREI+IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbihjdXJzb3IsIGNvdW50LCBjYWxs
YmFja3MpKTsKICAgICB9CkBAIC04MSw5ICs4Miw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9OwogCi1jbGFzcyBJREJDdXJzb3JCYWNrZW5kTGV2
ZWxEQjo6Q3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIElEQkN1cnNvckJhY2tlbmRM
ZXZlbERCOjpDdXJzb3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVy
YXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZExldmVsREI+IGN1cnNvciwgaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVh
dGUoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vyc29yLCBpbnQgbnVtYmVy
VG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24o
Y3Vyc29yLCBudW1iZXJUb0ZldGNoLCBjYWxsYmFja3MpKTsKICAgICB9CkBAIC0xMDQsNyArMTA1
LDcgQEAgcHJpdmF0ZToKIElEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpJREJDdXJzb3JCYWNrZW5k
TGV2ZWxEQihQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yPiBjdXJz
b3IsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIDogbV90YXNrVHlwZSh0
YXNrVHlwZSkKICAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBlKQotICAgICwgbV9kYXRhYmFz
ZSh0cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKSkKKyAgICAsIG1fZGF0YWJhc2UoJih0cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKSkpCiAgICAgLCBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwg
bV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCiAgICAgLCBtX2N1cnNvcihjdXJzb3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1
cnNvckJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmgKaW5kZXggN2Y3MTM0Ni4uNTZmYTlmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJD
dXJzb3JCYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCQ3Vyc29yQmFja2VuZExldmVsREIuaApAQCAtNjIsOSArNjIsMTAgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hl
cywgaW50IHVudXNlZFByZWZldGNoZXMpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hh
bmRsZXJDYWxsYmFjaygpIHsgfQogCi0gICAgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3Vyc29yLT5rZXkoKTsgfQotICAgIFBhc3NSZWZQdHI8SURCS2V5PiBwcmlt
YXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKTsgfQotICAgIFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIChtX2N1cnNvclR5
cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSA/IDAgOiBtX2N1cnNvci0+dmFsdWUoKTsg
fQorICAgIHZpcnR1YWwgSURCS2V5KiBrZXkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1
cnNvci0+a2V5KCkuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIElEQktleSogcHJpbWFyeUtleSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCkuZ2V0KCk7IH0KKyAg
ICB2aXJ0dWFsIFNoYXJlZEJ1ZmZlciogdmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAo
bV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3It
PnZhbHVlKCkuZ2V0KCk7IH0KKwogICAgIHZvaWQgY2xvc2UoKTsKIAogcHJpdmF0ZToKQEAgLTc2
LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
VGFza1R5cGUgbV90YXNrVHlwZTsKICAgICBJbmRleGVkREI6OkN1cnNvclR5cGUgbV9jdXJzb3JU
eXBlOwotICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNl
OworICAgIGNvbnN0IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IG1fZGF0YWJh
c2U7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rp
b247CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwCmluZGV4IDlhYTI1N2UuLjRiMDJkMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcApAQCAt
NzQsNyArNzQsNyBAQCBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjp+SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQigpCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gRmluaXNoZWQpOwogfQog
Ci12b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlVGFzayhJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlIHR5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9u
PiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrKQordm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gdGFzaywgUGFzc093
blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFzaykKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5p
c2hlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQjo6YWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBl
cnJvcikKIAogICAgIC8vIFJ1biB0aGUgYWJvcnQgdGFza3MsIGlmIGFueS4KICAgICB3aGlsZSAo
IW1fYWJvcnRUYXNrUXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxPcGVyYXRpb24+
IHRhc2sobV9hYm9ydFRhc2tRdWV1ZS50YWtlRmlyc3QoKSk7CisgICAgICAgIE93blB0cjxJREJP
cGVyYXRpb24+IHRhc2sobV9hYm9ydFRhc2tRdWV1ZS50YWtlRmlyc3QoKSk7CiAgICAgICAgIHRh
c2stPnBlcmZvcm0oKTsKICAgICB9CiAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9u
QmFja2VuZExldgogICAgIFRhc2tRdWV1ZSogdGFza1F1ZXVlID0gbV9wZW5kaW5nUHJlZW1wdGl2
ZUV2ZW50cyA/ICZtX3ByZWVtcHRpdmVUYXNrUXVldWUgOiAmbV90YXNrUXVldWU7CiAgICAgd2hp
bGUgKCF0YXNrUXVldWUtPmlzRW1wdHkoKSAmJiBtX3N0YXRlICE9IEZpbmlzaGVkKSB7CiAgICAg
ICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwotICAgICAgICBPd25QdHI8T3BlcmF0aW9u
PiB0YXNrKHRhc2tRdWV1ZS0+dGFrZUZpcnN0KCkpOworICAgICAgICBPd25QdHI8SURCT3BlcmF0
aW9uPiB0YXNrKHRhc2tRdWV1ZS0+dGFrZUZpcnN0KCkpOwogICAgICAgICB0YXNrLT5wZXJmb3Jt
KCk7CiAKICAgICAgICAgLy8gRXZlbnQgaXRzZWxmIG1heSBjaGFuZ2Ugd2hpY2ggcXVldWUgc2hv
dWxkIGJlIHByb2Nlc3NlZCBuZXh0LgpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVHZXRPcGVyYXRpb24oY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVQ
dXRPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRh
ZGF0YSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4g
a2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRl
eElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykKIHsKLSAgICBzY2hlZHVs
ZVRhc2soUHV0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRh
dGFiYXNlKCktPmlkKCksIG9iamVjdFN0b3JlTWV0YWRhdGEsIHZhbHVlLCBrZXksIHB1dE1vZGUs
IGNhbGxiYWNrcywgaW5kZXhJZHMsIGluZGV4S2V5cykpOworICAgIHNjaGVkdWxlVGFzayhQdXRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS5p
ZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3Ms
IGluZGV4SWRzLCBpbmRleEtleXMpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCOjpzY2hlZHVsZVNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbihzaXplX3QgaW5kZXhDb3Vu
dCkKQEAgLTMxMiwyNCArMzEyLDI4IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
Qjo6c2NoZWR1bGVTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oc2l6ZV90IGluZGV4CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVPcGVuQ3Vyc29yT3BlcmF0aW9u
KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJ
bmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKLSAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLT5pZCgpLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJh
Y2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJh
Y2tzKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVD
b3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiB7Ci0gICAgc2NoZWR1bGVUYXNrKENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNlKCktPmlkKCksIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKKyAgICBzY2hlZHVsZVRhc2soQ291bnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS5p
ZCgpLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CiB9CiAK
IHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVEZWxldGVSYW5nZU9w
ZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3Jl
LmdldCgpLCBkYXRhYmFzZSgpLT5pZCgpLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwgY2FsbGJh
Y2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhp
cywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwg
a2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI6OnNjaGVkdWxlQ2xlYXJPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVkdWxlVGFzayhDbGVh
ck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgp
LT5pZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKKyAgICBzY2hlZHVsZVRhc2soQ2xl
YXJPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2Uo
KS5pZCgpLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKIH0KIAorUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpjcmVh
dGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTo6Q3Vyc29yJiBjdXJzb3Is
IEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCit7CisgICAg
cmV0dXJuIElEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpjcmVhdGUoJmN1cnNvciwgY3Vyc29yVHlw
ZSwgdGFza1R5cGUsIHRoaXMsIG9iamVjdFN0b3JlSWQpOworfQogCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDAyNDYwYTMuLmUwOTQzMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJy
b3IuaCIKKyNpbmNsdWRlICJJREJPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgpAQCAtNTMsMjQgKzU0LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREUgRklOQUw7CiAKLSAgICBjbGFzcyBPcGVyYXRpb24g
ewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T3BlcmF0aW9uKCkgeyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgPSAwOwotICAgIH07Ci0KICAgICB2aXJ0dWFsIHZvaWQg
cnVuKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBt
b2RlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgY29uc3Qg
SGFzaFNldDxpbnQ2NF90PiYgc2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX29iamVj
dFN0b3JlSWRzOyB9Ci0gICAgdm9pZCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxPcGVyYXRpb24+
IHRhc2ssIFBhc3NPd25QdHI8T3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKSB7IHNjaGVk
dWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHRhc2ssIGFi
b3J0VGFzayk7IH0KLSAgICB2b2lkIHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U6OlRhc2tUeXBlLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4sIFBhc3NPd25QdHI8T3BlcmF0
aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKTsKKyAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3du
UHRyPElEQk9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFz
ayA9IG51bGxwdHIpIHsgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6
Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsgfQorICAgIHZvaWQgc2NoZWR1bGVUYXNrKElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8SURCT3BlcmF0
aW9uPiwgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAg
IHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRMZXZlbERCKik7CiAgICAg
dm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQiopOwotICAg
IHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzKys7
IH0KLSAgICB2b2lkIGRpZENvbXBsZXRlUHJlZW1wdGl2ZUV2ZW50KCkgeyBtX3BlbmRpbmdQcmVl
bXB0aXZlRXZlbnRzLS07IEFTU0VSVChtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzID49IDApOyB9
CisgICAgdmlydHVhbCB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIE9WRVJSSURFIHsgbV9wZW5k
aW5nUHJlZW1wdGl2ZUV2ZW50cysrOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlUHJl
ZW1wdGl2ZUV2ZW50KCkgT1ZFUlJJREUgeyBtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzLS07IEFT
U0VSVChtX3BlbmRpbmdQcmVlbXB0aXZlRXZlbnRzID49IDApOyB9CiAgICAgdmlydHVhbCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U6OlRyYW5zYWN0aW9uKiBiYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpIHsgcmV0dXJuICZtX3RyYW5zYWN0aW9uOyB9CiAKLSAgICBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKiBkYXRhYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7IH0KKyAgICB2
aXJ0dWFsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSYgZGF0YWJhc2UoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiAqbV9kYXRhYmFzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYp
IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZURlbGV0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSBPVkVSUklERSBGSU5B
TDsKQEAgLTg0LDcgKzc5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNv
dW50T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSBG
SU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEZWxldGVSYW5nZU9wZXJhdGlvbihpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4pIE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNs
ZWFyT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+KSBPVkVSUklERSBGSU5BTDsKLSAgICAKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJD
dXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVDdXJzb3JCYWNrZW5kKElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZTo6Q3Vyc29yJiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURF
OworCiBwcml2YXRlOgogICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIoSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCosIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+LCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpU
cmFuc2FjdGlvbk1vZGUpOwogCkBAIC0xMTEsNyArMTA4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBtX2RhdGFiYXNlOwogCi0gICAgdHlwZWRlZiBEZXF1ZTxPd25QdHI8
T3BlcmF0aW9uPj4gVGFza1F1ZXVlOworICAgIHR5cGVkZWYgRGVxdWU8T3duUHRyPElEQk9wZXJh
dGlvbj4+IFRhc2tRdWV1ZTsKICAgICBUYXNrUXVldWUgbV90YXNrUXVldWU7CiAgICAgVGFza1F1
ZXVlIG1fcHJlZW1wdGl2ZVRhc2tRdWV1ZTsKICAgICBUYXNrUXVldWUgbV9hYm9ydFRhc2tRdWV1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
T3BlcmF0aW9ucy5jcHAKaW5kZXggZGFkNjUwNS4uYjI4N2EyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBDcmVhdGVPYmplY3RTdG9y
ZU9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVhdGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVj
dFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNh
Y3Rpb24tPmRhdGFiYXNlKCktPmlkKCksIG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgbV9vYmpl
Y3RTdG9yZU1ldGFkYXRhLm5hbWUsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5rZXlQYXRoLCBtX29i
amVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkpIHsKKyAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5jcmVhdGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVNZXRh
ZGF0YS5pZCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUsIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YS5rZXlQYXRoLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkpIHsKICAgICAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJ
bnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVjdFN0b3Jl
TWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFi
b3J0KGVycm9yLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTUwLDcgKzUwLDcgQEAg
dm9pZCBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybSgpCiB2b2lkIENyZWF0ZUlu
ZGV4T3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIkNyZWF0ZUlu
ZGV4T3BlcmF0aW9uIik7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS0+aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEuaWQsIG1faW5k
ZXhNZXRhZGF0YS5uYW1lLCBtX2luZGV4TWV0YWRhdGEua2V5UGF0aCwgbV9pbmRleE1ldGFkYXRh
LnVuaXF1ZSwgbV9pbmRleE1ldGFkYXRhLm11bHRpRW50cnkpKSB7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZS0+Y3JlYXRlSW5kZXgobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1f
aW5kZXhNZXRhZGF0YS5pZCwgbV9pbmRleE1ldGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5r
ZXlQYXRoLCBtX2luZGV4TWV0YWRhdGEudW5pcXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRy
eSkpIHsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJ
bnRlcm5hbCBlcnJvciB3aGVuIHRyeWluZyB0byBjcmVhdGUgaW5kZXggJyVzJy4iLCBtX2luZGV4
TWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgQ3JlYXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0oKQog
dm9pZCBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0coU3Rv
cmFnZUFQSSwgIkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb24iKTsKLSAgICBtX3RyYW5zYWN0aW9u
LT5kYXRhYmFzZSgpLT5yZW1vdmVJbmRleChtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJZCk7Cisg
ICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5yZW1vdmVJbmRleChtX29iamVjdFN0b3JlSWQs
IG1faW5kZXhJZCk7CiB9CiAKIHZvaWQgRGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0oKQog
ewogICAgIExPRyhTdG9yYWdlQVBJLCAiRGVsZXRlSW5kZXhPcGVyYXRpb24iKTsKLSAgICBib29s
IG9rID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmlkKCksIG1fb2Jq
ZWN0U3RvcmVJZCwgbV9pbmRleE1ldGFkYXRhLmlkKTsKKyAgICBib29sIG9rID0gbV9iYWNraW5n
U3RvcmUtPmRlbGV0ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2lu
ZGV4TWV0YWRhdGEuaWQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxl
dGluZyBpbmRleCAnJXMnLiIsIG1faW5kZXhNZXRhZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOwpAQCAtNzUsNyArNzUsNyBAQCB2
b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3JtKCkKIHZvaWQgRGVsZXRlSW5kZXhBYm9y
dE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEZWxldGVJbmRl
eEFib3J0T3BlcmF0aW9uIik7Ci0gICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+YWRkSW5k
ZXgobV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEsIElEQkluZGV4TWV0YWRhdGE6Oklu
dmFsaWRJZCk7CisgICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5hZGRJbmRleChtX29iamVj
dFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YSwgSURCSW5kZXhNZXRhZGF0YTo6SW52YWxpZElkKTsK
IH0KIAogdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0oKQpAQCAtMjc4LDcgKzI3OCw4IEBAIHZv
aWQgT3BlbkN1cnNvck9wZXJhdGlvbjo6cGVyZm9ybSgpCiAgICAgfQogCiAgICAgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZShzdGF0aWNfY2FzdDxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlPihtX3Rhc2tUeXBlKSk7Ci0gICAgUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRMZXZlbERCPiBjdXJzb3IgPSBJREJDdXJzb3JCYWNrZW5kTGV2ZWxE
Qjo6Y3JlYXRlKGJhY2tpbmdTdG9yZUN1cnNvci5nZXQoKSwgbV9jdXJzb3JUeXBlLCB0YXNrVHlw
ZSwgbV90cmFuc2FjdGlvbi5nZXQoKSwgbV9vYmplY3RTdG9yZUlkKTsKKworICAgIFJlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBjdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVD
dXJzb3JCYWNrZW5kKCpiYWNraW5nU3RvcmVDdXJzb3IsIG1fY3Vyc29yVHlwZSwgdGFza1R5cGUs
IG1fb2JqZWN0U3RvcmVJZCk7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1
cnNvci0+a2V5KCksIGN1cnNvci0+cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOwogfQog
CkBAIC0zMzMsNyArMzM0LDcgQEAgdm9pZCBDbGVhck9wZXJhdGlvbjo6cGVyZm9ybSgpCiB2b2lk
IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0coU3RvcmFn
ZUFQSSwgIkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7Ci0gICAgYm9vbCBvayA9IG1fYmFj
a2luZ1N0b3JlLT5kZWxldGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVU
cmFuc2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5pZCgpLCBtX29iamVjdFN0
b3JlTWV0YWRhdGEuaWQpOworICAgIGJvb2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2Jq
ZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuaWQpOwogICAg
IGlmICghb2spIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURC
RGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3Is
IFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUgJyVz
Jy4iLCBtX29iamVjdFN0b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAg
IG1fdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKQEAgLTM0Myw0MCArMzQ0LDQwIEBAIHZvaWQg
RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oKQogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0co
U3RvcmFnZUFQSSwgIlZlcnNpb25DaGFuZ2VPcGVyYXRpb24iKTsKLSAgICBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsKiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7Ci0gICAgaW50
NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJhc2UtPmlkKCk7Ci0gICAgdWludDY0X3Qgb2xkVmVyc2lv
biA9IGRhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb247CisgICAgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlJiBkYXRhYmFzZSA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CisgICAgaW50
NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJhc2UuaWQoKTsKKyAgICB1aW50NjRfdCBvbGRWZXJzaW9u
ID0gZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJzaW9uOwogCiAgICAgLy8gRklYTUU6IERhdGFiYXNl
IHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0IHRoaXMgY29kZSBleHBlY3Rl
ZCBpbnQ2NF90LgogICAgIEFTU0VSVChtX3ZlcnNpb24gPiAoaW50NjRfdClvbGRWZXJzaW9uKTsK
LSAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV92ZXJzaW9uOwotICAgIGlmICgh
ZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24obV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJh
c2UtPm1fbWV0YWRhdGEudmVyc2lvbikpIHsKKyAgICBkYXRhYmFzZS5zZXRDdXJyZW50VmVyc2lv
bihtX3ZlcnNpb24pOworICAgIGlmICghZGF0YWJhc2UuYmFja2luZ1N0b3JlKCktPnVwZGF0ZUlE
QkRhdGFiYXNlSW50VmVyc2lvbihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS5tZXRhZGF0YSgpLnZlcnNpb24pKSB7CiAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Igd3JpdGluZyBkYXRh
IHRvIHN0YWJsZSBzdG9yYWdlIHdoZW4gdXBkYXRpbmcgdmVyc2lvbi4iKTsKICAgICAgICAgbV9j
YWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydChl
cnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJUKCFkYXRhYmFzZS0+bV9w
ZW5kaW5nU2Vjb25kSGFsZk9wZW4pOwotICAgIGRhdGFiYXNlLT5tX3BlbmRpbmdTZWNvbmRIYWxm
T3BlbiA9IFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKG1fY2FsbGJhY2tzLCBtX2RhdGFiYXNlQ2Fs
bGJhY2tzLCBtX3RyYW5zYWN0aW9uSWQsIG1fdmVyc2lvbik7Ci0gICAgbV9jYWxsYmFja3MtPm9u
VXBncmFkZU5lZWRlZChvbGRWZXJzaW9uLCBkYXRhYmFzZSwgZGF0YWJhc2UtPm1ldGFkYXRhKCkp
OworICAgIEFTU0VSVCghZGF0YWJhc2UuaGFzUGVuZGluZ1NlY29uZEhhbGZPcGVuKCkpOworICAg
IGRhdGFiYXNlLnNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihJREJQZW5kaW5nT3BlbkNhbGw6OmNy
ZWF0ZSgqbV9jYWxsYmFja3MsICptX2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uSWQs
IG1fdmVyc2lvbikpOworICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lv
biwgJmRhdGFiYXNlLCBkYXRhYmFzZS5tZXRhZGF0YSgpKTsKIH0KIAogdm9pZCBDcmVhdGVPYmpl
Y3RTdG9yZUFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwg
IkNyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24iKTsKLSAgICBtX3RyYW5zYWN0aW9uLT5k
YXRhYmFzZSgpLT5yZW1vdmVPYmplY3RTdG9yZShtX29iamVjdFN0b3JlSWQpOworICAgIG1fdHJh
bnNhY3Rpb24tPmRhdGFiYXNlKCkucmVtb3ZlT2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZUlkKTsK
IH0KIAogdm9pZCBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKCkKIHsK
ICAgICBMT0coU3RvcmFnZUFQSSwgIkRlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24iKTsK
LSAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5hZGRPYmplY3RTdG9yZShtX29iamVjdFN0
b3JlTWV0YWRhdGEsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZCk7CisgICAgbV90
cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5hZGRPYmplY3RTdG9yZShtX29iamVjdFN0b3JlTWV0YWRh
dGEsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZCk7CiB9CiAKIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKCkK
IHsKICAgICBMT0coU3RvcmFnZUFQSSwgIlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbiIpOwot
ICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPm1fbWV0YWRhdGEudmVyc2lvbiA9IG1fcHJl
dmlvdXNJbnRWZXJzaW9uOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2V0Q3VycmVu
dFZlcnNpb24obV9wcmV2aW91c0ludFZlcnNpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJP
cGVyYXRpb25zLmgKaW5kZXggYzlkODljMS4uZWVhN2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuaApAQCAtMjYsNjEg
KzI2LDYzIEBACiAjaWZuZGVmIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25z
X2gKICNkZWZpbmUgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnNfaAogCi0j
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJREJPcGVyYXRpb24uaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKIAogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24g
OiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3Jl
TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9i
amVjdFN0b3JlTWV0YWRhdGEpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENy
ZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG9iamVj
dFN0b3JlTWV0YWRhdGEpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVS
UklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmpl
Y3RTdG9yZU1ldGFkYXRhKQorICAgIENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RT
dG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAg
ICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1fb2JqZWN0U3Rv
cmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICB9CiAgICAgCi0gICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAg
ICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsK
ICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0YTsK
IH07CiAKLWNsYXNzIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBEZWxldGVPYmplY3RTdG9y
ZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRl
KElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+
IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdT
dG9yZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBEZWxldGVPYmplY3RTdG9yZU9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisgICAgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRp
b24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2Fj
dGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwg
bV9vYmplY3RTdG9yZU1ldGFkYXRhKG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAgewogICAgIH0K
IAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9u
OworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rp
b247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5n
U3RvcmU7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtX29iamVjdFN0b3JlTWV0
YWRhdGE7CiB9OwogCi1jbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdl
T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlv
biB7CitjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9u
IDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBzdGF0
aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVy
c2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFZlcnNpb25DaGFuZ2VPcGVyYXRpb24odHJhbnNhY3Rpb24sIHRyYW5z
YWN0aW9uSWQsIHZlcnNpb24sIGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICB9
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgVmVyc2lvbkNoYW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0
cmFuc2FjdGlvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQorICAgIFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQog
ICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV90cmFuc2Fj
dGlvbklkKHRyYW5zYWN0aW9uSWQpCiAgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCkBAIC04
OSw3OCArOTEsNzggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBpbnQ2NF90IG1f
dHJhbnNhY3Rpb25JZDsKICAgICBpbnQ2NF90IG1fdmVyc2lvbjsKICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCi1jbGFzcyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3Bl
cmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7
CitjbGFzcyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJh
dGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
QiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRQdHIobmV3IENyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24odHJhbnNhY3Rp
b24sIG9iamVjdFN0b3JlSWQpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBP
VkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJh
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQorICAgIENyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9v
YmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgY29uc3Qg
aW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiB9OwogCi1jbGFzcyBEZWxldGVPYmplY3RTdG9yZUFi
b3J0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJh
dGlvbiB7CitjbGFzcyBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uIDogcHVibGljIElE
Qk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVj
dFN0b3JlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RT
dG9yZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFM
OwogcHJpdmF0ZToKLSAgICBEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQorICAgIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRP
cGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgY29u
c3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICAgICAg
OiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVNZXRh
ZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9yZU1ldGFkYXRhOwogfTsKIAotY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uIDogcHVibGljIElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24gOiBwdWJsaWMgSURCT3Bl
cmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCKiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5nJiBwcmV2aW91c1ZlcnNpb24sIGludDY0X3Qg
cHJldmlvdXNJbnRWZXJzaW9uKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4g
Y3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGNvbnN0
IFN0cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2NF90IHByZXZpb3VzSW50VmVyc2lvbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0
aW9uKHRyYW5zYWN0aW9uLCBwcmV2aW91c1ZlcnNpb24sIHByZXZpb3VzSW50VmVyc2lvbikpOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0
ZToKLSAgICBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2
NF90IHByZXZpb3VzSW50VmVyc2lvbikKKyAgICBWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24o
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgY29uc3QgU3RyaW5n
JiBwcmV2aW91c1ZlcnNpb24sIGludDY0X3QgcHJldmlvdXNJbnRWZXJzaW9uKQogICAgICAgICA6
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9wcmV2aW91c1ZlcnNpb24o
cHJldmlvdXNWZXJzaW9uKQogICAgICAgICAsIG1fcHJldmlvdXNJbnRWZXJzaW9uKHByZXZpb3Vz
SW50VmVyc2lvbikKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBTdHJpbmcgbV9wcmV2aW91c1ZlcnNp
b247CiAgICAgaW50NjRfdCBtX3ByZXZpb3VzSW50VmVyc2lvbjsKIH07CiAKLWNsYXNzIENyZWF0
ZUluZGV4T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9w
ZXJhdGlvbiB7CitjbGFzcyBDcmVhdGVJbmRleE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIq
IHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRh
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0
YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG9iamVjdFN0
b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0o
KSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgQ3JlYXRlSW5kZXhPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQklu
ZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgQ3JlYXRlSW5kZXhPcGVyYXRpb24oSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRy
YW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAg
ICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKQEAgLTE2OCw0MSArMTcwLDQxIEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVj
dFN0b3JlSWQ7CiAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7CiB9
OwogCi1jbGFzcyBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBDcmVhdGVJbmRleEFib3J0T3Bl
cmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlv
bj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBv
YmplY3RTdG9yZUlkLCBpbmRleElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
KCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRp
b24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQorICAgIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRp
b24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0
cmFuc2FjdGlvbikKICAgICAgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKICAg
ICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKICAgICB7CiAgICAgfQogCi0gICAgY29uc3QgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgY29u
c3QgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsK
ICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBjb25zdCBpbnQ2NF90IG1f
aW5kZXhJZDsKIH07CiAKLWNsYXNzIERlbGV0ZUluZGV4T3BlcmF0aW9uIDogcHVibGljIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBEZWxldGVJbmRleE9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGV0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0
aW9uLCBiYWNraW5nU3RvcmUsIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgRGVsZXRlSW5kZXhPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisg
ICAgRGVsZXRlSW5kZXhPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkK
ICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2lu
Z1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVjdFN0b3JlSWQob2JqZWN0U3Rv
cmVJZCkKQEAgLTIxMCw0MSArMjEyLDQxIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAg
ICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7
CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgSURCSW5kZXhN
ZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7CiB9OwogCi1jbGFzcyBEZWxldGVJbmRleEFib3J0T3Bl
cmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7
CitjbGFzcyBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYg
aW5kZXhNZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24o
dHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgRGVs
ZXRlSW5kZXhBYm9ydE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFu
c2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBp
bmRleE1ldGFkYXRhKQorICAgIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3Jl
SWQpCiAgICAgICAgICwgbV9pbmRleE1ldGFkYXRhKGluZGV4TWV0YWRhdGEpCiAgICAgewogICAg
IH0KIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0
aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNh
Y3Rpb247CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgSURC
SW5kZXhNZXRhZGF0YSBtX2luZGV4TWV0YWRhdGE7CiB9OwogCi1jbGFzcyBHZXRPcGVyYXRpb24g
OiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNz
IEdldE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5
cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4
ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRPcGVyYXRpb24o
dHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgbWV0YWRhdGEsIG9iamVjdFN0b3JlSWQsIGluZGV4
SWQsIGtleVJhbmdlLCBjdXJzb3JUeXBlLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVh
bCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgR2V0T3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5
cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgR2V0T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBt
ZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9y
ZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQobWV0YWRhdGEuaWQpCkBAIC0yNjAsNyArMjYyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1ldGFkYXRhLm9iamVjdFN0b3Jlcy5nZXQob2Jq
ZWN0U3RvcmVJZCkuaWQgPT0gb2JqZWN0U3RvcmVJZCk7CiAgICAgfQogCi0gICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBS
ZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25z
dCBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJ
ZDsKQEAgLTI3MiwxNSArMjc0LDE1IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQkNh
bGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9OwogCi1jbGFzcyBQdXRPcGVyYXRpb24gOiBwdWJsaWMg
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIFB1dE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4
S2V5cykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVl
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4
S2V5cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHV0T3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlLCB2YWx1ZSwg
a2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAg
UHV0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJ
REJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlk
LCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+JiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3Rv
cjxJbmRleEtleXM+JiBpbmRleEtleXMpCisgICAgUHV0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0
YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIHZhbHVlLCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlB1dE1vZGUg
cHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4S2V5cz4mIGluZGV4S2V5cykK
ICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2lu
Z1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkK
QEAgLTI5NCw3ICsyOTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0
IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNv
bnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEgbV9vYmplY3RTdG9yZTsKQEAgLTMwNiwzMyArMzA4LDMzIEBAIHByaXZhdGU6CiAgICAgY29u
c3QgVmVjdG9yPEluZGV4S2V5cz4gbV9pbmRleEtleXM7CiB9OwogCi1jbGFzcyBTZXRJbmRleGVz
UmVhZHlPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3Bl
cmF0aW9uIHsKK2NsYXNzIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVy
YXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIqIHRyYW5zYWN0aW9uLCBzaXplX3QgaW5kZXhDb3VudCkKKyAgICBzdGF0aWMgUGFzc093blB0
cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uLCBzaXplX3QgaW5kZXhDb3VudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBpbmRleENvdW50
KSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBw
cml2YXRlOgotICAgIFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCisgICAgU2V0SW5kZXhl
c1JlYWR5T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rp
b24sIHNpemVfdCBpbmRleENvdW50KQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rp
b24pCiAgICAgICAgICwgbV9pbmRleENvdW50KGluZGV4Q291bnQpCiAgICAgewogICAgIH0KIAot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247
CiAgICAgY29uc3Qgc2l6ZV90IG1faW5kZXhDb3VudDsKIH07CiAKLWNsYXNzIE9wZW5DdXJzb3JP
cGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9u
IHsKK2NsYXNzIE9wZW5DdXJzb3JPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
OjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2Fj
dGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJl
Y3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U6OlRhc2tUeXBlIHRhc2tUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlw
ZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlv
biwgYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlS
YW5nZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgot
ICAgIE9wZW5DdXJzb3JPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICBPcGVuQ3Vyc29yT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50
NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAg
ICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKQEAgLTM0Niw3ICszNDgsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlk
OwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpAQCAtMzU4LDE1ICszNjAsMTUg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
IH07CiAKLWNsYXNzIENvdW50T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBDb3VudE9wZXJhdGlvbiA6IHB1YmxpYyBJREJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb3VudE9wZXJhdGlvbih0cmFuc2FjdGlvbiwg
YmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwgY2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJ
REUgRklOQUw7CiBwcml2YXRlOgotICAgIENvdW50T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tp
bmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgQ291bnRPcGVyYXRpb24oSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAg
ICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQpAQCAtMzc3LDcgKzM3OSw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7
CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CkBAIC0zODYsMTUgKzM4OCwxNSBA
QCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwog
fTsKIAotY2xhc3MgRGVsZXRlUmFuZ2VPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIERlbGV0ZVJhbmdlT3BlcmF0aW9uIDog
cHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUo
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgRGVsZXRlUmFuZ2VPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwogICAgIH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBE
ZWxldGVSYW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2Fj
dGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBEZWxldGVS
YW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fdHJh
bnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0
b3JlKQogICAgICAgICAsIG1fZGF0YWJhc2VJZChkYXRhYmFzZUlkKQpAQCAtNDA0LDcgKzQwNiw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2Rh
dGFiYXNlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CkBAIC00MTIsMTUg
KzQxNCwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOwogfTsKIAotY2xhc3MgQ2xlYXJPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIENsZWFyT3BlcmF0aW9uIDogcHVi
bGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFj
a2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENsZWFyT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJS
SURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDbGVhck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIENsZWFyT3BlcmF0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKQEAgLTQyOSw3ICs0
MzEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3Qg
bV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhi
ZTU4M2EuLmUxYjFhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NzEsNiArMTY3MSw4IEBACiAJCTUxMkREOEZCMEQ5MUU2
QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyREQ4RjEwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hp
dmVSZXNvdXJjZS5jcHAgKi87IH07CiAJCTUxMkREOEZDMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNo
aXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkREOEYyMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJERDhGRDBEOTFF
NkFGMDAwRjg5RUUgLyogQXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEYzMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZl
RmFjdG9yeS5oICovOyB9OworCQk1MTJFQTlCQzE4MUYyRUUwMDAxRDAxRTAgLyogSURCUGVuZGlu
Z09wZW5DYWxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTJFQTlCQjE4MUYyRUUwMDAxRDAxRTAgLyogSURCUGVuZGluZ09wZW5DYWxsLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTEyRUE5QkUxODIw
Mjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRUE5QkQxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJh
dGlvbi5oICovOyB9OwogCQk1MTMyN0Q2MDExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTMyN0Q1
RTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggKi87IH07CiAJCTUxMzI3RDYxMTFB
MzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzMjdENUYxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtE
b2N1bWVudC5jcHAgKi87IH07CiAJCTUxM0YxNDUzMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
M0YxNDUxMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAqLzsgfTsKQEAgLTgyNjUs
NiArODI2Nyw4IEBACiAJCTUxMkREOEYxMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3Vy
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJjaGl2ZVJlc291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyREQ4RjIwRDkxRTZBRjAw
MEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBcmNoaXZlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEy
REQ4RjMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFyY2hpdmVGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxMkVBOUJCMTgxRjJFRTAwMDFEMDFFMCAvKiBJREJQZW5kaW5nT3BlbkNhbGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCUGVuZGluZ09wZW5DYWxsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkVBOUJEMTgyMDI4NTcwMDFEMDFFMCAv
KiBJREJPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCT3Bl
cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzI3RDVFMTFBMzNBMkIw
MDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2lua0RvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzI3RDVG
MTFBMzNBMkIwMDRGOUQ2NSAvKiBTaW5rRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2lua0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEzRjE0NTEwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEljb25Mb2FkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3ODUsNiArMTY3ODksOCBAQAogCQkJCTUxRDcxOTlD
MTgxMTA2RTAwMDE2REM1MSAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCAqLywKIAkJCQk1MUQ3MTk5
RDE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVzdC5oICovLAogCQkJCTUxRDcxOTlF
MTgxMTA2RTAwMDE2REM1MSAvKiBJREJPcGVuREJSZXF1ZXN0LmlkbCAqLywKKwkJCQk1MTJFQTlC
RDE4MjAyODU3MDAxRDAxRTAgLyogSURCT3BlcmF0aW9uLmggKi8sCisJCQkJNTEyRUE5QkIxODFG
MkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oICovLAogCQkJCTUxRDcxOTlGMTgx
MTA2RTAwMDE2REM1MSAvKiBJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcCAqLywKIAkJ
CQk1MUQ3MTlBMDE4MTEwNkUwMDAxNkRDNTEgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5oICovLAogCQkJCTUxRUFDNUIwMTgxNjNGNEUwMDRGMUJBNCAvKiBJREJSZWNvcmRJZGVudGlm
aWVyLmggKi8sCkBAIC0yMjkwNiw2ICsyMjkxMiw3IEBACiAJCQkJNzlBQzkyMTkxMDk5NDVDODAw
MjEyNjZFIC8qIEpTQ29tcG9zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM5ODU0
M0UwQ0QzRDk4QzAwMDY5QkMxIC8qIEpTQ29uc29sZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRB
MTVFQkUxMkIwM0YwQjAwM0E1ODNBIC8qIEpTQ29udm9sdmVyTm9kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEyRUE5QkMxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkU2RkQ0OEUwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDcwNURBMDlFMEM5QkYwMEIxN0ZFNCAvKiBKU0Nv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NUNBMkEyMTMwMzY3OUQwMEU5OUFEOSAvKiBK
U0NyeXB0by5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzI5NSw2ICsyMzMwMiw3IEBACiAJCQkJQjJG
QTNERDcwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0REOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRo
U2VnTGluZXRvVmVydGljYWxSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRkEzRERCMEFCNzVB
NkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJF
QTlCRTE4MjAyODU3MDAxRDAxRTAgLyogSURCT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0RERDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTW92ZXRvQWJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0RERjBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2Vn
TW92ZXRvUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUyMTE3RkRDMTQwMDA1RjJCQ0Ig
LyogTWVkaWFUcmFja0NvbnN0cmFpbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGU5
NTMzZWEuLjEwOGY3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMy0xMC0yOSAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zICphbG1vc3QqIHJlYWR5IHRvIGdvIGNyb3Nz
IHBsYXRmb3JtLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzNDUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3R1YiBvdXQgbW9yZSBwdXJlIHZpcnR1YWwgbWV0aG9kcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6YmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6
aWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjphZGRP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQ6OnJlbW92ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRh
dGFiYXNlQmFja2VuZDo6YWRkSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzSURC
RGF0YWJhc2VCYWNrZW5kOjpyZW1vdmVJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQ6Om1ldGFkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6c2V0Q3VycmVudFZlcnNpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpoYXNQZW5kaW5nU2Vjb25kSGFsZk9w
ZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRQ
ZW5kaW5nU2Vjb25kSGFsZk9wZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmg6CisKIDIwMTMtMTAtMjggIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIElEQiBm
YWN0b3J5IGNyZWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJE
YXRhYmFzZUJhY2tlbmQuY3BwCmluZGV4IGJiYTcxZjYuLmZlYWFkNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURC
RGF0YWJhc2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAgLTE2MSw2
ICsxNjEsNjAgQEAgdm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjplc3RhYmxpc2hE
YXRhYmFzZVByb2Nlc3NCYWNrZW5kKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OkVzdGFibGlzaElEQkRhdGFiYXNlQmFja2VuZChtX2JhY2tlbmRJ
ZGVudGlmaWVyKSk7CiB9CiAKK0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogV2ViUHJvY2Vzc0lE
QkRhdGFiYXNlQmFja2VuZDo6YmFja2luZ1N0b3JlKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50NjRfdCBXZWJQcm9jZXNzSURCRGF0
YWJhc2VCYWNrZW5kOjppZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6YWRk
T2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4
T2JqZWN0U3RvcmVJZCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBX
ZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpyZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9i
amVjdFN0b3JlSWQpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6YWRkSW5kZXgoaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhJbmRleElkKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJh
Y2tlbmQ6OnJlbW92ZUluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElk
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjptZXRhZGF0YSgpIGNvbnN0Cit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuICooKElEQkRhdGFiYXNlTWV0
YWRhdGEqKTApOworfQorCit2b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OnNldEN1
cnJlbnRWZXJzaW9uKHVpbnQ2NF90KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Citib29sIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6Omhhc1BlbmRpbmdTZWNvbmRIYWxm
T3BlbigpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OnNldFBlbmRpbmdTZWNvbmRI
YWxmT3BlbihQYXNzT3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4pCit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKERBVEFCQVNFX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJ
REJEYXRhYmFzZUJhY2tlbmQuaAppbmRleCAxYTFkMjcyLi4zZjliZjA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lE
QkRhdGFiYXNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2Vu
ZCgpOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJh
Y2tpbmdTdG9yZSgpIGNvbnN0IE9WRVJSSURFOworCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlKGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmLCBib29sIGF1dG9J
bmNyZW1lbnQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RTdG9yZShp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRyYW5zYWN0aW9uKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIHVuc2lnbmVkIHNob3J0IG1vZGUpIE9WRVJSSURFOwpA
QCAtNzAsNiArNzIsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKGludDY0X3QgdHJhbnNhY3Rpb25JZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4p
IE9WRVJSSURFOwogCisgICAgdmlydHVhbCBpbnQ2NF90IGlkKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGludDY0X3QgaW5kZXhJZCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGNvbnN0IFdl
YkNvcmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRWZXJzaW9uKHVpbnQ2NF90KSBPVkVSUklERTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nU2Vjb25kSGFsZk9wZW4oKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKFBhc3NPd25QdHI8V2ViQ29y
ZTo6SURCUGVuZGluZ09wZW5DYWxsPikgT1ZFUlJJREU7CisKICAgICB2b2lkIG9wZW5Db25uZWN0
aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2
ZXJzaW9uKTsKIAogICAgIHZvaWQgZXN0YWJsaXNoRGF0YWJhc2VQcm9jZXNzQmFja2VuZCgpOwo=
</data>
<flag name="commit-queue"
          id="238124"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215410</attachid>
            <date>2013-10-29 11:48:32 -0700</date>
            <delta_ts>2013-10-29 12:54:30 -0700</delta_ts>
            <desc>Patch v3 - Make a method pure virtual that should already have been.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>82710</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YzY5MDJjLi42NWU0Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEz
IEBACisyMDEzLTEwLTI5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBHZXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMgKmFsbW9zdCog
cmVhZHkgdG8gZ28gY3Jvc3MgcGxhdGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM0NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGludm9sdmVzOgorICAgICAgICAtIFNwbGl0dGluZyBv
dXQgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIGludG8gaXRzIG93biBo
ZWFkZXIKKyAgICAgICAgLSBTcGxpdHRpbmcgb3V0IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlBl
bmRpbmdPcGVuQ2FsbCBpbnRvIGl0cyBvd24gaGVhZGVyCisgICAgICAgIC0gUmV3b3JraW5nIHRo
ZSBMZXZlREIgT3BlcmF0aW9ucyB0byBoYW5kbGUgdGhlIGJhc2UgY2xhc3MgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlCisgICAgICAgIC0gQWRkaW5nIHZpcnR1YWwgbWV0aG9kcyBpbiBh
IGZldyBvZiB0aGUgKkludGVyZmFjZSBjbGFzc2VzIHRvIHN1cHBvcnQgdGhlIGFib3ZlCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxi
YWNrcy5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpz
ZXRJbmRleEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cHJvY2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaDoKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OklEQk9wZXJhdGlvbjo6fklEQk9wZXJhdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNhbGwuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJ
REJQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5n
T3BlbkNhbGw6OmNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNh
bGw6OmRhdGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdPcGVu
Q2FsbDo6dmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNhbGw6OnRy
YW5zYWN0aW9uSWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUGVuZGluZ09wZW5DYWxsOjpJREJQ
ZW5kaW5nT3BlbkNhbGwpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1
cnNvckJhY2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpDdXJz
b3JQcmVmZXRjaEl0ZXJhdGlvbk9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRMZXZlbERCOjpJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQik6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5o
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6OnNjaGVkdWxlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZU9wZW5DdXJz
b3JPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlQ2xl
YXJPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6Y3JlYXRlQ3Vyc29yQmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmg6CisKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3Jt
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OnBlcmZvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBl
cmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZUFib3J0T3Bl
cmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZElt
cGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0
aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Q3Jl
YXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RT
dG9yZU9wZXJhdGlvbjo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25D
aGFuZ2VPcGVyYXRpb246OlZlcnNpb25DaGFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyZWF0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVBYm9y
dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3Jl
QWJvcnRPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6Q3JlYXRlSW5kZXhPcGVyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OkNyZWF0ZUlu
ZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVJbmRleE9wZXJhdGlvbjo6RGVs
ZXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhBYm9ydE9w
ZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4QWJvcnRPcGVy
YXRpb246OkRlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2V0
T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2V0T3BlcmF0aW9uOjpHZXRP
cGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UHV0T3BlcmF0aW9uOjpQdXRPcGVyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uOjpTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246Ok9wZW5DdXJzb3JPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb3VudE9wZXJhdGlvbjo6Q291bnRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5n
ZU9wZXJhdGlvbjo6RGVsZXRlUmFuZ2VPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6
Q2xlYXJPcGVyYXRpb24pOgorCiAyMDEzLTEwLTI4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBJREIgZmFjdG9yeSBjcmVhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDRmYjQxMjEuLjA4OWJkMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTg0MCw2ICsxODQwLDggQEAgd2ViY29yZV9tb2R1bGVz
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVj
dFN0b3JlLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZXJhdGlv
bi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNh
bGwuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5z
YWN0aW9uTW9uaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVjb3JkSWRlbnRpZmllci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggYWJhNzcxYi4uNmQwYjUxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAg
LTI5LDcgKzI5LDYgQEAKICNpZm5kZWYgSURCQ2FsbGJhY2tzX2gKICNkZWZpbmUgSURCQ2FsbGJh
Y2tzX2gKIAotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1
ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJ
REJLZXlQYXRoLmgiCkBAIC00MSw2ICs0MCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBET01TdHJpbmdMaXN0OwogY2xhc3MgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTsKK2NsYXNz
IElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTsKKworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7CiAKIGNsYXNzIElEQkNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkNhbGxiYWNr
cz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDk2M2YzMmIuLjcxMTVi
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTQ5LDYgKzQ5LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNo
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9
IDA7CisKKyAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
SURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2hhcmVkQnVmZmVy
KiB2YWx1ZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5jcHAKaW5kZXggYmU4ODU5OC4uMzRjYzkyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1w
bC5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNl
dEluZGV4S2V5cyhpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0UwogICAgIEFT
U0VSVCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9u
Q2hhbmdlKTsKIAogICAgIFJlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkgPSBwcnBQcmltYXJ5S2V5
OwotICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IHN0b3JlID0gYmFja2luZ1N0
b3JlKCk7CisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gc3RvcmUgPSBtX2Jh
Y2tpbmdTdG9yZTsKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgY291bGQgYmUgYXN5bmNocm9u
b3VzLCBidXQgd2UgbmVlZCB0byBldmFsdWF0ZSBpZiBpdCdzIHdvcnRoIHRoZSBleHRyYSBjb21w
bGV4aXR5LgogICAgIFJlZlB0cjxJREJSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVy
OwogICAgIGJvb2wgb2sgPSBzdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9tZXRhZGF0YS5pZCwgb2JqZWN0U3RvcmVJ
ZCwgKnByaW1hcnlLZXksIHJlY29yZElkZW50aWZpZXIpOwpAQCAtNDE5LDEwICs0MTksMTAgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gT3BlbiBjYWxscyBjYW4gYmUgcmVxdWV1ZWQgaWYgYW4gb3Bl
biBjYWxsIHN0YXJ0ZWQgYSB2ZXJzaW9uIGNoYW5nZSB0cmFuc2FjdGlvbi4KLSAgICBEZXF1ZTxP
d25QdHI8UGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKKyAgICBEZXF1ZTxPd25Q
dHI8SURCUGVuZGluZ09wZW5DYWxsPj4gcGVuZGluZ09wZW5DYWxsczsKICAgICBtX3BlbmRpbmdP
cGVuQ2FsbHMuc3dhcChwZW5kaW5nT3BlbkNhbGxzKTsKICAgICB3aGlsZSAoIXBlbmRpbmdPcGVu
Q2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxQZW5kaW5nT3BlbkNhbGw+IHBlbmRp
bmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAgIE93blB0
cjxJREJQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMu
dGFrZUZpcnN0KCk7CiAgICAgICAgIG9wZW5Db25uZWN0aW9uKHBlbmRpbmdPcGVuQ2FsbC0+Y2Fs
bGJhY2tzKCksIHBlbmRpbmdPcGVuQ2FsbC0+ZGF0YWJhc2VDYWxsYmFja3MoKSwgcGVuZGluZ09w
ZW5DYWxsLT50cmFuc2FjdGlvbklkKCksIHBlbmRpbmdPcGVuQ2FsbC0+dmVyc2lvbigpKTsKICAg
ICB9CiB9CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpv
cGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICBS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gcHJwRGF0YWJh
c2VDYWxsYmFja3M7CiAKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8
fCBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgbV9wZW5kaW5n
T3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGlu
Z09wZW5DYWxscy5hcHBlbmQoSURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywg
KmRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YQogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX21ldGFkYXRhLnZlcnNpb24pOwogICAg
IC8vIEZJWE1FOiBBZGQgdGVzdCBmb3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
LgogICAgIGlmIChtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlv
bkNvdW50KCkpIHsKLSAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3Bl
bkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklk
LCByZXF1ZXN0ZWRWZXJzaW9uKSk7CisgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQo
SURCUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoKmNhbGxiYWNrcywgKmRhdGFiYXNlQ2FsbGJhY2tz
LCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJzaW9uKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA5ZTczNjNmLi5kNmU2OGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5oCkBAIC0yNiw4ICsyNiw3IEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZElt
cGxfaAogI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsX2gKIAotI2luY2x1ZGUgIklEQkNh
bGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCTWV0YWRhdGEuaCIK
ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTQ5LDE4ICs0
OCwxNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50
aWZpZXIpOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQmFja2VuZEltcGwoKTsKIAotICAgIElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSgpIGNvbnN0IE9WRVJSSURF
OwogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52YWxpZElkID0gMDsKLSAgICBpbnQ2NF90
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQotICAgIHZvaWQgYWRkT2JqZWN0
U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4T2JqZWN0
U3RvcmVJZCk7Ci0gICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3Jl
SWQpOwotICAgIHZvaWQgYWRkSW5kZXgoaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJ
bmRleE1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhJbmRleElkKTsKLSAgICB2b2lkIHJlbW92ZUlu
ZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKKyAgICB2aXJ0dWFs
IGludDY0X3QgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX21ldGFkYXRhLmlkOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVPYmplY3RTdG9yZShpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElE
QkluZGV4TWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heEluZGV4SWQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCkgT1ZFUlJJREU7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7Ci0gICAgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKICAgICAvLyBJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
aW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgYXV0b0luY3JlbWVudCk7CkBAIC05MCw4
ICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXIoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9t
ZXRhZGF0YTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VmVyc2lvbih1aW50NjRfdCB2
ZXJzaW9uKSBPVkVSUklERSB7IG1fbWV0YWRhdGEudmVyc2lvbiA9IHZlcnNpb247IH0KKwogICAg
IHZpcnR1YWwgYm9vbCBpc0lEQkRhdGFiYXNlQmFja2VuZEltcGwoKSBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ1NlY29uZEhhbGZPcGVuKCkg
T1ZFUlJJREUgeyByZXR1cm4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW47IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5D
YWxsPiBwZW5kaW5nT3BlbkNhbGwpIE9WRVJSSURFIHsgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4g
PSBwZW5kaW5nT3BlbkNhbGw7IH0KKwogICAgIGNsYXNzIFZlcnNpb25DaGFuZ2VPcGVyYXRpb247
CiAgICAgY2xhc3MgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOwogCkBAIC0xMTksMzMgKzEy
Myw4IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSo+IFRyYW5zYWN0aW9uTWFwOwogICAgIFRyYW5zYWN0aW9uTWFw
IG1fdHJhbnNhY3Rpb25zOwogCi0gICAgY2xhc3MgUGVuZGluZ09wZW5DYWxsIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFBlbmRpbmdPcGVuQ2FsbD4gY3JlYXRlKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3QgdmVyc2lvbikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
ZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25J
ZCwgdmVyc2lvbikpOwotICAgICAgICB9Ci0gICAgICAgIElEQkNhbGxiYWNrcyogY2FsbGJhY2tz
KCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KLSAgICAgICAgSURCRGF0YWJhc2VDYWxs
YmFja3MqIGRhdGFiYXNlQ2FsbGJhY2tzKCkgeyByZXR1cm4gbV9kYXRhYmFzZUNhbGxiYWNrcy5n
ZXQoKTsgfQotICAgICAgICBpbnQ2NF90IHZlcnNpb24oKSB7IHJldHVybiBtX3ZlcnNpb247IH0K
LSAgICAgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbklkOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBQZW5kaW5nT3BlbkNhbGwoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2
ZXJzaW9uKQotICAgICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCi0gICAgICAgICAg
ICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoZGF0YWJhc2VDYWxsYmFja3MpCi0gICAgICAgICAgICAs
IG1fdmVyc2lvbih2ZXJzaW9uKQotICAgICAgICAgICAgLCBtX3RyYW5zYWN0aW9uSWQodHJhbnNh
Y3Rpb25JZCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxJREJDYWxsYmFj
a3M+IG1fY2FsbGJhY2tzOwotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1f
ZGF0YWJhc2VDYWxsYmFja3M7Ci0gICAgICAgIGludDY0X3QgbV92ZXJzaW9uOwotICAgICAgICBj
b25zdCBpbnQ2NF90IG1fdHJhbnNhY3Rpb25JZDsKLSAgICB9OwotCi0gICAgRGVxdWU8T3duUHRy
PFBlbmRpbmdPcGVuQ2FsbD4+IG1fcGVuZGluZ09wZW5DYWxsczsKLSAgICBPd25QdHI8UGVuZGlu
Z09wZW5DYWxsPiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbjsKKyAgICBEZXF1ZTxPd25QdHI8SURC
UGVuZGluZ09wZW5DYWxsPj4gbV9wZW5kaW5nT3BlbkNhbGxzOworICAgIE93blB0cjxJREJQZW5k
aW5nT3BlbkNhbGw+IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuOwogCiAgICAgY2xhc3MgUGVuZGlu
Z0RlbGV0ZUNhbGwgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKaW5k
ZXggMTQ3NWRhNS4uN2YyZWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTI2
LDggKzI2LDEyIEBACiAjaWZuZGVmIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAjZGVm
aW5lIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZV9oCiAKKyNpbmNsdWRlICJJREJDYWxsYmFj
a3MuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKICNpbmNsdWRl
ICJJbmRleGVkREIuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM3LDE0ICs0MSwxNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7Ci1jbGFzcyBJREJDYWxsYmFj
a3M7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIElEQktleTsKIGNsYXNzIElE
QktleVBhdGg7CiBjbGFzcyBJREJLZXlSYW5nZTsKLXN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRh
OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogCitzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKK3N0
cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CisK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+PiBJbmRleEtleXM7CiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCkBAIC01NSw2ICs2MCw4IEBAIGNsYXNzIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKCkgeyB9
CiAKKyAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkg
Y29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IElEQktleVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVHJhbnNhY3Rpb24oaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlkcywgdW5zaWduZWQgc2hvcnQgbW9kZSkg
PSAwOwpAQCAtOTEsNiArOTgsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVS
YW5nZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAKKyAgICB2aXJ0dWFsIGludDY0
X3QgaWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZE9iamVjdFN0b3JlKGNvbnN0
IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5ld01heE9iamVjdFN0b3JlSWQpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9y
ZUlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZEluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4SW5kZXhJZCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0
X3QgaW5kZXhJZCkgPSAwOworCisgICAgdmlydHVhbCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFZlcnNp
b24odWludDY0X3QpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nU2Vjb25kSGFs
Zk9wZW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihQ
YXNzT3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4pID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBp
c0lEQkRhdGFiYXNlQmFja2VuZEltcGwoKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVyYXRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzBjMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlcmF0aW9uLmgKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCT3BlcmF0aW9uX2gKKyNkZWZpbmUgSURCT3Bl
cmF0aW9uX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIElEQk9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SURC
T3BlcmF0aW9uKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSA9IDA7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyNlbmRpZiAvLyBJREJPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3BlbkNhbGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4xNjc1YzczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5DYWxsLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgSURCUGVuZGluZ09wZW5DYWxsX2gKKyNkZWZpbmUgSURC
UGVuZGluZ09wZW5DYWxsX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQ2FsbGJhY2tzOworY2xhc3MgSURCRGF0YWJhc2VD
YWxsYmFja3M7CisKK2NsYXNzIElEQlBlbmRpbmdPcGVuQ2FsbCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCUGVuZGluZ09wZW5DYWxsPiBjcmVhdGUoSURCQ2FsbGJhY2tzJiBj
YWxsYmFja3MsIElEQkRhdGFiYXNlQ2FsbGJhY2tzJiBkYXRhYmFzZUNhbGxiYWNrcywgaW50NjRf
dCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IElEQlBlbmRpbmdPcGVuQ2FsbChjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSk7CisgICAgfQorICAgIElEQkNhbGxiYWNrcyog
Y2FsbGJhY2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KKyAgICBJREJEYXRhYmFz
ZUNhbGxiYWNrcyogZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJh
Y2tzLmdldCgpOyB9CisgICAgaW50NjRfdCB2ZXJzaW9uKCkgeyByZXR1cm4gbV92ZXJzaW9uOyB9
CisgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlv
bklkOyB9CisKK3ByaXZhdGU6CisgICAgSURCUGVuZGluZ09wZW5DYWxsKElEQkNhbGxiYWNrcyYg
Y2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyYgZGF0YWJhc2VDYWxsYmFja3MsIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQorICAgICAgICA6IG1fY2FsbGJhY2tz
KCZjYWxsYmFja3MpCisgICAgICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcygmZGF0YWJhc2VDYWxs
YmFja3MpCisgICAgICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisgICAgICAgICwgbV90cmFuc2Fj
dGlvbklkKHRyYW5zYWN0aW9uSWQpCisgICAgeworICAgIH0KKyAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0
YWJhc2VDYWxsYmFja3M7CisgICAgaW50NjRfdCBtX3ZlcnNpb247CisgICAgY29uc3QgaW50NjRf
dCBtX3RyYW5zYWN0aW9uSWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJQZW5kaW5nT3BlbkNh
bGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmlu
ZGV4IDliYzIxY2UuLjdhZGJhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJJREJBbnkuaCIK
ICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IGY4ODBjOWMu
LmRkNzNjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzEsNyArNzIsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZURlbGV0ZVJhbmdlT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KSA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkUHJlZW1wdGl2ZUV2ZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21w
bGV0ZVByZWVtcHRpdmVFdmVudCgpID0gMDsKKwogICAgIHZpcnR1YWwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogYmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UmIGRhdGFiYXNlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+
IGNyZWF0ZUN1cnNvckJhY2tlbmQoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpDdXJzb3ImLCBJ
bmRleGVkREI6OkN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5
cGUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkgPSAwOwogCiAgICAgaW50NjRfdCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmNw
cAppbmRleCA0MjQ1NzdkLi44ZTMxYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRM
ZXZlbERCLmNwcApAQCAtMzUsMTUgKzM1LDE2IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJPcGVyYXRpb24uaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkN1cnNvckJh
Y2tlbmRMZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIElEQkN1cnNvckJhY2tlbmRM
ZXZlbERCOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRMZXZlbERC
PiBjdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUo
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vyc29yLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24oY3Vyc29y
LCBrZXksIGNhbGxiYWNrcykpOwogICAgIH0KQEAgLTYxLDkgKzYyLDkgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLWNsYXNzIElEQkN1cnNv
ckJhY2tlbmRMZXZlbERCOjpDdXJzb3JBZHZhbmNlT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBJREJDdXJzb3JCYWNrZW5k
TGV2ZWxEQjo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REI6Ok9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZExldmVsREI+
IGN1cnNvciwgdW5zaWduZWQgbG9uZyBjb3VudCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShQYXNz
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRMZXZlbERCPiBjdXJzb3IsIHVuc2lnbmVkIGxvbmcgY291
bnQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvckFkdmFuY2VPcGVyYXRpb24oY3Vyc29yLCBjb3VudCwg
Y2FsbGJhY2tzKSk7CiAgICAgfQpAQCAtODEsOSArODIsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgSURCQ3Vyc29yQmFja2Vu
ZExldmVsREI6OkN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0aW9uIDogcHVibGljIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBJREJDdXJzb3JCYWNr
ZW5kTGV2ZWxEQjo6Q3Vyc29yUHJlZmV0Y2hJdGVyYXRpb25PcGVyYXRpb24gOiBwdWJsaWMgSURC
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRMZXZlbERCPiBjdXJzb3IsIGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZExldmVsREI+IGN1cnNvciwgaW50IG51
bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEN1cnNvclByZWZldGNoSXRlcmF0aW9uT3BlcmF0
aW9uKGN1cnNvciwgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2tzKSk7CiAgICAgfQpAQCAtMTA0LDcg
KzEwNSw3IEBAIHByaXZhdGU6CiBJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6SURCQ3Vyc29yQmFj
a2VuZExldmVsREIoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvcj4g
Y3Vyc29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCkKICAgICA6IG1fdGFza1R5
cGUodGFza1R5cGUpCiAgICAgLCBtX2N1cnNvclR5cGUoY3Vyc29yVHlwZSkKLSAgICAsIG1fZGF0
YWJhc2UodHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkpCisgICAgLCBtX2RhdGFiYXNlKCYodHJhbnNh
Y3Rpb24tPmRhdGFiYXNlKCkpKQogICAgICwgbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAg
ICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICwgbV9jdXJzb3IoY3Vyc29y
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJDdXJzb3JCYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDdmNzEzNDYuLjU2ZmE5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCQ3Vyc29yQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkN1cnNvckJhY2tlbmRMZXZlbERCLmgKQEAgLTYyLDkgKzYyLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZl
dGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKSB7IH0KIAotICAgIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBj
b25zdCB7IHJldHVybiBtX2N1cnNvci0+a2V5KCk7IH0KLSAgICBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCk7IH0KLSAg
ICBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUoKSBjb25zdCB7IHJldHVybiAobV9jdXJz
b3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yS2V5T25seSkgPyAwIDogbV9jdXJzb3ItPnZhbHVl
KCk7IH0KKyAgICB2aXJ0dWFsIElEQktleSoga2V5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9jdXJzb3ItPmtleSgpLmdldCgpOyB9CisgICAgdmlydHVhbCBJREJLZXkqIHByaW1hcnlLZXko
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2N1cnNvci0+cHJpbWFyeUtleSgpLmdldCgpOyB9
CisgICAgdmlydHVhbCBTaGFyZWRCdWZmZXIqIHZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gKG1fY3Vyc29yVHlwZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpID8gMCA6IG1fY3Vy
c29yLT52YWx1ZSgpLmdldCgpOyB9CisKICAgICB2b2lkIGNsb3NlKCk7CiAKIHByaXZhdGU6CkBA
IC03Niw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U6OlRhc2tUeXBlIG1fdGFza1R5cGU7CiAgICAgSW5kZXhlZERCOjpDdXJzb3JUeXBlIG1fY3Vy
c29yVHlwZTsKLSAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRh
YmFzZTsKKyAgICBjb25zdCBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2Rh
dGFiYXNlOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5z
YWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAppbmRleCA5YWEyNTdlLi40YjAy
ZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6fklEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREIoKQogICAgIEFTU0VSVChtX3N0YXRlID09IEZpbmlzaGVkKTsK
IH0KIAotdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpzY2hlZHVsZVRhc2soSURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0eXBlLCBQYXNzT3duUHRyPE9wZXJh
dGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzaykKK3ZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6c2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdHlwZSwgUGFzc093blB0cjxJREJPcGVyYXRpb24+IHRhc2ssIFBh
c3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9ydFRhc2spCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0g
RmluaXNoZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4gZXJyb3IpCiAKICAgICAvLyBSdW4gdGhlIGFib3J0IHRhc2tzLCBpZiBhbnkuCiAgICAgd2hp
bGUgKCFtX2Fib3J0VGFza1F1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBPd25QdHI8T3BlcmF0
aW9uPiB0YXNrKG1fYWJvcnRUYXNrUXVldWUudGFrZUZpcnN0KCkpOworICAgICAgICBPd25QdHI8
SURCT3BlcmF0aW9uPiB0YXNrKG1fYWJvcnRUYXNrUXVldWUudGFrZUZpcnN0KCkpOwogICAgICAg
ICB0YXNrLT5wZXJmb3JtKCk7CiAgICAgfQogCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjp0YXNrVGltZXJGaXJlZChUaW1lcjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXYKICAgICBUYXNrUXVldWUqIHRhc2tRdWV1ZSA9IG1fcGVuZGluZ1ByZWVt
cHRpdmVFdmVudHMgPyAmbV9wcmVlbXB0aXZlVGFza1F1ZXVlIDogJm1fdGFza1F1ZXVlOwogICAg
IHdoaWxlICghdGFza1F1ZXVlLT5pc0VtcHR5KCkgJiYgbV9zdGF0ZSAhPSBGaW5pc2hlZCkgewog
ICAgICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKLSAgICAgICAgT3duUHRyPE9wZXJh
dGlvbj4gdGFzayh0YXNrUXVldWUtPnRha2VGaXJzdCgpKTsKKyAgICAgICAgT3duUHRyPElEQk9w
ZXJhdGlvbj4gdGFzayh0YXNrUXVldWUtPnRha2VGaXJzdCgpKTsKICAgICAgICAgdGFzay0+cGVy
Zm9ybSgpOwogCiAgICAgICAgIC8vIEV2ZW50IGl0c2VsZiBtYXkgY2hhbmdlIHdoaWNoIHF1ZXVl
IHNob3VsZCBiZSBwcm9jZXNzZWQgbmV4dC4KQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlR2V0T3BlcmF0aW9uKGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdAogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVk
dWxlUHV0T3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3Jl
TWV0YWRhdGEsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJL
ZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRNb2RlIHB1dE1vZGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYg
aW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiB7Ci0gICAgc2No
ZWR1bGVUYXNrKFB1dE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgp
LCBkYXRhYmFzZSgpLT5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRN
b2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKKyAgICBzY2hlZHVsZVRhc2so
UHV0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNl
KCkuaWQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJh
Y2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQjo6c2NoZWR1bGVTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oc2l6ZV90IGluZGV4
Q291bnQpCkBAIC0zMTIsMjQgKzMxMiwyOCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBpbmRleAogCiB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlT3BlbkN1cnNvck9wZXJh
dGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlv
biwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7Ci0gICAgc2NoZWR1bGVUYXNrKE9wZW5DdXJzb3JPcGVyYXRpb246OmNyZWF0ZSh0
aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNh
bGxiYWNrcykpOworICAgIHNjaGVkdWxlVGFzayhPcGVuQ3Vyc29yT3BlcmF0aW9uOjpjcmVhdGUo
dGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNh
bGxiYWNrcykpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVk
dWxlQ291bnRPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLT5pZCgpLCBvYmplY3RTdG9y
ZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY2FsbGJhY2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKENv
dW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFiYXNl
KCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykpOwog
fQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6OnNjaGVkdWxlRGVsZXRlUmFu
Z2VPcGVyYXRpb24oaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBz
Y2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdT
dG9yZS5nZXQoKSwgZGF0YWJhc2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOworICAgIHNjaGVkdWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3Jl
SWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCOjpzY2hlZHVsZUNsZWFyT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBzY2hlZHVsZVRhc2so
Q2xlYXJPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJh
c2UoKS0+aWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAgc2NoZWR1bGVUYXNr
KENsZWFyT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CiB9CiAKK1Bhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6
Y3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U6OkN1cnNvciYgY3Vy
c29yLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQorewor
ICAgIHJldHVybiBJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjo6Y3JlYXRlKCZjdXJzb3IsIGN1cnNv
clR5cGUsIHRhc2tUeXBlLCB0aGlzLCBvYmplY3RTdG9yZUlkKTsKK30KIAogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAppbmRleCAwMjQ2MGEzLi5lMDk0
MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEltcGwuaCIKICNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJEYXRhYmFz
ZUVycm9yLmgiCisjaW5jbHVkZSAiSURCT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KQEAgLTUzLDI0ICs1NCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCkgT1ZFUlJJREUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFIEZJTkFMOwogCi0gICAgY2xhc3MgT3BlcmF0
aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfk9wZXJhdGlvbigpIHsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpID0gMDsKLSAgICB9OwotCiAgICAgdmlydHVhbCB2
b2lkIHJ1bigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGUgbW9kZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIGNv
bnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9v
YmplY3RTdG9yZUlkczsgfQotICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8T3BlcmF0
aW9uPiB0YXNrLCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBz
Y2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0YXNr
LCBhYm9ydFRhc2spOyB9Ci0gICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5k
SW50ZXJmYWNlOjpUYXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQYXNzT3duUHRyPE9w
ZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cik7CisgICAgdm9pZCBzY2hlZHVsZVRhc2soUGFz
c093blB0cjxJREJPcGVyYXRpb24+IHRhc2ssIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9y
dFRhc2sgPSBudWxscHRyKSB7IHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U6Ok5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KKyAgICB2b2lkIHNjaGVkdWxlVGFz
ayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBlLCBQYXNzT3duUHRyPElEQk9w
ZXJhdGlvbj4sIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKTsK
ICAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQiopOwog
ICAgIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZExldmVsREIqKTsK
LSAgICB2b2lkIGFkZFByZWVtcHRpdmVFdmVudCgpIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50
cysrOyB9Ci0gICAgdm9pZCBkaWRDb21wbGV0ZVByZWVtcHRpdmVFdmVudCgpIHsgbV9wZW5kaW5n
UHJlZW1wdGl2ZUV2ZW50cy0tOyBBU1NFUlQobV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyA+PSAw
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRQcmVlbXB0aXZlRXZlbnQoKSBPVkVSUklERSB7IG1f
cGVuZGluZ1ByZWVtcHRpdmVFdmVudHMrKzsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZVByZWVtcHRpdmVFdmVudCgpIE9WRVJSSURFIHsgbV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cy0t
OyBBU1NFUlQobV9wZW5kaW5nUHJlZW1wdGl2ZUV2ZW50cyA+PSAwKTsgfQogICAgIHZpcnR1YWwg
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOjpUcmFuc2FjdGlvbiogYmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSB7IHJldHVybiAmbV90cmFuc2FjdGlvbjsgfQogCi0gICAgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCogZGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9Cisg
ICAgdmlydHVhbCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UmIGRhdGFiYXNlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gKm1fZGF0YWJhc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmKSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVEZWxldGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJikgT1ZFUlJJREUg
RklOQUw7CkBAIC04NCw3ICs3OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDb3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPikgT1ZFUlJJ
REUgRklOQUw7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRlUmFuZ2VPcGVyYXRpb24o
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDbGVhck9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPikgT1ZFUlJJREUgRklOQUw7Ci0gICAgCisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3JlYXRlQ3Vyc29yQmFja2VuZChJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2U6OkN1cnNvciYsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgSURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKSBPVkVS
UklERTsKKwogcHJpdmF0ZToKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKElEQkRh
dGFiYXNlQmFja2VuZEltcGwqLCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWRE
Qjo6VHJhbnNhY3Rpb25Nb2RlKTsKIApAQCAtMTExLDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKICAgICBSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW1wbD4gbV9kYXRhYmFzZTsKIAotICAgIHR5cGVkZWYgRGVxdWU8T3du
UHRyPE9wZXJhdGlvbj4+IFRhc2tRdWV1ZTsKKyAgICB0eXBlZGVmIERlcXVlPE93blB0cjxJREJP
cGVyYXRpb24+PiBUYXNrUXVldWU7CiAgICAgVGFza1F1ZXVlIG1fdGFza1F1ZXVlOwogICAgIFRh
c2tRdWV1ZSBtX3ByZWVtcHRpdmVUYXNrUXVldWU7CiAgICAgVGFza1F1ZXVlIG1fYWJvcnRUYXNr
UXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQk9wZXJhdGlvbnMuY3BwCmluZGV4IGRhZDY1MDUuLmIyODdhMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuY3Bw
CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHZvaWQgQ3JlYXRlT2JqZWN0
U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiQ3JlYXRl
T2JqZWN0U3RvcmVPcGVyYXRpb24iKTsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jcmVhdGVP
YmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX3Ry
YW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5pZCgpLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuaWQsIG1f
b2JqZWN0U3RvcmVNZXRhZGF0YS5uYW1lLCBtX29iamVjdFN0b3JlTWV0YWRhdGEua2V5UGF0aCwg
bV9vYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQpKSB7CisgICAgaWYgKCFtX2JhY2tp
bmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3Jl
TWV0YWRhdGEuaWQsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5uYW1lLCBtX29iamVjdFN0b3JlTWV0
YWRhdGEua2V5UGF0aCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQpKSB7CiAg
ICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1h
dCgiSW50ZXJuYWwgZXJyb3IgY3JlYXRpbmcgb2JqZWN0IHN0b3JlICclcycuIiwgbV9vYmplY3RT
dG9yZU1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICBtX3RyYW5zYWN0aW9u
LT5hYm9ydChlcnJvci5yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CkBAIC01MCw3ICs1MCw3
IEBAIHZvaWQgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oKQogdm9pZCBDcmVh
dGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVh
dGVJbmRleE9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4
KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCktPmlkKCksIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleE1ldGFkYXRhLmlkLCBt
X2luZGV4TWV0YWRhdGEubmFtZSwgbV9pbmRleE1ldGFkYXRhLmtleVBhdGgsIG1faW5kZXhNZXRh
ZGF0YS51bmlxdWUsIG1faW5kZXhNZXRhZGF0YS5tdWx0aUVudHJ5KSkgeworICAgIGlmICghbV9i
YWNraW5nU3RvcmUtPmNyZWF0ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4TWV0YWRhdGEuaWQsIG1faW5kZXhNZXRhZGF0YS5uYW1lLCBtX2luZGV4TWV0YWRh
dGEua2V5UGF0aCwgbV9pbmRleE1ldGFkYXRhLnVuaXF1ZSwgbV9pbmRleE1ldGFkYXRhLm11bHRp
RW50cnkpKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1h
dCgiSW50ZXJuYWwgZXJyb3Igd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGluZGV4ICclcycuIiwgbV9p
bmRleE1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTU5LDEzICs1OSwxMyBAQCB2b2lkIENyZWF0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3Jt
KCkKIHZvaWQgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9H
KFN0b3JhZ2VBUEksICJDcmVhdGVJbmRleEFib3J0T3BlcmF0aW9uIik7Ci0gICAgbV90cmFuc2Fj
dGlvbi0+ZGF0YWJhc2UoKS0+cmVtb3ZlSW5kZXgobV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQp
OworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkucmVtb3ZlSW5kZXgobV9vYmplY3RTdG9y
ZUlkLCBtX2luZGV4SWQpOwogfQogCiB2b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3Jt
KCkKIHsKICAgICBMT0coU3RvcmFnZUFQSSwgIkRlbGV0ZUluZGV4T3BlcmF0aW9uIik7Ci0gICAg
Ym9vbCBvayA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5pZCgpLCBt
X29iamVjdFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YS5pZCk7CisgICAgYm9vbCBvayA9IG1fYmFj
a2luZ1N0b3JlLT5kZWxldGVJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVJZCwg
bV9pbmRleE1ldGFkYXRhLmlkKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFJlZlB0cjxJREJE
YXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3Ig
ZGVsZXRpbmcgaW5kZXggJyVzJy4iLCBtX2luZGV4TWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgp
KSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKQEAgLTc1LDcgKzc1LDcg
QEAgdm9pZCBEZWxldGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB2b2lkIERlbGV0ZUluZGV4
QWJvcnRPcGVyYXRpb246OnBlcmZvcm0oKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiRGVsZXRl
SW5kZXhBYm9ydE9wZXJhdGlvbiIpOwotICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCktPmFk
ZEluZGV4KG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleE1ldGFkYXRhLCBJREJJbmRleE1ldGFkYXRh
OjpJbnZhbGlkSWQpOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuYWRkSW5kZXgobV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEsIElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJ
ZCk7CiB9CiAKIHZvaWQgR2V0T3BlcmF0aW9uOjpwZXJmb3JtKCkKQEAgLTI3OCw3ICsyNzgsOCBA
QCB2b2lkIE9wZW5DdXJzb3JPcGVyYXRpb246OnBlcmZvcm0oKQogICAgIH0KIAogICAgIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUoc3RhdGljX2Nhc3Q8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZT4obV90YXNrVHlwZSkpOwotICAgIFJl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQj4gY3Vyc29yID0gSURCQ3Vyc29yQmFja2VuZExl
dmVsREI6OmNyZWF0ZShiYWNraW5nU3RvcmVDdXJzb3IuZ2V0KCksIG1fY3Vyc29yVHlwZSwgdGFz
a1R5cGUsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIG1fb2JqZWN0U3RvcmVJZCk7CisKKyAgICBSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gY3Vyc29yID0gbV90cmFuc2FjdGlvbi0+Y3Jl
YXRlQ3Vyc29yQmFja2VuZCgqYmFja2luZ1N0b3JlQ3Vyc29yLCBtX2N1cnNvclR5cGUsIHRhc2tU
eXBlLCBtX29iamVjdFN0b3JlSWQpOwogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY3Vyc29y
LCBjdXJzb3ItPmtleSgpLCBjdXJzb3ItPnByaW1hcnlLZXkoKSwgY3Vyc29yLT52YWx1ZSgpKTsK
IH0KIApAQCAtMzMzLDcgKzMzNCw3IEBAIHZvaWQgQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oKQog
dm9pZCBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0
b3JhZ2VBUEksICJEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGJvb2wgb2sgPSBt
X2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+aWQoKSwgbV9vYmpl
Y3RTdG9yZU1ldGFkYXRhLmlkKTsKKyAgICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZU9iamVjdFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmlkKTsK
ICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3Jl
ICclcycuIiwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUudXRmOCgpLmRhdGEoKSkpOwogICAg
ICAgICBtX3RyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7CkBAIC0zNDMsNDAgKzM0NCw0MCBAQCB2
b2lkIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKCkKIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAg
TE9HKFN0b3JhZ2VBUEksICJWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uIik7Ci0gICAgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbCogZGF0YWJhc2UgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOwotICAg
IGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgpOwotICAgIHVpbnQ2NF90IG9sZFZl
cnNpb24gPSBkYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uOworICAgIElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZSYgZGF0YWJhc2UgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAg
IGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLmlkKCk7CisgICAgdWludDY0X3Qgb2xkVmVy
c2lvbiA9IGRhdGFiYXNlLm1ldGFkYXRhKCkudmVyc2lvbjsKIAogICAgIC8vIEZJWE1FOiBEYXRh
YmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhw
ZWN0ZWQgaW50NjRfdC4KICAgICBBU1NFUlQobV92ZXJzaW9uID4gKGludDY0X3Qpb2xkVmVyc2lv
bik7Ci0gICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbiA9IG1fdmVyc2lvbjsKLSAgICBp
ZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9u
KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIGRh
dGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb24pKSB7CisgICAgZGF0YWJhc2Uuc2V0Q3VycmVudFZl
cnNpb24obV92ZXJzaW9uKTsKKyAgICBpZiAoIWRhdGFiYXNlLmJhY2tpbmdTdG9yZSgpLT51cGRh
dGVJREJEYXRhYmFzZUludFZlcnNpb24obV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJzaW9uKSkgewogICAg
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkVycm9yIHdyaXRpbmcg
ZGF0YSB0byBzdGFibGUgc3RvcmFnZSB3aGVuIHVwZGF0aW5nIHZlcnNpb24uIik7CiAgICAgICAg
IG1fY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJv
cnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVCghZGF0YWJhc2Ut
Pm1fcGVuZGluZ1NlY29uZEhhbGZPcGVuKTsKLSAgICBkYXRhYmFzZS0+bV9wZW5kaW5nU2Vjb25k
SGFsZk9wZW4gPSBQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShtX2NhbGxiYWNrcywgbV9kYXRhYmFz
ZUNhbGxiYWNrcywgbV90cmFuc2FjdGlvbklkLCBtX3ZlcnNpb24pOwotICAgIG1fY2FsbGJhY2tz
LT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lvbiwgZGF0YWJhc2UsIGRhdGFiYXNlLT5tZXRhZGF0
YSgpKTsKKyAgICBBU1NFUlQoIWRhdGFiYXNlLmhhc1BlbmRpbmdTZWNvbmRIYWxmT3BlbigpKTsK
KyAgICBkYXRhYmFzZS5zZXRQZW5kaW5nU2Vjb25kSGFsZk9wZW4oSURCUGVuZGluZ09wZW5DYWxs
OjpjcmVhdGUoKm1fY2FsbGJhY2tzLCAqbV9kYXRhYmFzZUNhbGxiYWNrcywgbV90cmFuc2FjdGlv
bklkLCBtX3ZlcnNpb24pKTsKKyAgICBtX2NhbGxiYWNrcy0+b25VcGdyYWRlTmVlZGVkKG9sZFZl
cnNpb24sICZkYXRhYmFzZSwgZGF0YWJhc2UubWV0YWRhdGEoKSk7CiB9CiAKIHZvaWQgQ3JlYXRl
T2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VB
UEksICJDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uIik7Ci0gICAgbV90cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKS0+cmVtb3ZlT2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZUlkKTsKKyAgICBt
X3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnJlbW92ZU9iamVjdFN0b3JlKG1fb2JqZWN0U3RvcmVJ
ZCk7CiB9CiAKIHZvaWQgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSgp
CiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJEZWxldGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9u
Iik7Ci0gICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS0+YWRkT2JqZWN0U3RvcmUobV9vYmpl
Y3RTdG9yZU1ldGFkYXRhLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOworICAg
IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuYWRkT2JqZWN0U3RvcmUobV9vYmplY3RTdG9yZU1l
dGFkYXRhLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOjpJbnZhbGlkSWQpOwogfQogCiB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9y
bSgpCiB7CiAgICAgTE9HKFN0b3JhZ2VBUEksICJWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24i
KTsKLSAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLT5tX21ldGFkYXRhLnZlcnNpb24gPSBt
X3ByZXZpb3VzSW50VmVyc2lvbjsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNldEN1
cnJlbnRWZXJzaW9uKG1fcHJldmlvdXNJbnRWZXJzaW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCT3BlcmF0aW9ucy5oCmluZGV4IGM5ZDg5YzEuLmVlYTdjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQk9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmgKQEAgLTI2
LDYxICsyNiw2MyBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0
aW9uc19oCiAjZGVmaW5lIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zX2gK
IAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCIKKyNpbmNsdWRlICJJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiSURCT3BlcmF0aW9uLmgiCisjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb24gOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uIHsKK2NsYXNzIENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0
aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RT
dG9yZU1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRl
KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkg
T1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2Jq
ZWN0U3RvcmVNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQog
ICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVj
dFN0b3JlTWV0YWRhdGEob2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247
CiAgICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5nU3Rv
cmU7CiAgICAgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtX29iamVjdFN0b3JlTWV0YWRh
dGE7CiB9OwogCi1jbGFzcyBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgRGVsZXRlT2JqZWN0
U3RvcmVPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNy
ZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0
aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwg
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNr
aW5nU3RvcmUsIG9iamVjdFN0b3JlTWV0YWRhdGEpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lk
IHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgRGVsZXRlT2JqZWN0U3Rv
cmVPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQorICAgIERlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24pCiAgICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAg
ICAsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2Fj
dGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5z
YWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFj
a2luZ1N0b3JlOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9y
ZU1ldGFkYXRhOwogfTsKIAotY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNo
YW5nZU9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVy
YXRpb24geworY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCB0
cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRl
OgotICAgIFZlcnNpb25DaGFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
QiogdHJhbnNhY3Rpb24sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcykKKyAgICBWZXJzaW9uQ2hhbmdlT3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0X3QgdHJh
bnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fdHJh
bnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQogICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQpA
QCAtODksNzggKzkxLDc4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgaW50NjRf
dCBtX3RyYW5zYWN0aW9uSWQ7CiAgICAgaW50NjRfdCBtX3ZlcnNpb247CiAgICAgUmVmUHRyPElE
QkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwogfTsKIAotY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVBYm9y
dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRp
b24geworY2xhc3MgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJP
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKHRyYW5z
YWN0aW9uLCBvYmplY3RTdG9yZUlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
KCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZU9iamVjdFN0b3JlQWJvcnRP
cGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCkKKyAgICBDcmVhdGVPYmplY3RTdG9yZUFib3J0T3BlcmF0aW9uKElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAs
IG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgIHsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNv
bnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogfTsKIAotY2xhc3MgRGVsZXRlT2JqZWN0U3Rv
cmVBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpP
cGVyYXRpb24geworY2xhc3MgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBv
YmplY3RTdG9yZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgb2Jq
ZWN0U3RvcmUpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBG
SU5BTDsKIHByaXZhdGU6Ci0gICAgRGVsZXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVPYmplY3RTdG9yZUFi
b3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAg
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX29iamVjdFN0b3Jl
TWV0YWRhdGEob2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBJREJP
YmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0YTsKIH07CiAKLWNsYXNzIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uIDogcHVibGljIElE
Qk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQiogdHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2
NF90IHByZXZpb3VzSW50VmVyc2lvbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBj
b25zdCBTdHJpbmcmIHByZXZpb3VzVmVyc2lvbiwgaW50NjRfdCBwcmV2aW91c0ludFZlcnNpb24p
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFZlcnNpb25DaGFuZ2VBYm9ydE9w
ZXJhdGlvbih0cmFuc2FjdGlvbiwgcHJldmlvdXNWZXJzaW9uLCBwcmV2aW91c0ludFZlcnNpb24p
KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHBy
aXZhdGU6Ci0gICAgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIHByZXZpb3VzVmVyc2lvbiwg
aW50NjRfdCBwcmV2aW91c0ludFZlcnNpb24pCisgICAgVmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGNvbnN0IFN0
cmluZyYgcHJldmlvdXNWZXJzaW9uLCBpbnQ2NF90IHByZXZpb3VzSW50VmVyc2lvbikKICAgICAg
ICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fcHJldmlvdXNWZXJz
aW9uKHByZXZpb3VzVmVyc2lvbikKICAgICAgICAgLCBtX3ByZXZpb3VzSW50VmVyc2lvbihwcmV2
aW91c0ludFZlcnNpb24pCiAgICAgewogICAgIH0KIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgU3RyaW5nIG1fcHJldmlvdXNW
ZXJzaW9uOwogICAgIGludDY0X3QgbV9wcmV2aW91c0ludFZlcnNpb247CiB9OwogCi1jbGFzcyBD
cmVhdGVJbmRleE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
OjpPcGVyYXRpb24geworY2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3Bl
cmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRh
ZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRl
eE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBDcmVhdGVJbmRleE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIENyZWF0ZUluZGV4T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQorICAgIENyZWF0ZUluZGV4T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdT
dG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0
IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCiAgICAgICAgIDogbV90cmFuc2FjdGlv
bih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAg
ICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCkBAIC0xNjgsNDEgKzE3MCw0
MSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3QgbV9v
YmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRh
OwogfTsKIAotY2xhc3MgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ3JlYXRlSW5kZXhBYm9y
dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRl
KElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVy
YXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlSW5kZXhBYm9ydE9wZXJhdGlvbih0cmFuc2FjdGlv
biwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVy
Zm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDcmVhdGVJbmRleEFib3J0T3Bl
cmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCkKKyAgICBDcmVhdGVJbmRleEFib3J0T3Bl
cmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQogICAgICAgICA6IG1fdHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQp
CiAgICAgICAgICwgbV9pbmRleElkKGluZGV4SWQpCiAgICAgewogICAgIH0KIAotICAgIGNvbnN0
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAg
IGNvbnN0IFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rp
b247CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRf
dCBtX2luZGV4SWQ7CiB9OwogCi1jbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1YmxpYyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgRGVsZXRlSW5k
ZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJ
REJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVJbmRleE9wZXJhdGlvbih0cmFu
c2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRl
OgotICAgIERlbGV0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIq
IHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRh
KQorICAgIERlbGV0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRh
dGEpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVj
dFN0b3JlSWQpCkBAIC0yMTAsNDEgKzIxMiw0MSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
LSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsK
KyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9u
OwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0
b3JlOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQklu
ZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRhOwogfTsKIAotY2xhc3MgRGVsZXRlSW5kZXhBYm9y
dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRp
b24geworY2xhc3MgRGVsZXRlSW5kZXhBYm9ydE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIq
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4TWV0YWRh
dGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBEZWxldGVJbmRleEFib3J0T3BlcmF0
aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAg
IERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiog
dHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0
YSYgaW5kZXhNZXRhZGF0YSkKKyAgICBEZWxldGVJbmRleEFib3J0T3BlcmF0aW9uKElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICAgICAgOiBtX3Ry
YW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RT
dG9yZUlkKQogICAgICAgICAsIG1faW5kZXhNZXRhZGF0YShpbmRleE1ldGFkYXRhKQogICAgIHsK
ICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFu
c2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3Ry
YW5zYWN0aW9uOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0
IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFkYXRhOwogfTsKIAotY2xhc3MgR2V0T3BlcmF0
aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7Citj
bGFzcyBHZXRPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+
IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3Jl
LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJ
bmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgR2V0T3BlcmF0
aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZp
cnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIEdldE9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEmIG1ldGFkYXRhLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJz
b3JUeXBlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIEdldE9wZXJh
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNr
aW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0
YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNv
clR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV90
cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5n
U3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRhLmlkKQpAQCAtMjYwLDcgKzI2
Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtZXRhZGF0YS5vYmplY3RTdG9yZXMuZ2V0
KG9iamVjdFN0b3JlSWQpLmlkID09IG9iamVjdFN0b3JlSWQpOwogICAgIH0KIAotICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiBtX3RyYW5zYWN0aW9uOworICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CiAgICAgY29u
c3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAg
Y29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0
b3JlSWQ7CkBAIC0yNzIsMTUgKzI3NCwxNSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotY2xhc3MgUHV0T3BlcmF0aW9uIDogcHVi
bGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBQdXRP
cGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2
YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBp
bmRleEtleXMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2
YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNl
OjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNv
bnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBp
bmRleEtleXMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1dE9wZXJhdGlv
bih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFs
dWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgot
ICAgIFB1dE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlv
biwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJh
c2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBjb25zdCBW
ZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJhdGlvbihJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+JiB2YWx1ZSwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpQdXRN
b2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgaW5kZXhJZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtl
eXMpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2Jh
Y2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNl
SWQpCkBAIC0yOTQsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBj
b25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAg
ICBjb25zdCBpbnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIG1fb2JqZWN0U3RvcmU7CkBAIC0zMDYsMzMgKzMwOCwzMyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFZlY3RvcjxJbmRleEtleXM+IG1faW5kZXhLZXlzOwogfTsKIAotY2xhc3MgU2V0SW5k
ZXhlc1JlYWR5T3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6
Ok9wZXJhdGlvbiB7CitjbGFzcyBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24gOiBwdWJsaWMgSURC
T3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCKiB0cmFuc2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgc2l6ZV90IGluZGV4Q291bnQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNldEluZGV4ZXNSZWFkeU9wZXJhdGlvbih0cmFuc2FjdGlvbiwgaW5kZXhD
b3VudCkpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFM
OwogcHJpdmF0ZToKLSAgICBTZXRJbmRleGVzUmVhZHlPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIHNpemVfdCBpbmRleENvdW50KQorICAgIFNldElu
ZGV4ZXNSZWFkeU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBzaXplX3QgaW5kZXhDb3VudCkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQogICAgICAgICAsIG1faW5kZXhDb3VudChpbmRleENvdW50KQogICAgIHsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlv
bjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0
aW9uOwogICAgIGNvbnN0IHNpemVfdCBtX2luZGV4Q291bnQ7CiB9OwogCi1jbGFzcyBPcGVuQ3Vy
c29yT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJh
dGlvbiB7CitjbGFzcyBPcGVuQ3Vyc29yT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQjo6T3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJPcGVyYXRpb24+IGNyZWF0
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERC
OjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFz
a1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE9wZW5DdXJzb3JPcGVyYXRpb24odHJhbnNh
Y3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwg
a2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0
ZToKLSAgICBPcGVuQ3Vyc29yT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIq
IHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4
ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1
cnNvclR5cGUsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUgdGFza1R5cGUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAgIDogbV90cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUp
CiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCkBAIC0zNDYsNyArMzQ4LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90IG1fZGF0YWJh
c2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKQEAgLTM1OCwxNSArMzYw
LDE1IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CiB9OwogCi1jbGFzcyBDb3VudE9wZXJhdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCOjpPcGVyYXRpb24geworY2xhc3MgQ291bnRPcGVyYXRpb24gOiBwdWJsaWMg
SURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCOjpPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5n
U3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90
IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlv
bj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElE
QkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ291bnRPcGVyYXRpb24odHJhbnNhY3Rp
b24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5
UmFuZ2UsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpIE9W
RVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDb3VudE9wZXJhdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBi
YWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBp
bnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIENvdW50T3BlcmF0aW9uKElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0
aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkK
ICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKQEAgLTM3Nyw3ICszNzksNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
TGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFz
ZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpAQCAtMzg2LDE1ICszODgs
MTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNr
czsKIH07CiAKLWNsYXNzIERlbGV0ZVJhbmdlT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBEZWxldGVSYW5nZU9wZXJhdGlv
biA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQk9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IERlbGV0ZVJhbmdlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUs
IGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsKICAgICB9
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgRGVsZXRlUmFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgRGVs
ZXRlUmFuZ2VPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKQEAgLTQwNCw3ICs0
MDYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQj4gbV90cmFuc2FjdGlvbjsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9uOwogICAgIGNvbnN0IFJlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3Qg
bV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwpAQCAtNDEy
LDE1ICs0MTQsMTUgQEAgcHJpdmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBt
X2NhbGxiYWNrczsKIH07CiAKLWNsYXNzIENsZWFyT3BlcmF0aW9uIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbiB7CitjbGFzcyBDbGVhck9wZXJhdGlvbiA6
IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI6Ok9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2Uq
IGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbGVh
ck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBjYWxsYmFja3MpKTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSBP
VkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0gICAgQ2xlYXJPcGVyYXRpb24oSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSog
YmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBDbGVhck9wZXJhdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgICAg
IDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAgICAgLCBtX2JhY2tpbmdTdG9yZShi
YWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRhdGFiYXNlSWQpCkBAIC00Mjks
NyArNDMxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZExldmVsREI+IG1fdHJhbnNhY3Rpb247CisgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKICAgICBjb25zdCBSZWZQdHI8
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2
NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4YmU1ODNhLi5lMWIxYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjcxLDYgKzE2NzEsOCBAQAogCQk1MTJERDhGQjBE
OTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkREOEYxMEQ5MUU2QUYwMDBGODlFRSAvKiBB
cmNoaXZlUmVzb3VyY2UuY3BwICovOyB9OwogCQk1MTJERDhGQzBEOTFFNkFGMDAwRjg5RUUgLyog
QXJjaGl2ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTJERDhGMjBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJlc291cmNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyREQ4RkQw
RDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJERDhGMzBEOTFFNkFGMDAwRjg5RUUgLyogQXJj
aGl2ZUZhY3RvcnkuaCAqLzsgfTsKKwkJNTEyRUE5QkMxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBl
bmRpbmdPcGVuQ2FsbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEyRUE5QkIxODFGMkVFMDAwMUQwMUUwIC8qIElEQlBlbmRpbmdPcGVuQ2FsbC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxMkVBOUJF
MTgyMDI4NTcwMDFEMDFFMCAvKiBJREJPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkVBOUJEMTgyMDI4NTcwMDFEMDFFMCAvKiBJREJP
cGVyYXRpb24uaCAqLzsgfTsKIAkJNTEzMjdENjAxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEz
MjdENUUxMUEzM0EyQjAwNEY5RDY1IC8qIFNpbmtEb2N1bWVudC5oICovOyB9OwogCQk1MTMyN0Q2
MTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAvKiBT
aW5rRG9jdW1lbnQuY3BwICovOyB9OwogCQk1MTNGMTQ1MzBBQjYzNEM0MDAwOTREREYgLyogSWNv
bkxvYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTNGMTQ1MTBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5jcHAgKi87IH07CkBAIC04
MjY1LDYgKzgyNjcsOCBAQAogCQk1MTJERDhGMTBEOTFFNkFGMDAwRjg5RUUgLyogQXJjaGl2ZVJl
c291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFyY2hpdmVS
ZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkREOEYyMEQ5MUU2
QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXJjaGl2ZVJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMkREOEYzMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcmNoaXZlRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTJFQTlCQjE4MUYyRUUwMDAxRDAxRTAgLyogSURCUGVuZGluZ09wZW5D
YWxsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlBlbmRpbmdPcGVuQ2Fs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJFQTlCRDE4MjAyODU3MDAxRDAx
RTAgLyogSURCT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
Qk9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTMyN0Q1RTExQTMz
QTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNpbmtEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTMy
N0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbmtEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxM0YxNDUxMEFCNjM0QzQwMDA5NERERiAvKiBJY29uTG9hZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJY29uTG9hZGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Nzg1LDYgKzE2Nzg5LDggQEAKIAkJCQk1MUQ3
MTk5QzE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVzdC5jcHAgKi8sCiAJCQkJNTFE
NzE5OUQxODExMDZFMDAwMTZEQzUxIC8qIElEQk9wZW5EQlJlcXVlc3QuaCAqLywKIAkJCQk1MUQ3
MTk5RTE4MTEwNkUwMDAxNkRDNTEgLyogSURCT3BlbkRCUmVxdWVzdC5pZGwgKi8sCisJCQkJNTEy
RUE5QkQxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oICovLAorCQkJCTUxMkVBOUJC
MTgxRjJFRTAwMDFEMDFFMCAvKiBJREJQZW5kaW5nT3BlbkNhbGwuaCAqLywKIAkJCQk1MUQ3MTk5
RjE4MTEwNkUwMDAxNkRDNTEgLyogSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAgKi8s
CiAJCQkJNTFENzE5QTAxODExMDZFMDAwMTZEQzUxIC8qIElEQlBlbmRpbmdUcmFuc2FjdGlvbk1v
bml0b3IuaCAqLywKIAkJCQk1MUVBQzVCMDE4MTYzRjRFMDA0RjFCQTQgLyogSURCUmVjb3JkSWRl
bnRpZmllci5oICovLApAQCAtMjI5MDYsNiArMjI5MTIsNyBAQAogCQkJCTc5QUM5MjE5MTA5OTQ1
QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OTg1NDNFMENEM0Q5OEMwMDA2OUJDMSAvKiBKU0NvbnNvbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUZEQTE1RUJFMTJCMDNGMEIwMDNBNTgzQSAvKiBKU0NvbnZvbHZlck5vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMkVBOUJDMTgxRjJFRTAwMDFEMDFFMCAvKiBJREJQZW5kaW5nT3BlbkNhbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDhFMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3Jk
aW5hdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA3MDVEQTA5RTBDOUJGMDBCMTdGRTQgLyog
SlNDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzVDQTJBMjEzMDM2NzlEMDBFOTlBRDkg
LyogSlNDcnlwdG8uaCBpbiBIZWFkZXJzICovLApAQCAtMjMyOTUsNiArMjMzMDIsNyBAQAogCQkJ
CUIyRkEzREQ3MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFi
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNERDkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZH
UGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0REQjBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEyRUE5QkUxODIwMjg1NzAwMUQwMUUwIC8qIElEQk9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJGQTNEREQwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ01vdmV0b0Ficy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQjJGQTNEREYwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0
aFNlZ01vdmV0b1JlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjExN0ZEQzE0MDAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlOTUzM2VhLi4xMDhmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMTAt
MjkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEdldCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucyAqYWxtb3N0KiByZWFkeSB0byBnbyBj
cm9zcyBwbGF0Zm9ybS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMzQ1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN0dWIgb3V0IG1vcmUgcHVyZSB2aXJ0dWFsIG1ldGhvZHMuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OmJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tl
bmQ6OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6
YWRkT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzSURCRGF0YWJhc2VC
YWNrZW5kOjpyZW1vdmVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NJ
REJEYXRhYmFzZUJhY2tlbmQ6OmFkZEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZDo6cmVtb3ZlSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OnNldEN1cnJlbnRWZXJzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6aGFzUGVuZGluZ1NlY29uZEhh
bGZPcGVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6
c2V0UGVuZGluZ1NlY29uZEhhbGZPcGVuKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oOgorCiAyMDEzLTEwLTI4
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBJ
REIgZmFjdG9yeSBjcmVhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9jZXNz
SURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCBiYmE3MWY2Li5mZWFhZDZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vz
c0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQuY3BwCkBAIC0x
NjEsNiArMTYxLDYwIEBAIHZvaWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6ZXN0YWJs
aXNoRGF0YWJhc2VQcm9jZXNzQmFja2VuZCgpCiAgICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uOjpFc3RhYmxpc2hJREJEYXRhYmFzZUJhY2tlbmQobV9iYWNr
ZW5kSWRlbnRpZmllcikpOwogfQogCitJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIFdlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQ6OmJhY2tpbmdTdG9yZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludDY0X3QgV2ViUHJvY2Vzc0lE
QkRhdGFiYXNlQmFja2VuZDo6aWQoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCit2b2lkIFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6
OmFkZE9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IG5l
d01heE9iamVjdFN0b3JlSWQpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6cmVtb3ZlT2JqZWN0U3RvcmUoaW50NjRf
dCBvYmplY3RTdG9yZUlkKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lk
IFdlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQ6OmFkZEluZGV4KGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYsIGludDY0X3QgbmV3TWF4SW5kZXhJZCkKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzSURCRGF0YWJh
c2VCYWNrZW5kOjpyZW1vdmVJbmRleChpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZDo6bWV0YWRhdGEoKSBjb25z
dAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAqKChJREJEYXRhYmFz
ZU1ldGFkYXRhKikwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpz
ZXRDdXJyZW50VmVyc2lvbih1aW50NjRfdCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworYm9vbCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpoYXNQZW5kaW5nU2Vjb25k
SGFsZk9wZW4oKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBXZWJQcm9jZXNzSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRQZW5kaW5nU2Vj
b25kSGFsZk9wZW4oUGFzc093blB0cjxJREJQZW5kaW5nT3BlbkNhbGw+KQoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nlc3NJREJEYXRhYmFzZUJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJQcm9j
ZXNzSURCRGF0YWJhc2VCYWNrZW5kLmgKaW5kZXggMWExZDI3Mi4uM2Y5YmYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYlByb2Nl
c3NJREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViUHJvY2Vzc0lEQkRhdGFiYXNlQmFja2VuZC5oCkBAIC00Nyw2
ICs0Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NJREJEYXRhYmFzZUJh
Y2tlbmQoKTsKIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
KiBiYWNraW5nU3RvcmUoKSBjb25zdCBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVPYmplY3RTdG9yZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJiwgYm9vbCBh
dXRvSW5jcmVtZW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3Rv
cmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUcmFuc2FjdGlvbihpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCB1bnNpZ25lZCBzaG9ydCBtb2RlKSBPVkVSUklE
RTsKQEAgLTcwLDYgKzcyLDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmFu
Z2UoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNr
cz4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFj
a3M+KSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgaW50NjRfdCBpZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBhZGRPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhPYmplY3RTdG9yZUlkKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlT2JqZWN0U3RvcmUoaW50NjRfdCBvYmplY3RTdG9yZUlk
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW5kZXgoaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhJiwgaW50NjRfdCBuZXdNYXhJbmRl
eElkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW5kZXgoaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBjb25z
dCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VmVyc2lvbih1aW50NjRfdCkgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ1NlY29uZEhhbGZPcGVuKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihQYXNzT3duUHRyPFdl
YkNvcmU6OklEQlBlbmRpbmdPcGVuQ2FsbD4pIE9WRVJSSURFOworCiAgICAgdm9pZCBvcGVuQ29u
bmVjdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3QgdmVyc2lvbik7CiAKICAgICB2b2lkIGVzdGFibGlzaERhdGFiYXNlUHJvY2Vzc0JhY2tlbmQo
KTsK
</data>
<flag name="review"
          id="238129"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>