<?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>149678</bug_id>
          
          <creation_ts>2015-09-30 14:08:19 -0700</creation_ts>
          <short_desc>Add UniqueIDBDatabase object, IDBBackingStore objects, and a database operation thread</short_desc>
          <delta_ts>2015-09-30 20:09:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1129665</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-30 14:08:19 -0700</bug_when>
    <thetext>Add UniqueIDBDatabase object, IDBBackingStore objects, and a database operation thread

- UniqueIDBDatabase represents a specific IDB database instance that can have multiple connections to it.
- IDBBackingStore is an abstract representation of a unique database&apos;s backing store, and has a concrete in-memory implementation for now.
- The database thread exists on IDBServer and is for offloading actual database I/O from the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129667</commentid>
    <comment_count>1</comment_count>
      <attachid>262190</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-30 14:20:29 -0700</bug_when>
    <thetext>Created attachment 262190
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129676</commentid>
    <comment_count>2</comment_count>
      <attachid>262190</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-09-30 15:15:38 -0700</bug_when>
    <thetext>Comment on attachment 262190
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:152
&gt; +        Locker&lt;Lock&gt; locker(m_databaseThreadCreationLock);

Put a comment saying what this does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129724</commentid>
    <comment_count>3</comment_count>
      <attachid>262205</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-30 16:36:43 -0700</bug_when>
    <thetext>Created attachment 262205
Patch v2 for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129739</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-30 16:57:23 -0700</bug_when>
    <thetext>EFL build failure: https://webkit-queues.webkit.org/results/229258

The build is failing because:

Last 500 characters of output:
server/IDBServer.cpp
In file included from ../../Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:34:0:
../../Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:38:97: error: &apos;IDBDatabaseIdentifier&apos; does not name a type
     friend std::unique_ptr&lt;MemoryIDBBackingStore&gt; std::make_unique&lt;MemoryIDBBackingStore&gt;(const IDBDatabaseIdentifier&amp;);

Note the OSX/iOS builds work fine, as IDBDatabaseIdentifier.h is included in that very file and has that definition.

Is this some compiler deficiency on efl/linux?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129740</commentid>
    <comment_count>5</comment_count>
      <attachid>262207</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-09-30 17:01:20 -0700</bug_when>
    <thetext>Created attachment 262207
Patch v3 - EWS retry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129776</commentid>
    <comment_count>6</comment_count>
      <attachid>262207</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 18:04:45 -0700</bug_when>
    <thetext>Comment on attachment 262207
Patch v3 - EWS retry

Clearing flags on attachment: 262207

Committed r190379: &lt;http://trac.webkit.org/changeset/190379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129777</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-30 18:04:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1129804</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-09-30 20:09:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 262207 [details]
&gt; Patch v3 - EWS retry
&gt; 
&gt; Clearing flags on attachment: 262207
&gt; 
&gt; Committed r190379: &lt;http://trac.webkit.org/changeset/190379&gt;

Fix a build break for EFL and GTK.
https://bugs.webkit.org/show_bug.cgi?id=149693</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262190</attachid>
            <date>2015-09-30 14:20:29 -0700</date>
            <delta_ts>2015-09-30 16:36:43 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>62664</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMTQ2MDg3Li5jMDE4NzZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDkt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBVbmlx
dWVJREJEYXRhYmFzZSBvYmplY3QsIElEQkJhY2tpbmdTdG9yZSBvYmplY3RzLCBhbmQgYSBkYXRh
YmFzZSBvcGVyYXRpb24gdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJl
cXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbDogQWRkZWQuCisKIDIw
MTUtMDktMzAgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0VTNl0gQWRkIFR5cGVkQXJyYXkucHJvdG90eXBlIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJl
cXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzQyZmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2
ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0FMRVJUOiBbb2JqZWN0IElEQk9wZW5E
QlJlcXVlc3RdCitBTEVSVDogZXJyb3IgW29iamVjdCBFdmVudF0KK0FMRVJUOiBEb25lCitUaGlz
IHRlc3QgY2FsbHMgb3BlbiBvbiB3aW5kb3cuaW5kZXhlZERCIGluIHZhcmlvdXMgd2F5cywgdmVy
aWZ5aW5nIHRoYXQgSURCT3BlbkRCUmVxdWVzdCBvYmplY3RzIGFyZSByZXR1cm5lZCB3aGVuIGV4
cGVjdGVkIGFuZCBleGNlcHRpb25zIGFyZSB0aHJvd24gd2hlbiBleHBlY3RlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVx
dWVzdC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29w
ZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTJmOGQxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sCkBAIC0wLDAg
KzEsMjkgQEAKK1RoaXMgdGVzdCBjYWxscyBvcGVuIG9uIHdpbmRvdy5pbmRleGVkREIgaW4gdmFy
aW91cyB3YXlzLCB2ZXJpZnlpbmcgdGhhdCBJREJPcGVuREJSZXF1ZXN0IG9iamVjdHMgYXJlIHJl
dHVybmVkIHdoZW4gZXhwZWN0ZWQgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biB3aGVuIGV4cGVj
dGVkLgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1
bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHJlcXVl
c3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIlRlc3REYXRhYmFzZSIpOworYWxlcnQocmVxdWVz
dCk7CisKK3JlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKQoreworCWFsZXJ0KCJzdWNjZXNz
Iik7CisJZG9uZSgpOworfQorcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZSkKK3sKKwlhbGVy
dCgiZXJyb3IgIiArIGUpOworCWRvbmUoKTsKK30KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCAxMWYyZjAwLi4wZmYwYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtODk4LDcg
Kzg5OCwxMSBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuY3BwCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ck9wZXJhdGlvbi5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZS5jcHAKIAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8u
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAogICAgIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKICAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdElkZW50aWZpZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGIyYjM5
YS4uMjI2NzdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE1LTA5LTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgVW5pcXVlSURCRGF0
YWJhc2Ugb2JqZWN0LCBJREJCYWNraW5nU3RvcmUgb2JqZWN0cywgYW5kIGEgZGF0YWJhc2Ugb3Bl
cmF0aW9uIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVz
dC1ldmVudC5odG1sCisKKyAgICAgICAgLSBVbmlxdWVJREJEYXRhYmFzZSByZXByZXNlbnRzIGEg
c3BlY2lmaWMgSURCIGRhdGFiYXNlIGluc3RhbmNlIHRoYXQgY2FuIGhhdmUgbXVsdGlwbGUgCisg
ICAgICAgICAgY29ubmVjdGlvbnMgdG8gaXQuCisgICAgICAgIC0gSURCQmFja2luZ1N0b3JlIGlz
IGFuIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIG9mIGEgdW5pcXVlIGRhdGFiYXNlJ3MgYmFja2lu
ZyBzdG9yZSwgCisgICAgICAgICAgYW5kIGhhcyBhIGNvbmNyZXRlIGluLW1lbW9yeSBpbXBsZW1l
bnRhdGlvbiBmb3Igbm93LgorICAgICAgICAtIFRoZSBkYXRhYmFzZSB0aHJlYWQgZXhpc3RzIG9u
IElEQlNlcnZlciBhbmQgaXMgZm9yIG9mZmxvYWRpbmcgYWN0dWFsIGRhdGFiYXNlIEkvTyBmcm9t
IAorICAgICAgICAgIHRoZSBtYWluIHRocmVhZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwpOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlv
blRvQ2xpZW50RGVsZWdhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCQmFj
a2luZ1N0b3JlOjp+SURCQmFja2luZ1N0b3JlKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnRE
ZWxlZ2F0ZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6SURCU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpnZXRPckNyZWF0ZVVu
aXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVy
OjpjcmVhdGVCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJT
ZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRhc2tSZXBseSk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OklEQlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGF0YWJhc2VSdW5Mb29wKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJTZXJ2ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlck9wZXJhdGlvbjo6SURCU2VydmVyT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3BlcmF0aW9uLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyT3BlcmF0aW9uOjpjb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyT3BlcmF0aW9uOjpyZXF1ZXN0
RGF0YSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFj
a2luZ1N0b3JlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6
On5NZW1vcnlJREJCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25u
ZWN0aW9uVG9DbGllbnQuaC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5kbGVP
cGVuRGF0YWJhc2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaC4K
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZSk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUluZm86OklEQkRhdGFiYXNlSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUluZm86Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQkRhdGFiYXNlSW5mby5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaC4KKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlSW5mbzo6SURCRGF0YWJhc2VJbmZvKToKKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVEYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oOgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VJbmZvPjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI+
Ojpjb3B5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oOgorCiAyMDE1
LTA5LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbCBvdXQgcjE4ODMzMTogIk5ldHdvcmtQcm9jZXNzOiBETlMgcHJlZmV0Y2ggaGFw
cGVucyBpbiB0aGUgV2ViIFByb2Nlc3MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRleCAwM2NhNmRl
Li45NGI3Y2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKQEAgLTQ0LDYgKzQ0LDE2IEBAIElEQkRh
dGFiYXNlSWRlbnRpZmllcjo6SURCRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBTCiAgICAgQVNTRVJUKCFkYXRhYmFzZU5hbWUuaXNOdWxsKCkpOwog
fQogCitJREJEYXRhYmFzZUlkZW50aWZpZXIgSURCRGF0YWJhc2VJZGVudGlmaWVyOjppc29sYXRl
ZENvcHkoKSBjb25zdAoreworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBpZGVudGlmaWVyOwor
CisgICAgaWRlbnRpZmllci5tX2RhdGFiYXNlTmFtZSA9IG1fZGF0YWJhc2VOYW1lLmlzb2xhdGVk
Q29weSgpOworICAgIGlkZW50aWZpZXIubV9vcGVuaW5nT3JpZ2luID0gbV9vcGVuaW5nT3JpZ2lu
Lmlzb2xhdGVkQ29weSgpOworICAgIGlkZW50aWZpZXIubV9tYWluRnJhbWVPcmlnaW4gPSBtX21h
aW5GcmFtZU9yaWdpbi5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBXVEY6Om1vdmUoaWRl
bnRpZmllcik7Cit9CiAKICNpZm5kZWYgTkRFQlVHCiBTdHJpbmcgSURCRGF0YWJhc2VJZGVudGlm
aWVyOjpkZWJ1Z1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IGU3MWY5MmMuLmIz
Nzc2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9tYWluRnJhbWVPcmlnaW4ucG9ydCA9IC0xOwogICAgIH0KIAorICAgIElEQkRhdGFiYXNl
SWRlbnRpZmllciBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3BlbmluZ09yaWdp
bi5wb3J0ID09IC0xICYmIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQgPT0gLTE7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4IDk5ZTVjMTIuLmFjZjhiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC03Miw2ICs3MiwyNyBAQCB2b2lkIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKICAgICByZXF1ZXN0LT5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOwogfQog
Cit2b2lkIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6b3BlbkRhdGFiYXNlKElEQk9wZW5EQlJlcXVl
c3QmIHJlcXVlc3QpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZl
cjo6b3BlbkRhdGFiYXNlIC0gJXMiLCByZXF1ZXN0LmRhdGFiYXNlSWRlbnRpZmllcigpLmRlYnVn
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBBU1NFUlQoIW1fb3BlbkRCUmVxdWVzdE1h
cC5jb250YWlucyhyZXF1ZXN0LnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKKyAgICBtX29wZW5EQlJl
cXVlc3RNYXAuc2V0KHJlcXVlc3QucmVxdWVzdElkZW50aWZpZXIoKSwgJnJlcXVlc3QpOworICAg
IAorICAgIElEQlJlcXVlc3REYXRhIHJlcXVlc3REYXRhKCp0aGlzLCByZXF1ZXN0KTsKKyAgICBt
X2RlbGVnYXRlLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOworfQorCit2b2lkIElEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlk
T3BlbkRhdGFiYXNlIik7CisKKyAgICBhdXRvIHJlcXVlc3QgPSBtX29wZW5EQlJlcXVlc3RNYXAu
dGFrZShyZXN1bHREYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVChyZXF1ZXN0
KTsKKworICAgIHJlcXVlc3QtPnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIElEQkNsaWVudAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggZTJjYTNkMC4uMDNmZGIzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaApAQCAtNTAsNyArNTAsMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBkZWxldGVEYXRhYmFzZShJREJPcGVuREJSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWREZWxldGVE
YXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJik7Ci0gICAgCisKKyAgICB2b2lkIG9wZW5EYXRh
YmFzZShJREJPcGVuREJSZXF1ZXN0Jik7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOworCiBwcml2YXRlOgogICAgIElEQkNvbm5lY3Rpb25Ub1NlcnZlcihJ
REJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaAppbmRleCA3YmZlYjhiLi44ZTFlZmM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaApAQCAtNDAsNyArNDAsOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKElEQlJlcXVlc3REYXRhJikgPSAwOwot
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBvcGVuRGF0YWJhc2UoSURCUmVxdWVzdERhdGEmKSA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigp
ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBhYzBjZmY5Li4yZDEwZmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFjdG9y
eUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJGYWN0b3J5SW1wbC5jcHAKQEAgLTExNSw2ICsxMTUsOCBAQCBSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleAogICAgIH0KIAogICAgIGF1dG8gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0
ZU9wZW5SZXF1ZXN0KG1fY29ubmVjdGlvblRvU2VydmVyLmdldCgpLCBjb250ZXh0LCBkYXRhYmFz
ZUlkZW50aWZpZXIsIHZlcnNpb24pOworICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5vcGVuRGF0
YWJhc2UocmVxdWVzdC5nZXQoKSk7CisKICAgICByZXR1cm4gYWRvcHRSZWYoJnJlcXVlc3QubGVh
a1JlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmE1YTQ4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSURCQmFja2luZ1N0b3JlX2gKKyNkZWZpbmUgSURCQmFja2lu
Z1N0b3JlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURC
RGF0YWJhc2VJbmZvLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2
ZXIgeworCitjbGFzcyBJREJCYWNraW5nU3RvcmUgeworcHVibGljOgorICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZSgpIHsgfQorCisgICAgdmlydHVhbCBjb25zdCBJREJEYXRhYmFzZUluZm8m
IGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJCYWNraW5nU3RvcmVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29u
bmVjdGlvblRvQ2xpZW50LmNwcAppbmRleCBjZmY1MWY4Li41ZDAyYTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmNwcApAQCAtNTEsNiArNTEsMTEgQEAgdm9pZCBJREJDb25uZWN0
aW9uVG9DbGllbnQ6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3Vs
dCkKICAgICBtX2RlbGVnYXRlLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHQpOwogfQogCit2b2lk
IElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJD
b25uZWN0aW9uVG9DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAppbmRleCA1MjFhOTY3Li43NTU1MDc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZERlbGV0ZURhdGFi
YXNlKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25z
dCBJREJSZXN1bHREYXRhJik7CiAgICAgCiBwcml2YXRlOgogICAgIElEQkNvbm5lY3Rpb25Ub0Ns
aWVudChJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29u
bmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaAppbmRleCBjZjUwMDM5Li5iMmI0YjVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlv
blRvQ2xpZW50RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaApAQCAtNDEsNiArNDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHRE
YXRhJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVyZWYoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDY4NzE4OTcuLjYxZjQ4N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCkBAIC0zMSw2ICszMSw5IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdERhdGEuaCIKICNpbmNs
dWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURC
U2VydmVyIHsKQEAgLTQyLDYgKzQ1LDggQEAgUmVmPElEQlNlcnZlcj4gSURCU2VydmVyOjpjcmVh
dGUoKQogCiBJREJTZXJ2ZXI6OklEQlNlcnZlcigpCiB7CisgICAgTG9ja2VyPExvY2s+IGxvY2tl
cihtX2RhdGFiYXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKKyAgICBtX3RocmVhZElEID0gY3JlYXRl
VGhyZWFkKElEQlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSwgdGhpcywgIkluZGV4ZWREYXRh
YmFzZSBTZXJ2ZXIiKTsKIH0KIAogdm9pZCBJREJTZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihJ
REJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24pCkBAIC01OCwyNCArNjMsMTEwIEBAIHZv
aWQgSURCU2VydmVyOjp1bnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQm
IGNvbm5lY3Rpb24pCiAgICAgbV9jb25uZWN0aW9uTWFwLnJlbW92ZShjb25uZWN0aW9uLmlkZW50
aWZpZXIoKSk7CiB9CiAKLXZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgZGF0YSkKK1VuaXF1ZUlEQkRhdGFiYXNlJiBJREJTZXJ2ZXI6OmdldE9yQ3Jl
YXRlVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewotICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlIC0g
JXMiLCBkYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLmRlYnVnU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgYXV0byB1bmlxdWVJREJEYXRhYmFzZSA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAu
YWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOworICAgIGlmICh1bmlxdWVJREJEYXRhYmFzZS5pc05l
d0VudHJ5KQorICAgICAgICB1bmlxdWVJREJEYXRhYmFzZS5pdGVyYXRvci0+dmFsdWUgPSBVbmlx
dWVJREJEYXRhYmFzZTo6Y3JlYXRlKCp0aGlzLCBpZGVudGlmaWVyKTsKKworICAgIHJldHVybiAq
dW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
SURCQmFja2luZ1N0b3JlPiBJREJTZXJ2ZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBvbmx5IGhhdmUgdGhlIGluLW1lbW9y
eSBiYWNraW5nIHN0b3JlLCB3aGljaCB3ZSdsbCBjb250aW51ZSB0byB1c2UgZm9yIHByaXZhdGUg
YnJvd3NpbmcuCisgICAgLy8gT25jZSBpdCdzIHRpbWUgZm9yIHBlcnNpc3RlbnQgYmFja2luZyBz
dG9yZXMgdGhpcyBpcyB3aGVyZSB3ZSdsbCBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgcGF0aCBvbiBk
aXNrCisgICAgLy8gYW5kIGNyZWF0ZSBpdC4KKworICAgIHJldHVybiBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmNyZWF0ZShpZGVudGlmaWVyKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6Om9wZW5EYXRh
YmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgTE9HKEluZGV4
ZWREQiwgIklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlIik7CisKKyAgICBhdXRvJiB1bmlxdWVJREJE
YXRhYmFzZSA9IGdldE9yQ3JlYXRlVW5pcXVlSURCRGF0YWJhc2UocmVxdWVzdERhdGEuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworCisgICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFw
LmdldChyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICAvLyBJZiB0aGUgY29ubmVjdGlv
biBiYWNrIHRvIHRoZSBjbGllbnQgaXMgZ29uZSwgdGhlcmUncyBubyB3YXkgdG8gb3BlbiB0aGUg
ZGF0YWJhc2UgYXMKKyAgICAgICAgLy8gd2VsbCBhcyBubyB3YXkgdG8gbWVzc2FnZSBiYWNrIGZh
aWx1cmUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1bmlxdWVJREJEYXRhYmFzZS5v
cGVuRGF0YWJhc2VDb25uZWN0aW9uKCpjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7Cit9CisKK3Zv
aWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2Ug
LSAlcyIsIHJlcXVlc3REYXRhLmRhdGFiYXNlSWRlbnRpZmllcigpLmRlYnVnU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgCi0gICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFw
LmdldChkYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7Cisg
ICAgYXV0byBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9uTWFwLmdldChyZXF1ZXN0RGF0YS5yZXF1
ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICghY29ubmVj
dGlvbikgewotICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIHJlY29yZCBvZiB0aGlzIGNvbm5l
Y3Rpb24gKGUuZy4gaXQgaGFzIGRyb3BwZWQgZHVlIHRvIGEgcHJvY2VzcyBjcmFzaGluZykKLSAg
ICAgICAgLy8gdGhlbiB3ZSBjYW4ndCByZXBvcnQgYmFjayBzdGF0dXMgb2YgdGhlIG9wZXJhdGlv
bi4KLSAgICAgICAgLy8gVGhlcmVmb3JlIHdlIHNob3VsZG4ndCBib3RoZXIgcGVyZm9ybWluZyBp
dC4KKyAgICAgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gYmFjayB0byB0aGUgY2xpZW50IGlzIGdv
bmUsIHRoZXJlJ3Mgbm8gd2F5IHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2UgYXMKKyAgICAgICAgLy8g
d2VsbCBhcyBubyB3YXkgdG8gbWVzc2FnZSBiYWNrIGZhaWx1cmUuCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IER1cmluZyBicmluZ3VwIG9mIG1vZGVybiBJREIs
IHRoZSBkYXRhYmFzZSBkZWxldGlvbiBpcyBhIG5vLW9wLCBhbmQgaXMKICAgICAvLyBpbW1lZGlh
dGVseSByZXBvcnRlZCBiYWNrIHRvIHRoZSBXZWJQcm9jZXNzIGFzIGZhaWx1cmUuCi0gICAgSURC
UmVzdWx0RGF0YSByZXN1bHQoZGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBJREJFcnJvcihJREJF
eGNlcHRpb25Db2RlOjpVbmtub3duKSk7CisgICAgSURCUmVzdWx0RGF0YSByZXN1bHQocmVxdWVz
dERhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5r
bm93bikpOwogICAgIGNvbm5lY3Rpb24tPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdCk7CiB9CiAK
K3ZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFRhc2s+JiYgdGFzaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1f
ZGF0YWJhc2VRdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKK30KKwordm9pZCBJREJTZXJ2
ZXI6OnBvc3REYXRhYmFzZVRhc2tSZXBseShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiYmIHRhc2spCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgbV9kYXRhYmFz
ZVJlcGx5UXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisKKworICAgIExvY2tlcjxMb2Nr
PiBsb2NrZXIobV9tYWluVGhyZWFkUmVwbHlMb2NrKTsKKyAgICBpZiAobV9tYWluVGhyZWFkUmVw
bHlTY2hlZHVsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbWFpblRocmVhZFJlcGx5U2No
ZWR1bGVkID0gdHJ1ZTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzXSB7CisgICAgICAgIGhh
bmRsZVRhc2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgSURCU2Vy
dmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCit7CisgICAgQVNTRVJU
KHRocmVhZERhdGEpOworICAgIElEQlNlcnZlciogc2VydmVyID0gcmVpbnRlcnByZXRfY2FzdDxJ
REJTZXJ2ZXIqPih0aHJlYWREYXRhKTsKKyAgICBzZXJ2ZXItPmRhdGFiYXNlUnVuTG9vcCgpOwor
fQorCit2b2lkIElEQlNlcnZlcjo6ZGF0YWJhc2VSdW5Mb29wKCkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRh
YmFzZVRocmVhZENyZWF0aW9uTG9jayk7CisgICAgfQorCisgICAgd2hpbGUgKGF1dG8gdGFzayA9
IG1fZGF0YWJhc2VRdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQorICAgICAgICB0YXNrLT5wZXJmb3Jt
VGFzaygpOworfQorCit2b2lkIElEQlNlcnZlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQoKQoreworICAgIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX21haW5UaHJlYWRS
ZXBseUxvY2spOworICAgICAgICBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCA9IGZhbHNlOwor
ICAgIH0KKworICAgIHdoaWxlIChhdXRvIHRhc2sgPSBtX2RhdGFiYXNlUmVwbHlRdWV1ZS50cnlH
ZXRNZXNzYWdlKCkpCisgICAgICAgIHRhc2stPnBlcmZvcm1UYXNrKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZjFl
ZmUxNC4uM2UxZTZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMjgsMTQgKzI4LDIwIEBACiAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgogI2luY2x1
ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9NZXNzYWdlUXVl
dWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q3Jvc3NUaHJlYWRUYXNrOwogY2xhc3MgSURCUmVxdWVzdERhdGE7CiAKIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewpAQCAtNDgsMTIgKzU0LDMzIEBAIHB1YmxpYzoKICAgICB2b2lkIHVucmVnaXN0ZXJD
b25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYpOwogCiAgICAgLy8gT3BlcmF0aW9ucyBy
ZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudC4KKyAgICB2b2lkIG9wZW5EYXRhYmFzZShjb25zdCBJREJS
ZXF1ZXN0RGF0YSYpOwogICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERh
dGEmKTsKIAorICAgIHZvaWQgcG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRUYXNrPiYmKTsKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2tSZXBseShzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNr
aW5nU3RvcmU+IGNyZWF0ZUJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKKwogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXIoKTsKIAorICAgIFVuaXF1ZUlEQkRhdGFiYXNl
JiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmll
ciYpOworCisgICAgc3RhdGljIHZvaWQgZGF0YWJhc2VUaHJlYWRFbnRyeSh2b2lkKik7CisgICAg
dm9pZCBkYXRhYmFzZVJ1bkxvb3AoKTsKKyAgICB2b2lkIGhhbmRsZVRhc2tSZXBsaWVzT25NYWlu
VGhyZWFkKCk7CisKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SURCQ29ubmVjdGlvblRv
Q2xpZW50Pj4gbV9jb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8SURCRGF0YWJhc2VJZGVudGlm
aWVyLCBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+PiBtX3VuaXF1ZUlEQkRhdGFiYXNlTWFwOwor
CisgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEIHsgMCB9OworICAgIExvY2sgbV9kYXRh
YmFzZVRocmVhZENyZWF0aW9uTG9jazsKKyAgICBMb2NrIG1fbWFpblRocmVhZFJlcGx5TG9jazsK
KyAgICBib29sIG1fbWFpblRocmVhZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKKworICAgIE1l
c3NhZ2VRdWV1ZTxDcm9zc1RocmVhZFRhc2s+IG1fZGF0YWJhc2VRdWV1ZTsKKyAgICBNZXNzYWdl
UXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUmVwbHlRdWV1ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3BlcmF0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODE3NDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5j
cHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJREJTZXJ2ZXJPcGVyYXRpb24uaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK1JlZjxJREJTZXJ2ZXJPcGVyYXRpb24+IElEQlNl
cnZlck9wZXJhdGlvbjo6Y3JlYXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwg
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IElEQlNlcnZlck9wZXJhdGlvbihjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSkpOworfQor
CitJREJTZXJ2ZXJPcGVyYXRpb246OklEQlNlcnZlck9wZXJhdGlvbihJREJDb25uZWN0aW9uVG9D
bGllbnQmIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKKyAg
ICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQorICAgICwgbV9yZXF1ZXN0RGF0YShyZXF1ZXN0
RGF0YSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJP
cGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmVjMDZjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlck9wZXJhdGlvbi5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIElEQlNlcnZlck9wZXJhdGlvbl9oCisjZGVmaW5lIElEQlNlcnZlck9wZXJhdGlvbl9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25U
b0NsaWVudC5oIgorI2luY2x1ZGUgIklEQlJlcXVlc3REYXRhLmgiCisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBJREJTZXJ2ZXJPcGVyYXRpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxJREJTZXJ2ZXJPcGVyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPElEQlNlcnZlck9wZXJhdGlvbj4gY3JlYXRlKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNv
bnN0IElEQlJlcXVlc3REYXRhJik7CisKKyAgICBJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5l
Y3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICBjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3REYXRhOyB9CisKK3ByaXZh
dGU6CisgICAgSURCU2VydmVyT3BlcmF0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0
IElEQlJlcXVlc3REYXRhJik7CisKKyAgICBJREJDb25uZWN0aW9uVG9DbGllbnQmIG1fY29ubmVj
dGlvbjsKKyAgICBJREJSZXF1ZXN0RGF0YSBtX3JlcXVlc3REYXRhOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSURCU2VydmVyCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJTZXJ2ZXJPcGVyYXRpb25faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMDc0MjA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworc3RkOjp1bmlxdWVfcHRy
PE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gTWVtb3J5SURCQmFja2luZ1N0b3JlOjpjcmVhdGUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4oaWRlbnRpZmllcik7Cit9CisKK01l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFi
YXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQoreworfQorCitNZW1vcnlJREJCYWNraW5nU3RvcmU6On5NZW1vcnlJREJCYWNraW5nU3RvcmUo
KQoreworfQorCitjb25zdCBJREJEYXRhYmFzZUluZm8mIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oKQoreworICAgIGlmICghbV9kYXRhYmFzZUluZm8p
CisgICAgICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUlu
Zm8+KG1faWRlbnRpZmllci5kYXRhYmFzZU5hbWUoKSwgMCk7CisKKyAgICByZXR1cm4gKm1fZGF0
YWJhc2VJbmZvOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFi
MzFhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTWVtb3J5SURCQmFja2luZ1N0b3JlX2gKKyNkZWZpbmUgTWVtb3J5SURC
QmFja2luZ1N0b3JlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiSURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBN
ZW1vcnlJREJCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKKyAgICBmcmll
bmQgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdTdG9yZT4gc3RkOjptYWtlX3VuaXF1
ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwor
cHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SURCQmFja2luZ1N0b3Jl
PiBjcmVhdGUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgCisgICAgdmlydHVh
bCB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICB2aXJ0dWFs
IGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgZ2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICAKK3ByaXZhdGU6CisgICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworCisgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2Rh
dGFiYXNlSW5mbzsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYg
Ly8gTWVtb3J5SURCQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMjU3ZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCisjaW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgorI2luY2x1ZGUgIklEQlNlcnZl
ci5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKyAgICAKK1VuaXF1ZUlEQkRhdGFiYXNlOjpVbmlx
dWVJREJEYXRhYmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCit7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRh
YmFzZUNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uLCBjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCit7CisgICAgYXV0byBvcGVyYXRpb24gPSBJREJT
ZXJ2ZXJPcGVyYXRpb246OmNyZWF0ZShjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7CisgICAgbV9w
ZW5kaW5nT3BlbkRhdGFiYXNlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKG9wZXJhdGlvbikp
OworCisgICAgaWYgKG1fZGF0YWJhc2VJbmZvKSB7CisgICAgICAgIGhhbmRsZU9wZW5EYXRhYmFz
ZU9wZXJhdGlvbnMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3NlcnZl
ci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlLCBtX2lkZW50aWZpZXIpKTsKK30KKwordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucygpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1
ZUlEQkRhdGFiYXNlOjpoYW5kbGVPcGVuRGF0YWJhc2VPcGVyYXRpb25zIik7CisKKyAgICBhdXRv
IG9wZXJhdGlvbiA9IG1fcGVuZGluZ09wZW5EYXRhYmFzZU9wZXJhdGlvbnMudGFrZUZpcnN0KCk7
CisKKyAgICAvLyBGSVhNRTogUmVwb3J0aW5nIG9wZW4gb3BlcmF0aW9ucyBhcyBmYWlsdXJlcyBm
b3Igbm93LgorICAgIC8vIENyZWF0aW5nIGRhdGFiYXNlIGNvbm5lY3Rpb25zIGZvciBzdWNjZXNz
IHdpbGwgYmUgdGhlIG5leHQgc3RlcC4KKworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KG9wZXJh
dGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpLCBJREJFcnJvcihJREJFeGNl
cHRpb25Db2RlOjpVbmtub3duKSk7CisgICAgb3BlcmF0aW9uLT5jb25uZWN0aW9uKCkuZGlkT3Bl
bkRhdGFiYXNlKHJlc3VsdCk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNr
aW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1
ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlIik7CisKKyAgICBBU1NFUlQoIW1fYmFja2lu
Z1N0b3JlKTsKKyAgICBtX2JhY2tpbmdTdG9yZSA9IG1fc2VydmVyLmNyZWF0ZUJhY2tpbmdTdG9y
ZShpZGVudGlmaWVyKTsKKyAgICBhdXRvIGRhdGFiYXNlSW5mbyA9IG1fYmFja2luZ1N0b3JlLT5n
ZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbygpOworCisgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNl
VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpkaWRPcGVuQmFja2luZ1N0b3JlLCBkYXRhYmFzZUluZm8pKTsKK30KKwordm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUluZm8mIGlu
Zm8pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAi
KG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRPcGVuQmFja2luZ1N0b3JlIik7CisgICAgCisg
ICAgbV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNlSW5mbz4oaW5m
byk7CisKKyAgICBoYW5kbGVPcGVuRGF0YWJhc2VPcGVyYXRpb25zKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjYzMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJREJEYXRhYmFzZV9oCisj
ZGVmaW5lIFVuaXF1ZUlEQkRhdGFiYXNlX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJ
ZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCisjaW5jbHVkZSAiSURC
U2VydmVyT3BlcmF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlJlcXVlc3REYXRhOworCituYW1lc3BhY2UgSURCU2Vy
dmVyIHsKKworY2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworY2xhc3MgSURCU2VydmVyOwor
CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxV
bmlxdWVJREJEYXRhYmFzZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0
YWJhc2U+IGNyZWF0ZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVW5p
cXVlSURCRGF0YWJhc2Uoc2VydmVyLCBpZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgdm9pZCBv
cGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNvbnN0IElEQlJl
cXVlc3REYXRhJik7CisKK3ByaXZhdGU6CisgICAgVW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVy
JiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAgCisgICAgdm9pZCBoYW5kbGVP
cGVuRGF0YWJhc2VPcGVyYXRpb25zKCk7CisgICAgCisgICAgLy8gRGF0YWJhc2UgdGhyZWFkIG9w
ZXJhdGlvbnMKKyAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJik7CisKKyAgICAvLyBNYWluIHRocmVhZCBjYWxsYmFja3MKKyAgICB2b2lkIGRpZE9w
ZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZvJik7CisKKyAgICBJREJTZXJ2ZXIm
IG1fc2VydmVyOworICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAg
CisgICAgRGVxdWU8UmVmPElEQlNlcnZlck9wZXJhdGlvbj4+IG1fcGVuZGluZ09wZW5EYXRhYmFz
ZU9wZXJhdGlvbnM7CisgICAgCisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkJhY2tpbmdTdG9yZT4g
bV9iYWNraW5nU3RvcmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9k
YXRhYmFzZUluZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlm
IC8vIFVuaXF1ZUlEQkRhdGFiYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3MmI1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2VJbmZvLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitJREJEYXRhYmFzZUluZm86OklEQkRhdGFiYXNlSW5mbyhj
b25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24pCisgICAgOiBtX25hbWUobmFtZSkK
KyAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQoreworfQorCitJREJEYXRhYmFzZUluZm8gSURCRGF0
YWJhc2VJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIElEQkRhdGFiYXNlSW5mbyBp
bmZvOworCisgICAgaW5mby5tX25hbWUgPSBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7CisgICAgaW5m
by5tX3ZlcnNpb24gPSBtX3ZlcnNpb247CisKKyAgICByZXR1cm4gV1RGOjptb3ZlKGluZm8pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJEYXRhYmFzZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ODdmNTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIElEQkRhdGFiYXNlSW5mb19oCisjZGVmaW5lIElEQkRhdGFiYXNlSW5m
b19oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkRhdGFiYXNl
SW5mbyB7CitwdWJsaWM6CisgICAgSURCRGF0YWJhc2VJbmZvKGNvbnN0IFN0cmluZyYgbmFtZSwg
dWludDY0X3QgdmVyc2lvbik7CisKKyAgICBJREJEYXRhYmFzZUluZm8gaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgSURCRGF0YWJhc2VJbmZvKCkKKyAgICB7CisgICAgfQor
CisgICAgU3RyaW5nIG1fbmFtZTsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKyNlbmRpZiAvLyBJREJEYXRhYmFzZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
LmNwcAppbmRleCBmOTU5ZWZhLi43YjJmODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cApAQCAtODMsNyArODMsMjQgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURh
dGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgUmVmUHRyPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwotICAgIH0pO30KKyAgICB9KTsKK30K
Kwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShJREJSZXF1ZXN0RGF0YSYg
cmVxdWVzdERhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlz
KTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhXSB7CisgICAgICAgIG1fc2VydmVyLT5vcGVuRGF0YWJhc2UocmVxdWVzdERhdGEpOworICAg
IH0pOworfQorCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkRhdGFiYXNlKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VsZih0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9w
ZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXggYmI0YWQ1OS4uNWUxYjlkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vz
c0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtNTUsMTAgKzU1LDEyIEBAIHB1YmxpYzoKIAogICAg
IC8vIElEQkNvbm5lY3Rpb25Ub1NlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFz
ZShJREJSZXF1ZXN0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBvcGVuRGF0YWJhc2UoSURCUmVxdWVzdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKwogICAgIC8v
IElEQkNvbm5lY3Rpb25Ub0NsaWVudAogICAgIHZpcnR1YWwgdWludDY0X3QgaWRlbnRpZmllcigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25z
dCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZl
cj46OnJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3Vu
dGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OmRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNzUwYmFkLi42OTcwNzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMDk5LDYgKzIwOTksMTAgQEAKIAkJNTE4NUZDQjkxQkI0Q0JGODAwMTI4OThGIC8q
IElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwQTU4RkUxQkIwN0FBNTAwQzE5MjgyIC8qIElEQkNvbm5lY3Rpb25U
b0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxODVGQ0JBMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RUYxQkFCNzIwRjAwQzE5
MjgyIC8qIElEQlNlcnZlci5jcHAgKi87IH07CiAJCTUxODVGQ0JCMUJCNENCRjgwMDEyODk4RiAv
KiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEE1OEYwMUJBQjcyMEYwMEMxOTI4MiAvKiBJREJTZXJ2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTg4NjRFMDFCQkFGNTcxMDBF
NTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4ODY0REUxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlE
QkRhdGFiYXNlLmNwcCAqLzsgfTsKKwkJNTE4ODY0RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLzsg
fTsKKwkJNTE4ODY0RTYxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg4NjRFNDFC
QkI0QjdFMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmNwcCAqLzsgfTsKKwkJNTE4ODY0
RTcxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4ODY0RTUxQkJCNEI3RTAwRTU0MEM5
IC8qIElEQlNlcnZlck9wZXJhdGlvbi5oICovOyB9OwogCQk1MTg5RjAxRDEwQjM3QkQ5MDBGM0M3
MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODlGMDFCMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZl
bnQuY3BwICovOyB9OwogCQk1MTg5RjAxRTEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5
RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi87IH07CiAJCTUxODlG
MERFMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMEREMTBCNDZCMEUwMEYzQzczOSAv
KiBQb3BTdGF0ZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTIxMjcsNiArMjEzMSwxMSBAQAogCQk1MUI0
NUQyMDFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUI0NUQxRTFBQjhEMUUyMDAxMTdD
RDIgLyogQ29udGVudEV4dGVuc2lvbi5jcHAgKi87IH07CiAJCTUxQjQ1RDIxMUFCOEQxRTIwMDEx
N0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUI0NUQxRjFBQjhEMUUyMDAxMTdDRDIgLyogQ29udGVudEV4dGVu
c2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUxQjU4RkQ0MTk1QTk2NEQwMDI5OTBCMCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUU1RkVGMTk1MTAxNDcwMDg2
Q0E1RSAvKiBQbGF0Zm9ybUdhbWVwYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MUJBNEFDMzFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJh
c2VJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxQkE0QUMxMUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uY3BwICovOyB9Owor
CQk1MUJBNEFDNDFCQkI1Q0Q4MDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDMjFCQkI1Q0JGMDBE
RjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi87IH07CisJCTUxQkE0QUNBMUJCQzVCRDkwMERG
M0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5jcHAgKi87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAv
KiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmUuaCAqLzsgfTsKKwkJNTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tp
bmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovOyB9OwogCQk1
MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAv
KiBTdG9yYWdlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEw
QTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBNDEwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZy
YW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
QzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi87IH07CkBAIC05NDE0
LDYgKzk0MjMsMTAgQEAKIAkJNTE4NUZDQjYxQkI0Qzc2MTAwMTI4OThGIC8qIERPTVJlcXVlc3RT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZXF1ZXN0U3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NUZDQkMxQkI1Q0I3NzAwMTI4OThG
IC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg1RkNCRDFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2Vy
dmVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVj
dGlvblRvU2VydmVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4
ODY0REUxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4ODY0REYxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZUlE
QkRhdGFiYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODg2NEU0MUJCQjRC
N0UwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCU2VydmVyT3BlcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE4ODY0RTUxQkJCNEI3RTAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJTZXJ2ZXJPcGVyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4OUYwMUIxMEIzN0JEOTAwRjND
NzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NTEsNiArOTQ2NCwxMSBAQAog
CQk1MUI0NTRFOTFCNERBRTdEMDA4NUVBQTYgLyogUGluZ0hhbmRsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQaW5nSGFuZGxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQjQ1RDFFMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUI0NUQxRjFBQjhEMUUyMDAxMTdDRDIg
LyogQ29udGVudEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250ZW50RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkE0QUMx
MUJCQjVDQkYwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCRGF0YWJhc2VJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJEYXRhYmFzZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTRBQzcxQkJDNUFENjAwREYzRDZEIC8q
IElEQkJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJC
YWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFCQTRBQzgxQkJD
NUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5
SURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUJFMzdE
RTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gQ2FjaGVkRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklk
ZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKQEAgLTE2NjM2LDYgKzE2NjU0LDggQEAKIAkJ
NTEwQTU4RTExQkFBNDA5ODAwQzE5MjgyIC8qIHNoYXJlZCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTFCQTRBQzExQkJCNUNCRjAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5jcHAgKi8sCisJCQkJNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZEIC8qIElE
QkRhdGFiYXNlSW5mby5oICovLAogCQkJCTUxNDg0NTNDMUJCOUQwNzYwMDZBNzJFRCAvKiBJREJF
cnJvci5jcHAgKi8sCiAJCQkJNTE0ODQ1M0QxQkI5RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmgg
Ki8sCiAJCQkJNTEwQTU4RjUxQkFDQzRBNTAwQzE5MjgyIC8qIElEQlJlcXVlc3REYXRhLmNwcCAq
LywKQEAgLTE2NjUzLDExICsxNjY3MywxOCBAQAogCQk1MTBBNThFRTFCQUI3MUUwMDBDMTkyODIg
Lyogc2VydmVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8sCiAJCQkJ
NTE2RDdENkQxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi8s
CiAJCQkJNTEwQTU4RkUxQkIwN0FBNTAwQzE5MjgyIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5o
ICovLAogCQkJCTUxNkQ3RDZFMUJCNUYwNjUwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZS5oICovLAogCQkJCTUxMEE1OEVGMUJBQjcyMEYwMEMxOTI4MiAvKiBJREJTZXJ2
ZXIuY3BwICovLAogCQkJCTUxMEE1OEYwMUJBQjcyMEYwMEMxOTI4MiAvKiBJREJTZXJ2ZXIuaCAq
LywKKwkJCQk1MTg4NjRFNDFCQkI0QjdFMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmNw
cCAqLywKKwkJCQk1MTg4NjRFNTFCQkI0QjdFMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9u
LmggKi8sCisJCQkJNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdT
dG9yZS5jcHAgKi8sCisJCQkJNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oICovLAorCQkJCTUxODg2NERFMUJCQUYzMEYwMEU1NDBDOSAvKiBVbmlxdWVJ
REJEYXRhYmFzZS5jcHAgKi8sCisJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1
ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNlcnZlcjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDY1Niw2ICsyNDY4Myw3IEBACiAJCQkJQkM2NDY0MUMxMUQ3
RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg1MDMxQjNFMEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xp
Y3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdF
MCAvKiBEYXRhVHJhbnNmZXJJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNTk5QTEzMTYz
NkU2MDAwOUE3RTAgLyogRGF0YVRyYW5zZmVySXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNTk0NSw2ICsyNTk3Myw3IEBACiAJCQkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5
IC8qIEpTU3R5bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRkY4RjY1MTgwNzQ1
RDgwMDEzMjY3NCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIwMTEx
MDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxODg2NEU3MUJCQjRCODMwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTI0RDkxMjkyMTNDQTk1MUUwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoRGVm
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNUVDOTIwRDk3MjNGRjAwNjNENDlBIC8q
IEpTU1ZHQWx0R2x5cGhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5NjEzQ0E5
NTYxMDBEMjE5MTUgLyogSlNTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTI2NTUxLDYgKzI2NTgwLDcgQEAKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyog
UGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJD
MEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FB
NDg3MDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxQkE0QUM0MUJCQjVDRDgwMERGM0Q2RCAvKiBJREJEYXRhYmFzZUluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9y
bUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCNThGRDQxOTVBOTY0RDAwMjk5
MEIwIC8qIFBsYXRmb3JtR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFD
NEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjYwMiw2ICsyNjYzMiw3IEBACiAJCQkJQjcxRkU2REYxMTA5MUNCMzAwREFFRjc3IC8qIFBy
aW50Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdFQkMwQTE5NDVEMDAwQThFRjVG
IC8qIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0NjEzRUMw
Q0Q2ODFCNTAwRkFEQTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODg2NEUxMUJCQUY1NzQwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTcxNUU2NTMxMzRCQkJFQzAwRDhFNzEzIC8qIFByb2dyZXNzU2hhZG93RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyQTY4MjQwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dy
ZXNzVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDQURENzkxODgwRDkxQzAwRDhCNzFE
IC8qIFByb2dyZXNzVHJhY2tlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjgyOCw2ICsy
Njg1OSw3IEBACiAJCQkJNTE0Qzc2N0YwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlUmVzcG9u
c2VCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNTEyQjAyNkY3MDBDMUEzNTkgLyog
UmV2ZXJiLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNzEyQjAyNkY3MDBDMUEzNTkgLyog
UmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUJBNEFDQjFC
QkM1QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVy
U3RhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFEMTJCMDI2RjcwMEMxQTM1OSAvKiBS
ZXZlcmJJbnB1dEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODE1OCw2ICsyODE5MCw3IEBA
CiAJCQkJNDU4MzBENEQxNjc5QjRGODAwQUNGOEMzIC8qIEF1dG9zY3JvbGxDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDUwMEExNTRGMDkwMDBBNDIzNCAvKiBBdXRvVGFi
bGVMYXlvdXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3NEE1
IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4ODY0RTYx
QkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzAzNjNFMzE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0U1MTgxQTFDREMwMEMwNzRBNSAvKiBBVk1lZGlh
Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMzM2RjYxMTdGOUY2NDcwMERE
RENEMCAvKiBBVlRyYWNrUHJpdmF0ZUFWRk9iakNJbXBsLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0y
ODYxNSw2ICsyODY0OCw3IEBACiAJCQkJODU0MDc1NkMwQUQ2Q0JGOTAwNjIwQzU3IC8qIERPTUhU
TUxPcHRpb25FbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjJGOUMwQUEzQ0FFNTAw
QUQ2NEM1IC8qIERPTUhUTUxPcHRpb25zQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTg1MTgzQjQ3MEFBNjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUGFyYWdyYXBoRWxlbWVudC5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxODg2NEUwMUJCQUY1NzEwMEU1NDBDOSAvKiBVbmlxdWVJREJE
YXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NUVDQkVGODBBQTc2MjY5MDA1NDRGMEIg
LyogRE9NSFRNTFBhcmFtRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1MTgzQjQ5MEFB
NjkyNjEwMEYxOUZBMyAvKiBET01IVE1MUHJlRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUE0MjI2RTk2MTE2M0Q3M0EwMDhCODM5NyAvKiBET01IVE1MUHJvZ3Jlc3NFbGVtZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMDA0Nyw2ICszMDA4MSw3IEBACiAJCQkJNDQzRjA0MjcwRTc1QzhG
QjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE3RkE2NDkwRERBM0NCQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUJBNEFDQTFCQkM1
QkQ5MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI2OTM5NzI2MUE0QTVGQkQwMEU4MzQ5RCAvKiBORkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjY3NzI2MDAxQTVCM0FEOTAwM0MyNEREIC8qIE5GQVRvREZBLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4NyAvKiBOaW5lUGllY2VJbWFnZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMwODU0LDYgKzMwODg5LDcgQEAKIAkJCQlBMURFNzEzMjE4NjEzMjIy
MDA3MzQxOTIgLyogVG91Y2hDb25zdHJ1Y3RvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFE
RTcxMkQxODYxMkFDMTAwNzM0MTkyIC8qIFRvdWNoRXZlbnRzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwNzAzMzREMzE0NTlGRkFEMDA4RDhENDUgLyogVHJhY2tFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTg4RTBDMTE3MTVDRTI2MDA2NThEOTggLyogVHJh
Y2tMaXN0QmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRkFDMzBGRjE4NEZCMTQ1MDA4QzRG
MUUgLyogVHJhaWxpbmdPYmplY3RzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IGE4ZGU3NzYuLjg4OWM4NGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAg
LTQyLDYgKzQyLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJJREJHZXRSZXN1bHQuaCIKICNpbmNsdWRlICJJREJLZXlEYXRh
LmgiCkBAIC0xMjcsNiArMTI5LDE1IEBAIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFs
c2UsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+OjpUeXBlIENyb3NzVGhyZWFkQ29wCiAgICAgcmV0
dXJuIG1ldGFkYXRhLmlzb2xhdGVkQ29weSgpOwogfQogCitDcm9zc1RocmVhZENvcGllckJhc2U8
ZmFsc2UsIGZhbHNlLCBJREJEYXRhYmFzZUluZm8+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSW5mbz46OmNvcHkoY29uc3QgSURCRGF0YWJhc2VJ
bmZvJiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLmlzb2xhdGVkQ29weSgpOworfQorCitDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJEYXRhYmFzZUlkZW50aWZpZXI+OjpU
eXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSWRlbnRp
Zmllcj46OmNvcHkoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorewor
ICAgIHJldHVybiBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOworfQogI2VuZGlmCiAKIC8vIFRl
c3QgQ3Jvc3NUaHJlYWRDb3BpZXIgdXNpbmcgQ09NUElMRV9BU1NFUlQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCBkNzUwNTljLi4xNTZlOGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTE5MCw2
ICsxOTAsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB0eXBlZGVmIElEQk9iamVj
dFN0b3JlTWV0YWRhdGEgVHlwZTsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBJREJP
YmplY3RTdG9yZU1ldGFkYXRhJik7CiAgICAgfTsKKworICAgIGNsYXNzIElEQkRhdGFiYXNlSW5m
bzsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJEYXRhYmFzZUluZm8+IHsKKyAgICAgICAgdHlwZWRlZiBJ
REJEYXRhYmFzZUluZm8gVHlwZTsKKyAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBJREJE
YXRhYmFzZUluZm8mKTsKKyAgICB9OworCisgICAgY2xhc3MgSURCRGF0YWJhc2VJZGVudGlmaWVy
OworICAgIHRlbXBsYXRlPD4gc3RydWN0IFdFQkNPUkVfRVhQT1JUIENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSWRlbnRpZmllcj4geworICAgICAgICB0eXBl
ZGVmIElEQkRhdGFiYXNlSWRlbnRpZmllciBUeXBlOworICAgICAgICBzdGF0aWMgVHlwZSBjb3B5
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIH07CisKICNlbmRpZgogCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4K
</data>
<flag name="review"
          id="287361"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262205</attachid>
            <date>2015-09-30 16:36:43 -0700</date>
            <delta_ts>2015-09-30 17:01:20 -0700</delta_ts>
            <desc>Patch v2 for landing</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>64223</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMTQ2MDg3Li4zMjJhOGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDkt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBVbmlx
dWVJREJEYXRhYmFzZSBvYmplY3QsIElEQkJhY2tpbmdTdG9yZSBvYmplY3RzLCBhbmQgYSBkYXRh
YmFzZSBvcGVyYXRpb24gdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sOiBBZGRlZC4KKwog
MjAxNS0wOS0zMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRVM2XSBBZGQgVHlwZWRBcnJheS5wcm90b3R5cGUgZnVuY3Rpb25hbGl0eS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDJmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3Qt
ZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQUxFUlQ6IFtvYmplY3QgSURCT3Bl
bkRCUmVxdWVzdF0KK0FMRVJUOiBlcnJvciBbb2JqZWN0IEV2ZW50XQorQUxFUlQ6IERvbmUKK1Ro
aXMgdGVzdCBjYWxscyBvcGVuIG9uIHdpbmRvdy5pbmRleGVkREIgaW4gdmFyaW91cyB3YXlzLCB2
ZXJpZnlpbmcgdGhhdCBJREJPcGVuREJSZXF1ZXN0IG9iamVjdHMgYXJlIHJldHVybmVkIHdoZW4g
ZXhwZWN0ZWQgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biB3aGVuIGV4cGVjdGVkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1y
ZXF1ZXN0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
b3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xMmY4ZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50Lmh0bWwKQEAgLTAs
MCArMSwyOSBAQAorVGhpcyB0ZXN0IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWREQiBpbiB2
YXJpb3VzIHdheXMsIHZlcmlmeWluZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0cyBhcmUg
cmV0dXJuZWQgd2hlbiBleHBlY3RlZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdoZW4gZXhw
ZWN0ZWQuCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKwor
ZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgcmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVGVzdERhdGFiYXNlIik7CithbGVydChyZXF1
ZXN0KTsKKworcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCit7CisJYWxlcnQoInN1Y2Nl
c3MiKTsKKwlkb25lKCk7Cit9CityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQoreworCWFs
ZXJ0KCJlcnJvciAiICsgZSk7CisJZG9uZSgpOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDExZjJmMDAuLjBmZjBiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04OTgs
NyArODk4LDExIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyT3BlcmF0aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5m
by5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0SWRlbnRpZmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjJi
MzlhLi5jZmZjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTUtMDktMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBVbmlxdWVJREJE
YXRhYmFzZSBvYmplY3QsIElEQkJhY2tpbmdTdG9yZSBvYmplY3RzLCBhbmQgYSBkYXRhYmFzZSBv
cGVyYXRpb24gdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJl
cXVlc3QtZXZlbnQuaHRtbAorCisgICAgICAgIC0gVW5pcXVlSURCRGF0YWJhc2UgcmVwcmVzZW50
cyBhIHNwZWNpZmljIElEQiBkYXRhYmFzZSBpbnN0YW5jZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxl
IAorICAgICAgICAgIGNvbm5lY3Rpb25zIHRvIGl0LgorICAgICAgICAtIElEQkJhY2tpbmdTdG9y
ZSBpcyBhbiBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiBvZiBhIHVuaXF1ZSBkYXRhYmFzZSdzIGJh
Y2tpbmcgc3RvcmUsIAorICAgICAgICAgIGFuZCBoYXMgYSBjb25jcmV0ZSBpbi1tZW1vcnkgaW1w
bGVtZW50YXRpb24gZm9yIG5vdy4KKyAgICAgICAgLSBUaGUgZGF0YWJhc2UgdGhyZWFkIGV4aXN0
cyBvbiBJREJTZXJ2ZXIgYW5kIGlzIGZvciBvZmZsb2FkaW5nIGFjdHVhbCBkYXRhYmFzZSBJL08g
ZnJvbSAKKyAgICAgICAgICB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVy
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50RGVsZWdhdGUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0T3JDcmVh
dGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXJPcGVyYXRpb246OklEQlNlcnZlck9wZXJhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmguCisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlck9wZXJhdGlvbjo6Y29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlck9wZXJhdGlvbjo6cmVx
dWVzdERhdGEpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0
b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmguCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFu
ZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmguCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGUpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5m
by5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VJbmZvOjpJREJEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJEYXRhYmFzZUluZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmguCisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUluZm86OklEQkRhdGFiYXNlSW5mbyk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlSW5mbz46OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlm
aWVyPjo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKwog
MjAxNS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGwgb3V0IHIxODgzMzE6ICJOZXR3b3JrUHJvY2VzczogRE5TIHByZWZldGNo
IGhhcHBlbnMgaW4gdGhlIFdlYiBQcm9jZXNzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggMDNj
YTZkZS4uOTRiN2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC00NCw2ICs0NCwxNiBAQCBJ
REJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgUwogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgp
KTsKIH0KIAorSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRlbnRpZmll
cjsKKworICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNlTmFtZS5pc29s
YXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1fb3BlbmluZ09yaWdpbiA9IG1fb3BlbmluZ09y
aWdpbi5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1fbWFpbkZyYW1lT3JpZ2luID0g
bV9tYWluRnJhbWVPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisKKyAgICByZXR1cm4gV1RGOjptb3Zl
KGlkZW50aWZpZXIpOworfQogCiAjaWZuZGVmIE5ERUJVRwogU3RyaW5nIElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGVidWdTdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBlNzFmOTJj
Li5iMzc3NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQgPSAtMTsKICAgICB9CiAKKyAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX29wZW5pbmdP
cmlnaW4ucG9ydCA9PSAtMSAmJiBtX21haW5GcmFtZU9yaWdpbi5wb3J0ID09IC0xOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5OWU1YzEyLi5hY2Y4YjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNzIsNiArNzIsMjcgQEAgdm9pZCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiAgICAgcmVxdWVzdC0+cmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EYXRhYmFzZShJREJPcGVuREJS
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSAtICVzIiwgcmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKS5k
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgQVNTRVJUKCFtX29wZW5EQlJlcXVl
c3RNYXAuY29udGFpbnMocmVxdWVzdC5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CisgICAgbV9vcGVu
REJSZXF1ZXN0TWFwLnNldChyZXF1ZXN0LnJlcXVlc3RJZGVudGlmaWVyKCksICZyZXF1ZXN0KTsK
KyAgICAKKyAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgqdGhpcywgcmVxdWVzdCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRpZE9wZW5EYXRhYmFzZSIpOworCisgICAgYXV0byByZXF1ZXN0ID0gbV9vcGVuREJSZXF1ZXN0
TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQocmVx
dWVzdCk7CisKKyAgICByZXF1ZXN0LT5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCmluZGV4IGUyY2EzZDAuLjAzZmRiM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTUwLDcgKzUwLDEwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGVsZXRlRGF0YWJhc2UoSURCT3BlbkRCUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkRGVs
ZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIAorCisgICAgdm9pZCBvcGVu
RGF0YWJhc2UoSURCT3BlbkRCUmVxdWVzdCYpOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNv
bnN0IElEQlJlc3VsdERhdGEmKTsKKwogcHJpdmF0ZToKICAgICBJREJDb25uZWN0aW9uVG9TZXJ2
ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKaW5kZXggN2JmZWI4Yi4uOGUxZWZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKQEAgLTQwLDcgKzQw
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShJREJSZXF1ZXN0RGF0YSYpID0g
MDsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkRhdGFiYXNlKElEQlJlcXVlc3REYXRhJikg
PSAwOworCiAgICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWYoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggYWMwY2ZmOS4uMmQxMGZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZh
Y3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCRmFjdG9yeUltcGwuY3BwCkBAIC0xMTUsNiArMTE1LDggQEAgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXgKICAgICB9CiAKICAgICBhdXRvIHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0Ojpj
cmVhdGVPcGVuUmVxdWVzdChtX2Nvbm5lY3Rpb25Ub1NlcnZlci5nZXQoKSwgY29udGV4dCwgZGF0
YWJhc2VJZGVudGlmaWVyLCB2ZXJzaW9uKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+b3Bl
bkRhdGFiYXNlKHJlcXVlc3QuZ2V0KCkpOworCiAgICAgcmV0dXJuIGFkb3B0UmVmKCZyZXF1ZXN0
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hNWE0OGMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIElEQkJh
Y2tpbmdTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
IklEQkRhdGFiYXNlSW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURC
U2VydmVyIHsKKworY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5JREJCYWNraW5nU3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgSURCRGF0YWJhc2VJ
bmZvJiBnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbygpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggY2ZmNTFmOC4uNWQwMmExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIHZvaWQgSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0KTsKIH0KIAor
dm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHQpCit7CisgICAgbV9kZWxlZ2F0ZS0+ZGlkT3BlbkRhdGFiYXNlKHJlc3Vs
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggNTIxYTk2Ny4uNzU1NTA3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNv
bm5lY3Rpb25Ub0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0OwogCiAgICAgdm9pZCBkaWREZWxldGVE
YXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2Uo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIAogcHJpdmF0ZToKICAgICBJREJDb25uZWN0aW9u
VG9DbGllbnQoSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKaW5kZXggY2Y1MDAzOS4uYjJiNGI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTQxLDYgKzQx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHRE
YXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVz
dWx0RGF0YSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWYoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA2ODcxODk3Li42MWY0ODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMzEsNiArMzEsOSBAQAogI2luY2x1ZGUgIklEQlJlcXVlc3REYXRhLmgiCiAj
aW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNZW1vcnlJREJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IElEQlNlcnZlciB7CkBAIC00Miw2ICs0NSw4IEBAIFJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6
Y3JlYXRlKCkKIAogSURCU2VydmVyOjpJREJTZXJ2ZXIoKQogeworICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9uTG9jayk7CisgICAgbV90aHJlYWRJRCA9IGNy
ZWF0ZVRocmVhZChJREJTZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVk
RGF0YWJhc2UgU2VydmVyIik7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rp
b24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uKQpAQCAtNTgsMjQgKzYzLDExMCBA
QCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBjb25uZWN0aW9uKQogICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmIGRhdGEpCitVbmlxdWVJREJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRP
ckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjpkZWxldGVEYXRhYmFz
ZSAtICVzIiwgZGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5kZWJ1Z1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNl
TWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAodW5pcXVlSURCRGF0YWJhc2Uu
aXNOZXdFbnRyeSkKKyAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0g
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1
cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworCisgICAgLy8gRklYTUU6IEZvciBub3cgd2Ugb25seSBoYXZlIHRoZSBpbi1t
ZW1vcnkgYmFja2luZyBzdG9yZSwgd2hpY2ggd2UnbGwgY29udGludWUgdG8gdXNlIGZvciBwcml2
YXRlIGJyb3dzaW5nLgorICAgIC8vIE9uY2UgaXQncyB0aW1lIGZvciBwZXJzaXN0ZW50IGJhY2tp
bmcgc3RvcmVzIHRoaXMgaXMgd2hlcmUgd2UnbGwgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHBhdGgg
b24gZGlzaworICAgIC8vIGFuZCBjcmVhdGUgaXQuCisKKyAgICByZXR1cm4gTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpvcGVu
RGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIExPRyhJ
bmRleGVkREIsICJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSIpOworCisgICAgYXV0byYgdW5pcXVl
SURCRGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRp
ZmllcigpKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgLy8gSWYgdGhlIGNvbm5l
Y3Rpb24gYmFjayB0byB0aGUgY2xpZW50IGlzIGdvbmUsIHRoZXJlJ3Mgbm8gd2F5IHRvIG9wZW4g
dGhlIGRhdGFiYXNlIGFzCisgICAgICAgIC8vIHdlbGwgYXMgbm8gd2F5IHRvIG1lc3NhZ2UgYmFj
ayBmYWlsdXJlLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5pcXVlSURCRGF0YWJh
c2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbigqY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOworfQor
Cit2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFi
YXNlIC0gJXMiLCByZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5kZWJ1Z1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQoZGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocmVxdWVzdERhdGEu
cmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKLSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSByZWNvcmQgb2YgdGhpcyBj
b25uZWN0aW9uIChlLmcuIGl0IGhhcyBkcm9wcGVkIGR1ZSB0byBhIHByb2Nlc3MgY3Jhc2hpbmcp
Ci0gICAgICAgIC8vIHRoZW4gd2UgY2FuJ3QgcmVwb3J0IGJhY2sgc3RhdHVzIG9mIHRoZSBvcGVy
YXRpb24uCi0gICAgICAgIC8vIFRoZXJlZm9yZSB3ZSBzaG91bGRuJ3QgYm90aGVyIHBlcmZvcm1p
bmcgaXQuCisgICAgICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGJhY2sgdG8gdGhlIGNsaWVudCBp
cyBnb25lLCB0aGVyZSdzIG5vIHdheSB0byBkZWxldGUgdGhlIGRhdGFiYXNlIGFzCisgICAgICAg
IC8vIHdlbGwgYXMgbm8gd2F5IHRvIG1lc3NhZ2UgYmFjayBmYWlsdXJlLgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBEdXJpbmcgYnJpbmd1cCBvZiBtb2Rlcm4g
SURCLCB0aGUgZGF0YWJhc2UgZGVsZXRpb24gaXMgYSBuby1vcCwgYW5kIGlzCiAgICAgLy8gaW1t
ZWRpYXRlbHkgcmVwb3J0ZWQgYmFjayB0byB0aGUgV2ViUHJvY2VzcyBhcyBmYWlsdXJlLgotICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0KGRhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3Io
SURCRXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KHJl
cXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6
OlVua25vd24pKTsKICAgICBjb25uZWN0aW9uLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHQpOwog
fQogCit2b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiYmIHRhc2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7Cit9CisKK3ZvaWQgSURC
U2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
VGFzaz4mJiB0YXNrKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fZGF0
YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworCisKKyAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKG1fbWFpblRocmVhZFJlcGx5TG9jayk7CisgICAgaWYgKG1fbWFpblRocmVh
ZFJlcGx5U2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21haW5UaHJlYWRSZXBs
eVNjaGVkdWxlZCA9IHRydWU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10geworICAgICAg
ICBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOworICAgIH0pOworfQorCit2b2lkIElE
QlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQoreworICAgIEFT
U0VSVCh0aHJlYWREYXRhKTsKKyAgICBJREJTZXJ2ZXIqIHNlcnZlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SURCU2VydmVyKj4odGhyZWFkRGF0YSk7CisgICAgc2VydmVyLT5kYXRhYmFzZVJ1bkxvb3Ao
KTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCgpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgeworICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
ZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2spOworICAgIH0KKworICAgIHdoaWxlIChhdXRvIHRh
c2sgPSBtX2RhdGFiYXNlUXVldWUud2FpdEZvck1lc3NhZ2UoKSkKKyAgICAgICAgdGFzay0+cGVy
Zm9ybVRhc2soKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWlu
VGhyZWFkKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9tYWluVGhy
ZWFkUmVwbHlMb2NrKTsKKyAgICAgICAgbV9tYWluVGhyZWFkUmVwbHlTY2hlZHVsZWQgPSBmYWxz
ZTsKKyAgICB9CisKKyAgICB3aGlsZSAoYXV0byB0YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUu
dHJ5R2V0TWVzc2FnZSgpKQorICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4
IGYxZWZlMTQuLjNlMWU2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTI4LDE0ICsyOCwyMCBAQAogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNp
bmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENyb3NzVGhyZWFkVGFzazsKIGNsYXNzIElEQlJlcXVlc3REYXRhOwogCiBuYW1lc3BhY2Ug
SURCU2VydmVyIHsKQEAgLTQ4LDEyICs1NCwzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKIAogICAgIC8vIE9wZXJhdGlv
bnMgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQuCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVl
c3REYXRhJik7CiAKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkVGFzaz4mJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJik7CisKIHByaXZhdGU6CiAgICAgSURCU2VydmVyKCk7CiAKKyAgICBVbmlxdWVJREJEYXRh
YmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImKTsKKworICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkRW50cnkodm9pZCopOwor
ICAgIHZvaWQgZGF0YWJhc2VSdW5Mb29wKCk7CisgICAgdm9pZCBoYW5kbGVUYXNrUmVwbGllc09u
TWFpblRocmVhZCgpOworCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElEQkNvbm5lY3Rp
b25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBIYXNoTWFwPElEQkRhdGFiYXNlSWRl
bnRpZmllciwgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPj4gbV91bmlxdWVJREJEYXRhYmFzZU1h
cDsKKworICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRCB7IDAgfTsKKyAgICBMb2NrIG1f
ZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2s7CisgICAgTG9jayBtX21haW5UaHJlYWRSZXBseUxv
Y2s7CisgICAgYm9vbCBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7IGZhbHNlIH07CisKKyAg
ICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7CisgICAgTWVz
c2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgxNzQ0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRp
b24uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCU2VydmVyT3BlcmF0aW9uLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitSZWY8SURCU2VydmVyT3BlcmF0aW9uPiBJ
REJTZXJ2ZXJPcGVyYXRpb246OmNyZWF0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rp
b24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJTZXJ2ZXJPcGVyYXRpb24oY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpKTsK
K30KKworSURCU2VydmVyT3BlcmF0aW9uOjpJREJTZXJ2ZXJPcGVyYXRpb24oSURCQ29ubmVjdGlv
blRvQ2xpZW50JiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fcmVxdWVzdERhdGEocmVx
dWVzdERhdGEpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyT3BlcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZlYzA2
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJREJTZXJ2ZXJPcGVyYXRpb25faAorI2RlZmluZSBJREJTZXJ2ZXJPcGVyYXRpb25f
aAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJDb25uZWN0
aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgSURCU2VydmVyT3BlcmF0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCU2VydmVyT3BlcmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxJREJTZXJ2ZXJPcGVyYXRpb24+IGNyZWF0ZShJREJDb25uZWN0aW9uVG9DbGllbnQm
LCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworCisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBj
b25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0RGF0YTsgfQorCitw
cml2YXRlOgorICAgIElEQlNlcnZlck9wZXJhdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBj
b25zdCBJREJSZXF1ZXN0RGF0YSYpOworCisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBtX2Nv
bm5lY3Rpb247CisgICAgSURCUmVxdWVzdERhdGEgbV9yZXF1ZXN0RGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVyT3BlcmF0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjA3NDIwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVl
X3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworfQor
CitNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKK3sKK30KKworTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0
b3JlKCkKK3sKK30KKworY29uc3QgSURCRGF0YWJhc2VJbmZvJiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VJ
bmZvKQorICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworCisgICAgcmV0dXJuICpt
X2RhdGFiYXNlSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hYjMxYWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmll
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xh
c3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CisgICAg
ZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdT
dG9yZT4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIAorICAgIHZp
cnR1YWwgfk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdmly
dHVhbCBjb25zdCBJREJEYXRhYmFzZUluZm8mIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgCitwcml2YXRlOgorICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworICAgIElEQkRhdGFiYXNlSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4g
bV9kYXRhYmFzZUluZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2Vu
ZGlmIC8vIE1lbW9yeUlEQkJhY2tpbmdTdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTI1N2U3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKKyNpbmNsdWRlICJJREJT
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisgICAgCitVbmlxdWVJREJEYXRhYmFzZTo6
VW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQoreworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
RGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8gb3BlcmF0aW9uID0g
SURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUoY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOworICAg
IG1fcGVuZGluZ09wZW5EYXRhYmFzZU9wZXJhdGlvbnMuYXBwZW5kKFdURjo6bW92ZShvcGVyYXRp
b24pKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mbykgeworICAgICAgICBoYW5kbGVPcGVuRGF0
YWJhc2VPcGVyYXRpb25zKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9z
ZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSwgbV9pZGVudGlmaWVyKSk7Cit9CisKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZU9wZW5EYXRhYmFzZU9wZXJhdGlvbnMoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBV
bmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucyIpOworCisgICAg
YXV0byBvcGVyYXRpb24gPSBtX3BlbmRpbmdPcGVuRGF0YWJhc2VPcGVyYXRpb25zLnRha2VGaXJz
dCgpOworCisgICAgLy8gRklYTUU6IFJlcG9ydGluZyBvcGVuIG9wZXJhdGlvbnMgYXMgZmFpbHVy
ZXMgZm9yIG5vdy4KKyAgICAvLyBDcmVhdGluZyBkYXRhYmFzZSBjb25uZWN0aW9ucyBmb3Igc3Vj
Y2VzcyB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAuCisKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdChv
cGVyYXRpb24tPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3IoSURC
RXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOworICAgIG9wZXJhdGlvbi0+Y29ubmVjdGlvbigpLmRp
ZE9wZW5EYXRhYmFzZShyZXN1bHQpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSIpOworCisgICAgQVNTRVJUKCFtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgbV9iYWNraW5nU3RvcmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5n
U3RvcmUoaWRlbnRpZmllcik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtX2JhY2tpbmdTdG9y
ZS0+Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oKTsKKworICAgIG1fc2VydmVyLnBvc3REYXRh
YmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvKSk7Cit9CisKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWRE
QiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOworICAg
IAorICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworCisgICAgaGFuZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucygpOworfQorCit9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI2MzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVW5pcXVlSURCRGF0YWJhc2Vf
aAorI2RlZmluZSBVbmlxdWVJREJEYXRhYmFzZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgorI2luY2x1ZGUg
IklEQlNlcnZlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKKworbmFtZXNwYWNlIElE
QlNlcnZlciB7CisKK2NsYXNzIElEQkNvbm5lY3Rpb25Ub0NsaWVudDsKK2NsYXNzIElEQlNlcnZl
cjsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VW5pcXVlSURCRGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjcmVhdGUoSURCU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFVuaXF1ZUlEQkRhdGFiYXNlKHNlcnZlciwgaWRlbnRpZmllcikpOworICAgIH0KKworICAgIHZv
aWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJ
REJSZXF1ZXN0RGF0YSYpOworCitwcml2YXRlOgorICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNl
cnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIAorICAgIHZvaWQgaGFu
ZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucygpOworICAgIAorICAgIC8vIERhdGFiYXNlIHRocmVh
ZCBvcGVyYXRpb25zCisgICAgdm9pZCBvcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYpOworCisgICAgLy8gTWFpbiB0aHJlYWQgY2FsbGJhY2tzCisgICAgdm9pZCBk
aWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOworCisgICAgSURCU2Vy
dmVyJiBtX3NlcnZlcjsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIAorICAgIERlcXVlPFJlZjxJREJTZXJ2ZXJPcGVyYXRpb24+PiBtX3BlbmRpbmdPcGVuRGF0
YWJhc2VPcGVyYXRpb25zOworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IG1fYmFja2luZ1N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IG1fZGF0YWJhc2VJbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNl
bmRpZiAvLyBVbmlxdWVJREJEYXRhYmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNzJiNTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNw
cApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCRGF0YWJhc2VJbmZvOjpJREJEYXRhYmFzZUlu
Zm8oY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgIDogbV9uYW1lKG5h
bWUpCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCRGF0YWJhc2VJbmZvIElE
QkRhdGFiYXNlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZUlu
Zm8gaW5mbzsKKworICAgIGluZm8ubV9uYW1lID0gbV9uYW1lLmlzb2xhdGVkQ29weSgpOworICAg
IGluZm8ubV92ZXJzaW9uID0gbV92ZXJzaW9uOworCisgICAgcmV0dXJuIFdURjo6bW92ZShpbmZv
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjg3ZjU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJREJEYXRhYmFzZUluZm9faAorI2RlZmluZSBJREJEYXRhYmFz
ZUluZm9faAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJEYXRh
YmFzZUluZm8geworcHVibGljOgorICAgIElEQkRhdGFiYXNlSW5mbyhjb25zdCBTdHJpbmcmIG5h
bWUsIHVpbnQ2NF90IHZlcnNpb24pOworCisgICAgSURCRGF0YWJhc2VJbmZvIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQkRhdGFiYXNlSW5mbygpCisgICAgeworICAg
IH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisjZW5kaWYgLy8gSURCRGF0YWJhc2VJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKaW5kZXggZjk1OWVmYS4uN2IyZjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKQEAgLTgzLDcgKzgzLDI0IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTt9CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1
ZXN0RGF0YV0geworICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5k
aWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IGJiNGFkNTkuLjVlMWI5ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTU1LDEwICs1NSwxMiBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJREJDb25uZWN0aW9uVG9TZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoSURCUmVxdWVzdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgb3BlbkRhdGFiYXNlKElEQlJlcXVlc3REYXRhJikgb3ZlcnJpZGUgZmluYWw7CisKICAg
ICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnQKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZp
ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2Uo
Y29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBk
aWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJT
ZXJ2ZXI+OjpyZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVm
Q291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTc1MGJhZC4uMDVi
NmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTkyMSw3ICsxOTIxLDcgQEAKIAkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5Mjgy
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThFMjFCQUE0MEFFMDBDMTkyODIgLyogSW5Qcm9jZXNzSURC
U2VydmVyLmNwcCAqLzsgfTsKIAkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vz
c0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEY5MUJB
Q0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThGNTFCQUNDNEE1MDBDMTkyODIgLyogSURC
UmVxdWVzdERhdGEuY3BwICovOyB9OwotCQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURC
UmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEE1OEY2MUJBQ0M0QTUwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oICovOyB9Owor
CQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEY2MUJBQ0M0QTUwMEMx
OTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEZCMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0
SWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBBNThFNjFCQUE0MUM5MDBDMTkyODIgLyogSURCUmVxdWVzdElkZW50aWZpZXIuY3Bw
ICovOyB9OwogCQk1MTBBNThGQzFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1
OEU3MUJBQTQxQzkwMEMxOTI4MiAvKiBJREJSZXF1ZXN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTMzMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi87IH07CkBAIC0yMDk5LDYgKzIwOTksMTAgQEAKIAkJ
NTE4NUZDQjkxQkI0Q0JGODAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RkUxQkIwN0FB
NTAwQzE5MjgyIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxODVGQ0JBMUJCNENCRjgwMDEyODk4RiAv
KiBJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQTU4RUYxQkFCNzIwRjAwQzE5MjgyIC8qIElEQlNlcnZlci5jcHAgKi87IH07CiAJ
CTUxODVGQ0JCMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEYwMUJBQjcyMEYwMEMxOTI4MiAv
KiBJREJTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MTg4NjRFMDFCQkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4ODY0REUx
QkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLzsgfTsKKwkJNTE4ODY0
RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkg
LyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODg2NEU0MUJCQjRCN0UwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uY3BwICovOyB9
OworCQk1MTg4NjRFNzFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg4NjRFNTFCQkI0
QjdFMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNw
cCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUMx
MEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oICovOyB9OwogCQk1MTg5RjBERTEw
QjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9w
U3RhdGVFdmVudC5jcHAgKi87IH07CkBAIC0yMTI3LDYgKzIxMzEsMTEgQEAKIAkJNTFCNDVEMjAx
QUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUUxQUI4RDFFMjAwMTE3Q0QyIC8q
IENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk1MUI0NUQyMTFBQjhEMUUyMDAxMTdDRDIg
LyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI1
OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNUZFRjE5NTEwMTQ3MDA4NkNBNUUg
LyogUGxhdGZvcm1HYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDMTFCQkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCAqLzsgfTsKKwkJNTFC
QTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZE
IC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAg
Ki87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0
QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJ
NTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYz
RDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJl
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3
REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUMwQUE0MTBGMkFBMTVF
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1l
LmNwcCAqLzsgfTsKQEAgLTk0MTQsNiArOTQyMywxMCBAQAogCQk1MTg1RkNCNjFCQjRDNzYxMDAx
Mjg5OEYgLyogRE9NUmVxdWVzdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVJlcXVlc3RTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1
RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAv
KiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0
YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURC
RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg4NjRERjFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE4ODY0RTQxQkJCNEI3RTAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTZXJ2ZXJPcGVyYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg4NjRFNTFCQkI0QjdFMDBFNTQw
QzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQlNlcnZlck9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0
YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3BTdGF0ZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODlGMEREMTBCNDZCMEUwMEYz
QzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTQ1MSw2ICs5NDY0LDExIEBACiAJCTUxQjQ1NEU5MUI0REFFN0QwMDg1RUFBNiAvKiBQaW5nSGFu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpbmdIYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUUxQUI4RDFFMjAwMTE3Q0QyIC8qIENv
bnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1
RDFGMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFCQTRBQzExQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJEYXRhYmFzZUluZm8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBNEFDMjFCQkI1Q0JGMDBERjNE
NkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQkRhdGFiYXNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBNEFD
NzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkE0QUM5MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBDYWNoZWRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwpAQCAtMTY2
MzYsNiArMTY2NTQsOCBAQAogCQk1MTBBNThFMTFCQUE0MDk4MDBDMTkyODIgLyogc2hhcmVkICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUJBNEFDMTFC
QkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCAqLywKKwkJCQk1MUJBNEFDMjFC
QkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi8sCiAJCQkJNTE0ODQ1M0MxQkI5
RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLywKIAkJCQk1MTQ4NDUzRDFCQjlEMDc2MDA2
QTcyRUQgLyogSURCRXJyb3IuaCAqLywKIAkJCQk1MTBBNThGNTFCQUNDNEE1MDBDMTkyODIgLyog
SURCUmVxdWVzdERhdGEuY3BwICovLApAQCAtMTY2NTMsMTEgKzE2NjczLDE4IEBACiAJCTUxMEE1
OEVFMUJBQjcxRTAwMEMxOTI4MiAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNr
aW5nU3RvcmUuaCAqLywKIAkJCQk1MTZEN0Q2RDFCQjVGMDY1MDBBRjdDNzcgLyogSURCQ29ubmVj
dGlvblRvQ2xpZW50LmNwcCAqLywKIAkJCQk1MTBBNThGRTFCQjA3QUE1MDBDMTkyODIgLyogSURC
Q29ubmVjdGlvblRvQ2xpZW50LmggKi8sCiAJCQkJNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8q
IElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi8sCiAJCQkJNTEwQTU4RUYxQkFCNzIw
RjAwQzE5MjgyIC8qIElEQlNlcnZlci5jcHAgKi8sCiAJCQkJNTEwQTU4RjAxQkFCNzIwRjAwQzE5
MjgyIC8qIElEQlNlcnZlci5oICovLAorCQkJCTUxODg2NEU0MUJCQjRCN0UwMEU1NDBDOSAvKiBJ
REJTZXJ2ZXJPcGVyYXRpb24uY3BwICovLAorCQkJCTUxODg2NEU1MUJCQjRCN0UwMEU1NDBDOSAv
KiBJREJTZXJ2ZXJPcGVyYXRpb24uaCAqLywKKwkJCQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQg
LyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLywKKwkJCQk1MUJBNEFDOTFCQkM1QjlFMDBE
RjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8sCisJCQkJNTE4ODY0REUxQkJBRjMw
RjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLywKKwkJCQk1MTg4NjRERjFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
c2VydmVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0NjU2LDYgKzI0NjgzLDcg
QEAKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFu
c2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTRBQ0MxQkJD
NUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFB
QzU5OTkxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTgxQUM1OTlBMTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxE
ZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTQ1LDYgKzI1OTczLDcgQEAKIAkJCQlBODRF
QkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFGRjhGNjUxODA3NDVEODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTcxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZl
ck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTIxM0NBOTUxRTAwRDIxOTE1
IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE1RUM5
MjBEOTcyM0ZGMDA2M0Q0OUEgLyogSlNTVkdBbHRHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI0RDkxMjk2MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoSXRlbUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1NTEsNiArMjY1ODAsNyBAQAogCQkJCUJDNUM3NjJC
MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQky
NjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZE
IC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0
QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUI1OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NjAyLDYgKzI2NjMyLDcgQEAKIAkJCQlCNzFGRTZERjEx
MDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVB
N0VCQzBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQ2MTNFQzBDRDY4MUI1MDBGQURBNzUgLyogUHJvZ3Jlc3NFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyog
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJBNjgyNDBCNUJF
REU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNB
REQ3OTE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2ODI4LDYgKzI2ODU5LDcgQEAKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE1
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE3
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZl
cmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUQx
MkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI4MTU4LDYgKzI4MTkwLDcgQEAKIAkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAwQTE1NEYw
OTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
NjNFMTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTUxODFBMUNE
QzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0g
aW4gU291cmNlcyAqLywKQEAgLTI4NjE1LDYgKzI4NjQ4LDcgQEAKIAkJCQk4NTQwNzU2QzBBRDZD
QkY5MDA2MjBDNTcgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NURGMkY5QzBBQTNDQUU1MDBBRDY0QzUgLyogRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODUxODNCNDcwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxQ
YXJhZ3JhcGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4ODY0RTAxQkJBRjU3MTAw
RTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1RUNC
RUY4MEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUxODNCNDkwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxQcmVFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTQyMjZFOTYxMTYzRDczQTAwOEI4Mzk3IC8qIERPTUhUTUxQ
cm9ncmVzc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTMwMDQ3LDYgKzMwMDgxLDcgQEAK
IAkJCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29y
a1N0YXRlTm90aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjc3MjYwMDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8qIE5p
bmVQaWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA4NTQsNiArMzA4ODksNyBAQAog
CQkJCUExREU3MTMyMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNr
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUJBNEFDMzFCQkI1Q0Q4MDBERjNENkQgLyog
SURCRGF0YWJhc2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDMzNEQzMTQ1OUZGQUQw
MDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcx
NUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZG
QUMzMEZGMTg0RkIxNDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggYThkZTc3Ni4uODg5Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaW5jbHVkZSAiSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQkdldFJlc3VsdC5oIgog
I2luY2x1ZGUgIklEQktleURhdGEuaCIKQEAgLTEyNyw2ICsxMjksMTUgQEAgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT46OlR5cGUgQ3Jv
c3NUaHJlYWRDb3AKICAgICByZXR1cm4gbWV0YWRhdGEuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKK0Ny
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSW5mbz46OlR5cGUg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCRGF0YWJhc2VJbmZvPjo6Y29w
eShjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIGluZm8uaXNvbGF0
ZWRDb3B5KCk7Cit9CisKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRh
dGFiYXNlSWRlbnRpZmllcj46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSURCRGF0YWJhc2VJZGVudGlmaWVyPjo6Y29weShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7
Cit9CiAjZW5kaWYKIAogLy8gVGVzdCBDcm9zc1RocmVhZENvcGllciB1c2luZyBDT01QSUxFX0FT
U0VSVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4
IGQ3NTA1OWMuLjE1NmU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaApAQCAtMTkwLDYgKzE5MCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHR5cGVkZWYgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBUeXBlOwogICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKTsKICAgICB9OworCisgICAg
Y2xhc3MgSURCRGF0YWJhc2VJbmZvOworICAgIHRlbXBsYXRlPD4gc3RydWN0IFdFQkNPUkVfRVhQ
T1JUIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSW5mbz4g
eworICAgICAgICB0eXBlZGVmIElEQkRhdGFiYXNlSW5mbyBUeXBlOworICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOworICAgIH07CisKKyAgICBjbGFzcyBJ
REJEYXRhYmFzZUlkZW50aWZpZXI7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCRGF0YWJhc2VJZGVudGlm
aWVyPiB7CisgICAgICAgIHR5cGVkZWYgSURCRGF0YWJhc2VJZGVudGlmaWVyIFR5cGU7CisgICAg
ICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAg
fTsKKwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262207</attachid>
            <date>2015-09-30 17:01:20 -0700</date>
            <delta_ts>2015-09-30 18:04:45 -0700</delta_ts>
            <desc>Patch v3 - EWS retry</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>64223</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMTQ2MDg3Li4zMjJhOGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDkt
MzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBVbmlx
dWVJREJEYXRhYmFzZSBvYmplY3QsIElEQkJhY2tpbmdTdG9yZSBvYmplY3RzLCBhbmQgYSBkYXRh
YmFzZSBvcGVyYXRpb24gdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ5Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sOiBBZGRlZC4KKwog
MjAxNS0wOS0zMCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRVM2XSBBZGQgVHlwZWRBcnJheS5wcm90b3R5cGUgZnVuY3Rpb25hbGl0eS4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Ut
cmVxdWVzdC1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDJmZDYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3Qt
ZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQUxFUlQ6IFtvYmplY3QgSURCT3Bl
bkRCUmVxdWVzdF0KK0FMRVJUOiBlcnJvciBbb2JqZWN0IEV2ZW50XQorQUxFUlQ6IERvbmUKK1Ro
aXMgdGVzdCBjYWxscyBvcGVuIG9uIHdpbmRvdy5pbmRleGVkREIgaW4gdmFyaW91cyB3YXlzLCB2
ZXJpZnlpbmcgdGhhdCBJREJPcGVuREJSZXF1ZXN0IG9iamVjdHMgYXJlIHJldHVybmVkIHdoZW4g
ZXhwZWN0ZWQgYW5kIGV4Y2VwdGlvbnMgYXJlIHRocm93biB3aGVuIGV4cGVjdGVkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1y
ZXF1ZXN0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
b3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4xMmY4ZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50Lmh0bWwKQEAgLTAs
MCArMSwyOSBAQAorVGhpcyB0ZXN0IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWREQiBpbiB2
YXJpb3VzIHdheXMsIHZlcmlmeWluZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0cyBhcmUg
cmV0dXJuZWQgd2hlbiBleHBlY3RlZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdoZW4gZXhw
ZWN0ZWQuCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKwor
ZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgcmVx
dWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiVGVzdERhdGFiYXNlIik7CithbGVydChyZXF1
ZXN0KTsKKworcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpCit7CisJYWxlcnQoInN1Y2Nl
c3MiKTsKKwlkb25lKCk7Cit9CityZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQoreworCWFs
ZXJ0KCJlcnJvciAiICsgZSk7CisJZG9uZSgpOworfQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDExZjJmMDAuLjBmZjBiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC04OTgs
NyArODk4LDExIEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyT3BlcmF0aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuY3BwCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5m
by5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAogICAgIE1vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0SWRlbnRpZmllci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYjJi
MzlhLi5jZmZjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTUtMDktMzAgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBVbmlxdWVJREJE
YXRhYmFzZSBvYmplY3QsIElEQkJhY2tpbmdTdG9yZSBvYmplY3RzLCBhbmQgYSBkYXRhYmFzZSBv
cGVyYXRpb24gdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4K
KworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJl
cXVlc3QtZXZlbnQuaHRtbAorCisgICAgICAgIC0gVW5pcXVlSURCRGF0YWJhc2UgcmVwcmVzZW50
cyBhIHNwZWNpZmljIElEQiBkYXRhYmFzZSBpbnN0YW5jZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxl
IAorICAgICAgICAgIGNvbm5lY3Rpb25zIHRvIGl0LgorICAgICAgICAtIElEQkJhY2tpbmdTdG9y
ZSBpcyBhbiBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiBvZiBhIHVuaXF1ZSBkYXRhYmFzZSdzIGJh
Y2tpbmcgc3RvcmUsIAorICAgICAgICAgIGFuZCBoYXMgYSBjb25jcmV0ZSBpbi1tZW1vcnkgaW1w
bGVtZW50YXRpb24gZm9yIG5vdy4KKyAgICAgICAgLSBUaGUgZGF0YWJhc2UgdGhyZWFkIGV4aXN0
cyBvbiBJREJTZXJ2ZXIgYW5kIGlzIGZvciBvZmZsb2FkaW5nIGFjdHVhbCBkYXRhYmFzZSBJL08g
ZnJvbSAKKyAgICAgICAgICB0aGUgbWFpbiB0aHJlYWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlkZW50aWZpZXI6Omlzb2xhdGVk
Q29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVy
Lmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRv
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRv
U2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgorCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRmFjdG9yeTo6b3BlbkludGVybmFsKToKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmguCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkJhY2tpbmdTdG9yZTo6fklEQkJhY2tpbmdTdG9yZSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50OjpkaWRPcGVuRGF0YWJhc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xp
ZW50RGVsZWdhdGUuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0T3JDcmVh
dGVVbmlxdWVJREJEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJ
REJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6aGFuZGxlVGFza1JlcGxpZXNPbk1haW5UaHJl
YWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6SURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXJPcGVyYXRpb246OklEQlNlcnZlck9wZXJhdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmguCisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlck9wZXJhdGlvbjo6Y29ubmVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlck9wZXJhdGlvbjo6cmVx
dWVzdERhdGEpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwLgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0
b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURC
Q29ubmVjdGlvblRvQ2xpZW50LmguCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6Om9wZW5EYXRhYmFzZUNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aGFu
ZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmguCisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVh
dGUpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5m
by5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VJbmZvOjpJREJEYXRhYmFzZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VJbmZvOjppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJEYXRhYmFzZUluZm8uaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmguCisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUluZm86OklEQkRhdGFiYXNlSW5mbyk6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlSW5mbz46OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlm
aWVyPjo6Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKwog
MjAxNS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGwgb3V0IHIxODgzMzE6ICJOZXR3b3JrUHJvY2VzczogRE5TIHByZWZldGNo
IGhhcHBlbnMgaW4gdGhlIFdlYiBQcm9jZXNzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggMDNj
YTZkZS4uOTRiN2NhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC00NCw2ICs0NCwxNiBAQCBJ
REJEYXRhYmFzZUlkZW50aWZpZXI6OklEQkRhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgY29uc3QgUwogICAgIEFTU0VSVCghZGF0YWJhc2VOYW1lLmlzTnVsbCgp
KTsKIH0KIAorSURCRGF0YWJhc2VJZGVudGlmaWVyIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgaWRlbnRpZmll
cjsKKworICAgIGlkZW50aWZpZXIubV9kYXRhYmFzZU5hbWUgPSBtX2RhdGFiYXNlTmFtZS5pc29s
YXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1fb3BlbmluZ09yaWdpbiA9IG1fb3BlbmluZ09y
aWdpbi5pc29sYXRlZENvcHkoKTsKKyAgICBpZGVudGlmaWVyLm1fbWFpbkZyYW1lT3JpZ2luID0g
bV9tYWluRnJhbWVPcmlnaW4uaXNvbGF0ZWRDb3B5KCk7CisKKyAgICByZXR1cm4gV1RGOjptb3Zl
KGlkZW50aWZpZXIpOworfQogCiAjaWZuZGVmIE5ERUJVRwogU3RyaW5nIElEQkRhdGFiYXNlSWRl
bnRpZmllcjo6ZGVidWdTdHJpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCBlNzFmOTJj
Li5iMzc3NmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fbWFpbkZyYW1lT3JpZ2luLnBvcnQgPSAtMTsKICAgICB9CiAKKyAgICBJREJEYXRh
YmFzZUlkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX29wZW5pbmdP
cmlnaW4ucG9ydCA9PSAtMSAmJiBtX21haW5GcmFtZU9yaWdpbi5wb3J0ID09IC0xOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA5OWU1YzEyLi5hY2Y4YjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtNzIsNiArNzIsMjcgQEAgdm9pZCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiAgICAgcmVxdWVzdC0+cmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6Om9wZW5EYXRhYmFzZShJREJPcGVuREJS
ZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXI6Om9wZW5EYXRhYmFzZSAtICVzIiwgcmVxdWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKS5k
ZWJ1Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgQVNTRVJUKCFtX29wZW5EQlJlcXVl
c3RNYXAuY29udGFpbnMocmVxdWVzdC5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CisgICAgbV9vcGVu
REJSZXF1ZXN0TWFwLnNldChyZXF1ZXN0LnJlcXVlc3RJZGVudGlmaWVyKCksICZyZXF1ZXN0KTsK
KyAgICAKKyAgICBJREJSZXF1ZXN0RGF0YSByZXF1ZXN0RGF0YSgqdGhpcywgcmVxdWVzdCk7Cisg
ICAgbV9kZWxlZ2F0ZS0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKK30KKwordm9pZCBJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6
OmRpZE9wZW5EYXRhYmFzZSIpOworCisgICAgYXV0byByZXF1ZXN0ID0gbV9vcGVuREJSZXF1ZXN0
TWFwLnRha2UocmVzdWx0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQocmVx
dWVzdCk7CisKKyAgICByZXF1ZXN0LT5yZXF1ZXN0Q29tcGxldGVkKHJlc3VsdERhdGEpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCmluZGV4IGUyY2EzZDAuLjAzZmRiM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTUwLDcgKzUwLDEwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZGVsZXRlRGF0YWJhc2UoSURCT3BlbkRCUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkRGVs
ZXRlRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpOwotICAgIAorCisgICAgdm9pZCBvcGVu
RGF0YWJhc2UoSURCT3BlbkRCUmVxdWVzdCYpOworICAgIHZvaWQgZGlkT3BlbkRhdGFiYXNlKGNv
bnN0IElEQlJlc3VsdERhdGEmKTsKKwogcHJpdmF0ZToKICAgICBJREJDb25uZWN0aW9uVG9TZXJ2
ZXIoSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUmKTsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKaW5kZXggN2JmZWI4Yi4uOGUxZWZjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKQEAgLTQwLDcgKzQw
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShJREJSZXF1ZXN0RGF0YSYpID0g
MDsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkRhdGFiYXNlKElEQlJlcXVlc3REYXRhJikg
PSAwOworCiAgICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWYoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJGYWN0b3J5SW1wbC5jcHAKaW5kZXggYWMwY2ZmOS4uMmQxMGZlMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZh
Y3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCRmFjdG9yeUltcGwuY3BwCkBAIC0xMTUsNiArMTE1LDggQEAgUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXgKICAgICB9CiAKICAgICBhdXRvIHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0Ojpj
cmVhdGVPcGVuUmVxdWVzdChtX2Nvbm5lY3Rpb25Ub1NlcnZlci5nZXQoKSwgY29udGV4dCwgZGF0
YWJhc2VJZGVudGlmaWVyLCB2ZXJzaW9uKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+b3Bl
bkRhdGFiYXNlKHJlcXVlc3QuZ2V0KCkpOworCiAgICAgcmV0dXJuIGFkb3B0UmVmKCZyZXF1ZXN0
LmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hNWE0OGMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIElEQkJh
Y2tpbmdTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUg
IklEQkRhdGFiYXNlSW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURC
U2VydmVyIHsKKworY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5JREJCYWNraW5nU3RvcmUoKSB7IH0KKworICAgIHZpcnR1YWwgY29uc3QgSURCRGF0YWJhc2VJ
bmZvJiBnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbygpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCQmFja2luZ1N0b3JlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKaW5kZXggY2ZmNTFmOC4uNWQwMmExMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25U
b0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKQEAgLTUxLDYgKzUxLDExIEBAIHZvaWQgSURCQ29u
bmVjdGlvblRvQ2xpZW50OjpkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiBy
ZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0KTsKIH0KIAor
dm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1
bHREYXRhJiByZXN1bHQpCit7CisgICAgbV9kZWxlZ2F0ZS0+ZGlkT3BlbkRhdGFiYXNlKHJlc3Vs
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKaW5kZXggNTIxYTk2Ny4uNzU1NTA3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNv
bm5lY3Rpb25Ub0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0OwogCiAgICAgdm9pZCBkaWREZWxldGVE
YXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBkaWRPcGVuRGF0YWJhc2Uo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIAogcHJpdmF0ZToKICAgICBJREJDb25uZWN0aW9u
VG9DbGllbnQoSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGll
bnREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKaW5kZXggY2Y1MDAzOS4uYjJiNGI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTQxLDYgKzQx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHRE
YXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVz
dWx0RGF0YSYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZWYoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRlcmVmKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA2ODcxODk3Li42MWY0ODdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMzEsNiArMzEsOSBAQAogI2luY2x1ZGUgIklEQlJlcXVlc3REYXRhLmgiCiAj
aW5jbHVkZSAiSURCUmVzdWx0RGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJNZW1vcnlJREJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CisjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IElEQlNlcnZlciB7CkBAIC00Miw2ICs0NSw4IEBAIFJlZjxJREJTZXJ2ZXI+IElEQlNlcnZlcjo6
Y3JlYXRlKCkKIAogSURCU2VydmVyOjpJREJTZXJ2ZXIoKQogeworICAgIExvY2tlcjxMb2NrPiBs
b2NrZXIobV9kYXRhYmFzZVRocmVhZENyZWF0aW9uTG9jayk7CisgICAgbV90aHJlYWRJRCA9IGNy
ZWF0ZVRocmVhZChJREJTZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVk
RGF0YWJhc2UgU2VydmVyIik7CiB9CiAKIHZvaWQgSURCU2VydmVyOjpyZWdpc3RlckNvbm5lY3Rp
b24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uKQpAQCAtNTgsMjQgKzYzLDExMCBA
QCB2b2lkIElEQlNlcnZlcjo6dW5yZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBjb25uZWN0aW9uKQogICAgIG1fY29ubmVjdGlvbk1hcC5yZW1vdmUoY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpOwogfQogCi12b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmIGRhdGEpCitVbmlxdWVJREJEYXRhYmFzZSYgSURCU2VydmVyOjpnZXRP
ckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRl
bnRpZmllcikKIHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjpkZWxldGVEYXRhYmFz
ZSAtICVzIiwgZGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5kZWJ1Z1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGF1dG8gdW5pcXVlSURCRGF0YWJhc2UgPSBtX3VuaXF1ZUlEQkRhdGFiYXNl
TWFwLmFkZChpZGVudGlmaWVyLCBudWxscHRyKTsKKyAgICBpZiAodW5pcXVlSURCRGF0YWJhc2Uu
aXNOZXdFbnRyeSkKKyAgICAgICAgdW5pcXVlSURCRGF0YWJhc2UuaXRlcmF0b3ItPnZhbHVlID0g
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZSgqdGhpcywgaWRlbnRpZmllcik7CisKKyAgICByZXR1
cm4gKnVuaXF1ZUlEQkRhdGFiYXNlLml0ZXJhdG9yLT52YWx1ZTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPElEQkJhY2tpbmdTdG9yZT4gSURCU2VydmVyOjpjcmVhdGVCYWNraW5nU3RvcmUoY29uc3Qg
SURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworCisgICAgLy8gRklYTUU6IEZvciBub3cgd2Ugb25seSBoYXZlIHRoZSBpbi1t
ZW1vcnkgYmFja2luZyBzdG9yZSwgd2hpY2ggd2UnbGwgY29udGludWUgdG8gdXNlIGZvciBwcml2
YXRlIGJyb3dzaW5nLgorICAgIC8vIE9uY2UgaXQncyB0aW1lIGZvciBwZXJzaXN0ZW50IGJhY2tp
bmcgc3RvcmVzIHRoaXMgaXMgd2hlcmUgd2UnbGwgY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHBhdGgg
b24gZGlzaworICAgIC8vIGFuZCBjcmVhdGUgaXQuCisKKyAgICByZXR1cm4gTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpjcmVhdGUoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSURCU2VydmVyOjpvcGVu
RGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIExPRyhJ
bmRleGVkREIsICJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZSIpOworCisgICAgYXV0byYgdW5pcXVl
SURCRGF0YWJhc2UgPSBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKHJlcXVlc3REYXRhLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRp
ZmllcigpKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgLy8gSWYgdGhlIGNvbm5l
Y3Rpb24gYmFjayB0byB0aGUgY2xpZW50IGlzIGdvbmUsIHRoZXJlJ3Mgbm8gd2F5IHRvIG9wZW4g
dGhlIGRhdGFiYXNlIGFzCisgICAgICAgIC8vIHdlbGwgYXMgbm8gd2F5IHRvIG1lc3NhZ2UgYmFj
ayBmYWlsdXJlLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdW5pcXVlSURCRGF0YWJh
c2Uub3BlbkRhdGFiYXNlQ29ubmVjdGlvbigqY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOworfQor
Cit2b2lkIElEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJTZXJ2ZXI6OmRlbGV0ZURhdGFi
YXNlIC0gJXMiLCByZXF1ZXN0RGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKS5kZWJ1Z1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIAotICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQoZGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkp
OworICAgIGF1dG8gY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQocmVxdWVzdERhdGEu
cmVxdWVzdElkZW50aWZpZXIoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKLSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSByZWNvcmQgb2YgdGhpcyBj
b25uZWN0aW9uIChlLmcuIGl0IGhhcyBkcm9wcGVkIGR1ZSB0byBhIHByb2Nlc3MgY3Jhc2hpbmcp
Ci0gICAgICAgIC8vIHRoZW4gd2UgY2FuJ3QgcmVwb3J0IGJhY2sgc3RhdHVzIG9mIHRoZSBvcGVy
YXRpb24uCi0gICAgICAgIC8vIFRoZXJlZm9yZSB3ZSBzaG91bGRuJ3QgYm90aGVyIHBlcmZvcm1p
bmcgaXQuCisgICAgICAgIC8vIElmIHRoZSBjb25uZWN0aW9uIGJhY2sgdG8gdGhlIGNsaWVudCBp
cyBnb25lLCB0aGVyZSdzIG5vIHdheSB0byBkZWxldGUgdGhlIGRhdGFiYXNlIGFzCisgICAgICAg
IC8vIHdlbGwgYXMgbm8gd2F5IHRvIG1lc3NhZ2UgYmFjayBmYWlsdXJlLgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBEdXJpbmcgYnJpbmd1cCBvZiBtb2Rlcm4g
SURCLCB0aGUgZGF0YWJhc2UgZGVsZXRpb24gaXMgYSBuby1vcCwgYW5kIGlzCiAgICAgLy8gaW1t
ZWRpYXRlbHkgcmVwb3J0ZWQgYmFjayB0byB0aGUgV2ViUHJvY2VzcyBhcyBmYWlsdXJlLgotICAg
IElEQlJlc3VsdERhdGEgcmVzdWx0KGRhdGEucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3Io
SURCRXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KHJl
cXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCksIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6
OlVua25vd24pKTsKICAgICBjb25uZWN0aW9uLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHQpOwog
fQogCit2b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRUYXNrPiYmIHRhc2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7Cit9CisKK3ZvaWQgSURC
U2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
VGFzaz4mJiB0YXNrKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fZGF0
YWJhc2VSZXBseVF1ZXVlLmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworCisKKyAgICBMb2NrZXI8
TG9jaz4gbG9ja2VyKG1fbWFpblRocmVhZFJlcGx5TG9jayk7CisgICAgaWYgKG1fbWFpblRocmVh
ZFJlcGx5U2NoZWR1bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX21haW5UaHJlYWRSZXBs
eVNjaGVkdWxlZCA9IHRydWU7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpc10geworICAgICAg
ICBoYW5kbGVUYXNrUmVwbGllc09uTWFpblRocmVhZCgpOworICAgIH0pOworfQorCit2b2lkIElE
QlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQoreworICAgIEFT
U0VSVCh0aHJlYWREYXRhKTsKKyAgICBJREJTZXJ2ZXIqIHNlcnZlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SURCU2VydmVyKj4odGhyZWFkRGF0YSk7CisgICAgc2VydmVyLT5kYXRhYmFzZVJ1bkxvb3Ao
KTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCgpCit7CisgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgeworICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1f
ZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2spOworICAgIH0KKworICAgIHdoaWxlIChhdXRvIHRh
c2sgPSBtX2RhdGFiYXNlUXVldWUud2FpdEZvck1lc3NhZ2UoKSkKKyAgICAgICAgdGFzay0+cGVy
Zm9ybVRhc2soKTsKK30KKwordm9pZCBJREJTZXJ2ZXI6OmhhbmRsZVRhc2tSZXBsaWVzT25NYWlu
VGhyZWFkKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9tYWluVGhy
ZWFkUmVwbHlMb2NrKTsKKyAgICAgICAgbV9tYWluVGhyZWFkUmVwbHlTY2hlZHVsZWQgPSBmYWxz
ZTsKKyAgICB9CisKKyAgICB3aGlsZSAoYXV0byB0YXNrID0gbV9kYXRhYmFzZVJlcGx5UXVldWUu
dHJ5R2V0TWVzc2FnZSgpKQorICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCmluZGV4
IGYxZWZlMTQuLjNlMWU2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTI4LDE0ICsyOCwyMCBAQAogCiAjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJDcm9zc1RocmVhZFRhc2suaCIKICNp
bmNsdWRlICJJREJDb25uZWN0aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTWVzc2Fn
ZVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIENyb3NzVGhyZWFkVGFzazsKIGNsYXNzIElEQlJlcXVlc3REYXRhOwogCiBuYW1lc3BhY2Ug
SURCU2VydmVyIHsKQEAgLTQ4LDEyICs1NCwzMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lz
dGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKIAogICAgIC8vIE9wZXJhdGlv
bnMgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQuCisgICAgdm9pZCBvcGVuRGF0YWJhc2UoY29uc3Qg
SURCUmVxdWVzdERhdGEmKTsKICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVl
c3REYXRhJik7CiAKKyAgICB2b2lkIHBvc3REYXRhYmFzZVRhc2soc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkVGFzaz4mJik7CisgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrUmVwbHkoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkVGFzaz4mJik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SURC
QmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlm
aWVyJik7CisKIHByaXZhdGU6CiAgICAgSURCU2VydmVyKCk7CiAKKyAgICBVbmlxdWVJREJEYXRh
YmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50
aWZpZXImKTsKKworICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkRW50cnkodm9pZCopOwor
ICAgIHZvaWQgZGF0YWJhc2VSdW5Mb29wKCk7CisgICAgdm9pZCBoYW5kbGVUYXNrUmVwbGllc09u
TWFpblRocmVhZCgpOworCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElEQkNvbm5lY3Rp
b25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbk1hcDsKKyAgICBIYXNoTWFwPElEQkRhdGFiYXNlSWRl
bnRpZmllciwgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPj4gbV91bmlxdWVJREJEYXRhYmFzZU1h
cDsKKworICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRCB7IDAgfTsKKyAgICBMb2NrIG1f
ZGF0YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2s7CisgICAgTG9jayBtX21haW5UaHJlYWRSZXBseUxv
Y2s7CisgICAgYm9vbCBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7IGZhbHNlIH07CisKKyAg
ICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNlUXVldWU7CisgICAgTWVz
c2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5UXVldWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgxNzQ0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXJPcGVyYXRp
b24uY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSURCU2VydmVyT3BlcmF0aW9uLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitSZWY8SURCU2VydmVyT3BlcmF0aW9uPiBJ
REJTZXJ2ZXJPcGVyYXRpb246OmNyZWF0ZShJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rp
b24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJREJTZXJ2ZXJPcGVyYXRpb24oY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpKTsK
K30KKworSURCU2VydmVyT3BlcmF0aW9uOjpJREJTZXJ2ZXJPcGVyYXRpb24oSURCQ29ubmVjdGlv
blRvQ2xpZW50JiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEp
CisgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1fcmVxdWVzdERhdGEocmVx
dWVzdERhdGEpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyT3Bl
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyT3BlcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZlYzA2
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXJPcGVyYXRpb24uaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBJREJTZXJ2ZXJPcGVyYXRpb25faAorI2RlZmluZSBJREJTZXJ2ZXJPcGVyYXRpb25f
aAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJDb25uZWN0
aW9uVG9DbGllbnQuaCIKKyNpbmNsdWRlICJJREJSZXF1ZXN0RGF0YS5oIgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgSURCU2VydmVyT3BlcmF0aW9uIDog
cHVibGljIFJlZkNvdW50ZWQ8SURCU2VydmVyT3BlcmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxJREJTZXJ2ZXJPcGVyYXRpb24+IGNyZWF0ZShJREJDb25uZWN0aW9uVG9DbGllbnQm
LCBjb25zdCBJREJSZXF1ZXN0RGF0YSYpOworCisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBj
b25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CisgICAgY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0RGF0YTsgfQorCitw
cml2YXRlOgorICAgIElEQlNlcnZlck9wZXJhdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBj
b25zdCBJREJSZXF1ZXN0RGF0YSYpOworCisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBtX2Nv
bm5lY3Rpb247CisgICAgSURCUmVxdWVzdERhdGEgbV9yZXF1ZXN0RGF0YTsKK307CisKK30gLy8g
bmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVyT3BlcmF0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYjA3NDIwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0wLDAg
KzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVl
X3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxNZW1vcnlJREJCYWNraW5nU3RvcmU+KGlkZW50aWZpZXIpOworfQor
CitNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRp
ZmllcikKK3sKK30KKworTWVtb3J5SURCQmFja2luZ1N0b3JlOjp+TWVtb3J5SURCQmFja2luZ1N0
b3JlKCkKK3sKK30KKworY29uc3QgSURCRGF0YWJhc2VJbmZvJiBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkKK3sKKyAgICBpZiAoIW1fZGF0YWJhc2VJ
bmZvKQorICAgICAgICBtX2RhdGFiYXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJh
c2VJbmZvPihtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCksIDApOworCisgICAgcmV0dXJuICpt
X2RhdGFiYXNlSW5mbzsKK30KKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hYjMxYWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZV9oCisjZGVmaW5lIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2lu
Y2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSWRlbnRpZmll
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xh
c3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CisgICAg
ZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUlEQkJhY2tpbmdT
dG9yZT4gY3JlYXRlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIAorICAgIHZp
cnR1YWwgfk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdmly
dHVhbCBjb25zdCBJREJEYXRhYmFzZUluZm8mIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkg
b3ZlcnJpZGUgZmluYWw7CisgICAgCitwcml2YXRlOgorICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKKworICAgIElEQkRhdGFiYXNlSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4g
bV9kYXRhYmFzZUluZm87Cit9OworCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2Vu
ZGlmIC8vIE1lbW9yeUlEQkJhY2tpbmdTdG9yZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTI1N2U3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKKyNpbmNsdWRlICJJREJT
ZXJ2ZXIuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisgICAgCitVbmlxdWVJREJEYXRhYmFzZTo6
VW5pcXVlSURCRGF0YWJhc2UoSURCU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKKyAgICA6IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQoreworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
RGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbiwgY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQoreworICAgIGF1dG8gb3BlcmF0aW9uID0g
SURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUoY29ubmVjdGlvbiwgcmVxdWVzdERhdGEpOworICAg
IG1fcGVuZGluZ09wZW5EYXRhYmFzZU9wZXJhdGlvbnMuYXBwZW5kKFdURjo6bW92ZShvcGVyYXRp
b24pKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mbykgeworICAgICAgICBoYW5kbGVPcGVuRGF0
YWJhc2VPcGVyYXRpb25zKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9z
ZXJ2ZXIucG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlx
dWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSwgbV9pZGVudGlmaWVyKSk7Cit9CisKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmhhbmRsZU9wZW5EYXRhYmFzZU9wZXJhdGlvbnMoKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBV
bmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucyIpOworCisgICAg
YXV0byBvcGVyYXRpb24gPSBtX3BlbmRpbmdPcGVuRGF0YWJhc2VPcGVyYXRpb25zLnRha2VGaXJz
dCgpOworCisgICAgLy8gRklYTUU6IFJlcG9ydGluZyBvcGVuIG9wZXJhdGlvbnMgYXMgZmFpbHVy
ZXMgZm9yIG5vdy4KKyAgICAvLyBDcmVhdGluZyBkYXRhYmFzZSBjb25uZWN0aW9ucyBmb3Igc3Vj
Y2VzcyB3aWxsIGJlIHRoZSBuZXh0IHN0ZXAuCisKKyAgICBJREJSZXN1bHREYXRhIHJlc3VsdChv
cGVyYXRpb24tPnJlcXVlc3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwgSURCRXJyb3IoSURC
RXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOworICAgIG9wZXJhdGlvbi0+Y29ubmVjdGlvbigpLmRp
ZE9wZW5EYXRhYmFzZShyZXN1bHQpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
QmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBMT0coSW5kZXhlZERCLCAiKGRiKSBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZSIpOworCisgICAgQVNTRVJUKCFtX2Jh
Y2tpbmdTdG9yZSk7CisgICAgbV9iYWNraW5nU3RvcmUgPSBtX3NlcnZlci5jcmVhdGVCYWNraW5n
U3RvcmUoaWRlbnRpZmllcik7CisgICAgYXV0byBkYXRhYmFzZUluZm8gPSBtX2JhY2tpbmdTdG9y
ZS0+Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oKTsKKworICAgIG1fc2VydmVyLnBvc3REYXRh
YmFzZVRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJbmZvKSk7Cit9CisKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgTE9HKEluZGV4ZWRE
QiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZSIpOworICAg
IAorICAgIG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+
KGluZm8pOworCisgICAgaGFuZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucygpOworfQorCit9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmI2MzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVW5pcXVlSURCRGF0YWJhc2Vf
aAorI2RlZmluZSBVbmlxdWVJREJEYXRhYmFzZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKworI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgorI2luY2x1ZGUg
IklEQlNlcnZlck9wZXJhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJSZXF1ZXN0RGF0YTsKKworbmFtZXNwYWNlIElE
QlNlcnZlciB7CisKK2NsYXNzIElEQkNvbm5lY3Rpb25Ub0NsaWVudDsKK2NsYXNzIElEQlNlcnZl
cjsKKworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VW5pcXVlSURCRGF0YWJhc2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFVuaXF1ZUlE
QkRhdGFiYXNlPiBjcmVhdGUoSURCU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IElEQkRhdGFiYXNlSWRl
bnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFVuaXF1ZUlEQkRhdGFiYXNlKHNlcnZlciwgaWRlbnRpZmllcikpOworICAgIH0KKworICAgIHZv
aWQgb3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmLCBjb25zdCBJ
REJSZXF1ZXN0RGF0YSYpOworCitwcml2YXRlOgorICAgIFVuaXF1ZUlEQkRhdGFiYXNlKElEQlNl
cnZlciYsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOworICAgIAorICAgIHZvaWQgaGFu
ZGxlT3BlbkRhdGFiYXNlT3BlcmF0aW9ucygpOworICAgIAorICAgIC8vIERhdGFiYXNlIHRocmVh
ZCBvcGVyYXRpb25zCisgICAgdm9pZCBvcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNl
SWRlbnRpZmllciYpOworCisgICAgLy8gTWFpbiB0aHJlYWQgY2FsbGJhY2tzCisgICAgdm9pZCBk
aWRPcGVuQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOworCisgICAgSURCU2Vy
dmVyJiBtX3NlcnZlcjsKKyAgICBJREJEYXRhYmFzZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwor
ICAgIAorICAgIERlcXVlPFJlZjxJREJTZXJ2ZXJPcGVyYXRpb24+PiBtX3BlbmRpbmdPcGVuRGF0
YWJhc2VPcGVyYXRpb25zOworICAgIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IG1fYmFja2luZ1N0b3JlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IG1fZGF0YWJhc2VJbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgSURCU2VydmVyCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNl
bmRpZiAvLyBVbmlxdWVJREJEYXRhYmFzZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNzJiNTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmNw
cApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlSW5mby5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURCRGF0YWJhc2VJbmZvOjpJREJEYXRhYmFzZUlu
Zm8oY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCB2ZXJzaW9uKQorICAgIDogbV9uYW1lKG5h
bWUpCisgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKK3sKK30KKworSURCRGF0YWJhc2VJbmZvIElE
QkRhdGFiYXNlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBJREJEYXRhYmFzZUlu
Zm8gaW5mbzsKKworICAgIGluZm8ubV9uYW1lID0gbV9uYW1lLmlzb2xhdGVkQ29weSgpOworICAg
IGluZm8ubV92ZXJzaW9uID0gbV92ZXJzaW9uOworCisgICAgcmV0dXJuIFdURjo6bW92ZShpbmZv
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNjg3ZjU5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJREJEYXRhYmFzZUluZm9faAorI2RlZmluZSBJREJEYXRhYmFz
ZUluZm9faAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJEYXRh
YmFzZUluZm8geworcHVibGljOgorICAgIElEQkRhdGFiYXNlSW5mbyhjb25zdCBTdHJpbmcmIG5h
bWUsIHVpbnQ2NF90IHZlcnNpb24pOworCisgICAgSURCRGF0YWJhc2VJbmZvIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIElEQkRhdGFiYXNlSW5mbygpCisgICAgeworICAg
IH0KKworICAgIFN0cmluZyBtX25hbWU7CisgICAgdWludDY0X3QgbV92ZXJzaW9uIHsgMCB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisjZW5kaWYgLy8gSURCRGF0YWJhc2VJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKaW5kZXggZjk1OWVmYS4uN2IyZjg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKQEAgLTgzLDcgKzgzLDI0IEBAIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWREZWxldGVEYXRhYmFzZShyZXN1bHREYXRhKTsKLSAgICB9KTt9CisgICAgfSk7
Cit9CisKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoSURCUmVxdWVzdERh
dGEmIHJlcXVlc3REYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1
ZXN0RGF0YV0geworICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsK
KyAgICB9KTsKK30KKwordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5k
aWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSk7CisgICAgfSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IGJiNGFkNTkuLjVlMWI5ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTU1LDEwICs1NSwxMiBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJREJDb25uZWN0aW9uVG9TZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoSURCUmVxdWVzdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgb3BlbkRhdGFiYXNlKElEQlJlcXVlc3REYXRhJikgb3ZlcnJpZGUgZmluYWw7CisKICAg
ICAvLyBJREJDb25uZWN0aW9uVG9DbGllbnQKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZp
ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2Uo
Y29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBk
aWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogCiAg
ICAgdmlydHVhbCB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJT
ZXJ2ZXI+OjpyZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVm
Q291bnRlZDxJblByb2Nlc3NJREJTZXJ2ZXI+OjpkZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTc1MGJhZC4uMDVi
NmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTkyMSw3ICsxOTIxLDcgQEAKIAkJNTEwQTU4RTQxQkFBNDBCMTAwQzE5Mjgy
IC8qIEluUHJvY2Vzc0lEQlNlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThFMjFCQUE0MEFFMDBDMTkyODIgLyogSW5Qcm9jZXNzSURC
U2VydmVyLmNwcCAqLzsgfTsKIAkJNTEwQTU4RTUxQkFBNDBCMTAwQzE5MjgyIC8qIEluUHJvY2Vz
c0lEQlNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwQTU4RTMxQkFBNDBBRTAwQzE5MjgyIC8qIEluUHJvY2Vzc0lEQlNlcnZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEY5MUJB
Q0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThGNTFCQUNDNEE1MDBDMTkyODIgLyogSURC
UmVxdWVzdERhdGEuY3BwICovOyB9OwotCQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURC
UmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMEE1OEY2MUJBQ0M0QTUwMEMxOTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oICovOyB9Owor
CQk1MTBBNThGQTFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEY2MUJBQ0M0QTUwMEMx
OTI4MiAvKiBJREJSZXF1ZXN0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxMEE1OEZCMUJBQ0M3RjIwMEMxOTI4MiAvKiBJREJSZXF1ZXN0
SWRlbnRpZmllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTBBNThFNjFCQUE0MUM5MDBDMTkyODIgLyogSURCUmVxdWVzdElkZW50aWZpZXIuY3Bw
ICovOyB9OwogCQk1MTBBNThGQzFCQUNDN0YyMDBDMTkyODIgLyogSURCUmVxdWVzdElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1
OEU3MUJBQTQxQzkwMEMxOTI4MiAvKiBJREJSZXF1ZXN0SWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTMzMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHAgKi87IH07CkBAIC0yMDk5LDYgKzIwOTksMTAgQEAKIAkJ
NTE4NUZDQjkxQkI0Q0JGODAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTU4RkUxQkIwN0FB
NTAwQzE5MjgyIC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxODVGQ0JBMUJCNENCRjgwMDEyODk4RiAv
KiBJREJTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQTU4RUYxQkFCNzIwRjAwQzE5MjgyIC8qIElEQlNlcnZlci5jcHAgKi87IH07CiAJ
CTUxODVGQ0JCMUJCNENCRjgwMDEyODk4RiAvKiBJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEE1OEYwMUJBQjcyMEYwMEMxOTI4MiAv
KiBJREJTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk1MTg4NjRFMDFCQkFGNTcxMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4ODY0REUx
QkJBRjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLzsgfTsKKwkJNTE4ODY0
RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg4NjRERjFCQkFGMzBGMDBFNTQwQzkg
LyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODg2NEU0MUJCQjRCN0UwMEU1NDBDOSAvKiBJREJTZXJ2ZXJPcGVyYXRpb24uY3BwICovOyB9
OworCQk1MTg4NjRFNzFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg4NjRFNTFCQkI0
QjdFMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4OUYwMUQxMEIzN0JEOTAwRjNDNzM5IC8q
IEpTUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNw
cCAqLzsgfTsKIAkJNTE4OUYwMUUxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwMUMx
MEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5oICovOyB9OwogCQk1MTg5RjBERTEw
QjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9w
U3RhdGVFdmVudC5jcHAgKi87IH07CkBAIC0yMTI3LDYgKzIxMzEsMTEgQEAKIAkJNTFCNDVEMjAx
QUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCNDVEMUUxQUI4RDFFMjAwMTE3Q0QyIC8q
IENvbnRlbnRFeHRlbnNpb24uY3BwICovOyB9OwogCQk1MUI0NUQyMTFBQjhEMUUyMDAxMTdDRDIg
LyogQ29udGVudEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFCNDVEMUYxQUI4RDFFMjAwMTE3Q0QyIC8qIENvbnRlbnRFeHRlbnNpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUI1
OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVFNUZFRjE5NTEwMTQ3MDA4NkNBNUUg
LyogUGxhdGZvcm1HYW1lcGFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTFCQTRBQzMxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5m
by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJB
NEFDMTFCQkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCAqLzsgfTsKKwkJNTFC
QTRBQzQxQkJCNUNEODAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzIxQkJCNUNCRjAwREYzRDZE
IC8qIElEQkRhdGFiYXNlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFCQTRBQzgxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAg
Ki87IH07CisJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0
QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJ
NTFCQTRBQ0MxQkJDNUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzcxQkJDNUFENjAwREYz
RDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJl
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3
REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUMwQUE0MTBGMkFBMTVF
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1l
LmNwcCAqLzsgfTsKQEAgLTk0MTQsNiArOTQyMywxMCBAQAogCQk1MTg1RkNCNjFCQjRDNzYxMDAx
Mjg5OEYgLyogRE9NUmVxdWVzdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVJlcXVlc3RTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1
RkNCQzFCQjVDQjc3MDAxMjg5OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAv
KiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0
YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURC
RGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg4NjRERjFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTE4ODY0RTQxQkJCNEI3RTAwRTU0MEM5IC8qIElEQlNlcnZlck9wZXJhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTZXJ2ZXJPcGVyYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTg4NjRFNTFCQkI0QjdFMDBFNTQw
QzkgLyogSURCU2VydmVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElEQlNlcnZlck9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTg5RjAxQjEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODlGMDFDMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0
YXRlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3BTdGF0ZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODlGMEREMTBCNDZCMEUwMEYz
QzczOSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTQ1MSw2ICs5NDY0LDExIEBACiAJCTUxQjQ1NEU5MUI0REFFN0QwMDg1RUFBNiAvKiBQaW5nSGFu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpbmdIYW5kbGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCNDVEMUUxQUI4RDFFMjAwMTE3Q0QyIC8qIENv
bnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQjQ1
RDFGMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFCQTRBQzExQkJCNUNCRjAwREYzRDZEIC8qIElEQkRhdGFiYXNlSW5mby5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJEYXRhYmFzZUluZm8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBNEFDMjFCQkI1Q0JGMDBERjNE
NkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElEQkRhdGFiYXNlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUJBNEFD
NzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxQkE0QUM5MUJCQzVC
OUUwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWVtb3J5SURCQmFja2luZ1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlQXJlYS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENh
Y2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9
IDA7IHBhdGggPSBDYWNoZWRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFu
Z3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwpAQCAtMTY2
MzYsNiArMTY2NTQsOCBAQAogCQk1MTBBNThFMTFCQUE0MDk4MDBDMTkyODIgLyogc2hhcmVkICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MUJBNEFDMTFC
QkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmNwcCAqLywKKwkJCQk1MUJBNEFDMjFC
QkI1Q0JGMDBERjNENkQgLyogSURCRGF0YWJhc2VJbmZvLmggKi8sCiAJCQkJNTE0ODQ1M0MxQkI5
RDA3NjAwNkE3MkVEIC8qIElEQkVycm9yLmNwcCAqLywKIAkJCQk1MTQ4NDUzRDFCQjlEMDc2MDA2
QTcyRUQgLyogSURCRXJyb3IuaCAqLywKIAkJCQk1MTBBNThGNTFCQUNDNEE1MDBDMTkyODIgLyog
SURCUmVxdWVzdERhdGEuY3BwICovLApAQCAtMTY2NTMsMTEgKzE2NjczLDE4IEBACiAJCTUxMEE1
OEVFMUJBQjcxRTAwMEMxOTI4MiAvKiBzZXJ2ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNr
aW5nU3RvcmUuaCAqLywKIAkJCQk1MTZEN0Q2RDFCQjVGMDY1MDBBRjdDNzcgLyogSURCQ29ubmVj
dGlvblRvQ2xpZW50LmNwcCAqLywKIAkJCQk1MTBBNThGRTFCQjA3QUE1MDBDMTkyODIgLyogSURC
Q29ubmVjdGlvblRvQ2xpZW50LmggKi8sCiAJCQkJNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8q
IElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi8sCiAJCQkJNTEwQTU4RUYxQkFCNzIw
RjAwQzE5MjgyIC8qIElEQlNlcnZlci5jcHAgKi8sCiAJCQkJNTEwQTU4RjAxQkFCNzIwRjAwQzE5
MjgyIC8qIElEQlNlcnZlci5oICovLAorCQkJCTUxODg2NEU0MUJCQjRCN0UwMEU1NDBDOSAvKiBJ
REJTZXJ2ZXJPcGVyYXRpb24uY3BwICovLAorCQkJCTUxODg2NEU1MUJCQjRCN0UwMEU1NDBDOSAv
KiBJREJTZXJ2ZXJPcGVyYXRpb24uaCAqLywKKwkJCQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQg
LyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLywKKwkJCQk1MUJBNEFDOTFCQkM1QjlFMDBE
RjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggKi8sCisJCQkJNTE4ODY0REUxQkJBRjMw
RjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLywKKwkJCQk1MTg4NjRERjFCQkFG
MzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
c2VydmVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0NjU2LDYgKzI0NjgzLDcg
QEAKIAkJCQlCQzY0NjQxQzExRDdGNDE2MDA2NDU1QjAgLyogRGF0YXNldERPTVN0cmluZ01hcC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFu
c2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERh
dGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTRBQ0MxQkJD
NUJERDAwREYzRDZEIC8qIElEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFB
QzU5OTkxMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICov
LAogCQkJCTgxQUM1OTlBMTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBMDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxE
ZWNvZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI1OTQ1LDYgKzI1OTczLDcgQEAKIAkJCQlBODRF
QkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyogSlNTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFGRjhGNjUxODA3NDVEODAwMTMyNjc0IC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTcxQkJCNEI4MzAwRTU0MEM5IC8qIElEQlNlcnZl
ck9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyOTIxM0NBOTUxRTAwRDIxOTE1
IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTE1RUM5
MjBEOTcyM0ZGMDA2M0Q0OUEgLyogSlNTVkdBbHRHbHlwaEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI0RDkxMjk2MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NWR0FsdEdseXBoSXRlbUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY1NTEsNiArMjY1ODAsNyBAQAogCQkJCUJDNUM3NjJC
MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQky
NjYwMUVCRjE0QjNCOUFEMDAxMkMwRkUgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQUE0ODcwMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQTRBQzQxQkJCNUNEODAwREYzRDZE
IC8qIElEQkRhdGFiYXNlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyM0Y3N0IxNDg0Q0E0
QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUI1OEZENDE5NUE5NjREMDAyOTkwQjAgLyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1LZXlib2FyZEV2ZW50
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2NjAyLDYgKzI2NjMyLDcgQEAKIAkJCQlCNzFGRTZERjEx
MDkxQ0IzMDBEQUVGNzcgLyogUHJpbnRDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVB
N0VCQzBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDQ2MTNFQzBDRDY4MUI1MDBGQURBNzUgLyogUHJvZ3Jlc3NFdmVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTE4ODY0RTExQkJBRjU3NDAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRh
dGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzE1RTY1MzEzNEJCQkVDMDBEOEU3MTMgLyog
UHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJBNjgyNDBCNUJF
REU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUNB
REQ3OTE4ODBEOTFDMDBEOEI3MUQgLyogUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTI2ODI4LDYgKzI2ODU5LDcgQEAKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXNwb25zZUJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE1
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE3
MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJBY2N1bXVsYXRpb25CdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxQkE0QUNCMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEE5MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZl
cmJDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MEFCMTJCMDI2RjcwMEMxQTM1
OSAvKiBSZXZlcmJDb252b2x2ZXJTdGFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwQUQx
MkIwMjZGNzAwQzFBMzU5IC8qIFJldmVyYklucHV0QnVmZmVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI4MTU4LDYgKzI4MTkwLDcgQEAKIAkJCQk0NTgzMEQ0RDE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0
b3Njcm9sbENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkYwNTAwQTE1NEYw
OTAwMEE0MjM0IC8qIEF1dG9UYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
NjNFMTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1MTg4NjRFNjFCQkI0QjgzMDBFNTQwQzkgLyogSURCU2VydmVyT3BlcmF0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDM2M0UzMTgxQTFDREMwMEMwNzRBNSAvKiBBVkNh
cHR1cmVEZXZpY2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTUxODFBMUNE
QzAwQzA3NEE1IC8qIEFWTWVkaWFDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0g
aW4gU291cmNlcyAqLywKQEAgLTI4NjE1LDYgKzI4NjQ4LDcgQEAKIAkJCQk4NTQwNzU2QzBBRDZD
QkY5MDA2MjBDNTcgLyogRE9NSFRNTE9wdGlvbkVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NURGMkY5QzBBQTNDQUU1MDBBRDY0QzUgLyogRE9NSFRNTE9wdGlvbnNDb2xsZWN0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJODUxODNCNDcwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxQ
YXJhZ3JhcGhFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4ODY0RTAxQkJBRjU3MTAw
RTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1RUNC
RUY4MEFBNzYyNjkwMDU0NEYwQiAvKiBET01IVE1MUGFyYW1FbGVtZW50Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODUxODNCNDkwQUE2OTI2MTAwRjE5RkEzIC8qIERPTUhUTUxQcmVFbGVtZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTQyMjZFOTYxMTYzRDczQTAwOEI4Mzk3IC8qIERPTUhUTUxQ
cm9ncmVzc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTMwMDQ3LDYgKzMwMDgxLDcgQEAK
IAkJCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29y
a1N0YXRlTm90aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTUxQkE0QUNBMUJCQzVCRDkwMERGM0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY5Mzk3MjYxQTRBNUZCRDAwRTgzNDlEIC8qIE5GQS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjc3MjYwMDFBNUIzQUQ5MDAzQzI0REQgLyogTkZBVG9E
RkEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRjQzRTAwRTY3NDExMDAwMUMxMjg3IC8qIE5p
bmVQaWVjZUltYWdlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA4NTQsNiArMzA4ODksNyBAQAog
CQkJCUExREU3MTMyMTg2MTMyMjIwMDczNDE5MiAvKiBUb3VjaENvbnN0cnVjdG9ycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMURFNzEyRDE4NjEyQUMxMDA3MzQxOTIgLyogVG91Y2hFdmVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNr
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUJBNEFDMzFCQkI1Q0Q4MDBERjNENkQgLyog
SURCRGF0YWJhc2VJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDMzNEQzMTQ1OUZGQUQw
MDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFODhFMEMxMTcx
NUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZG
QUMzMEZGMTg0RkIxNDUwMDhDNEYxRSAvKiBUcmFpbGluZ09iamVjdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggYThkZTc3Ni4uODg5Yzg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaW5jbHVkZSAiSURC
RGF0YWJhc2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VNZXRhZGF0YS5oIgogI2luY2x1ZGUgIklEQkdldFJlc3VsdC5oIgog
I2luY2x1ZGUgIklEQktleURhdGEuaCIKQEAgLTEyNyw2ICsxMjksMTUgQEAgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT46OlR5cGUgQ3Jv
c3NUaHJlYWRDb3AKICAgICByZXR1cm4gbWV0YWRhdGEuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKK0Ny
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSW5mbz46OlR5cGUg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCRGF0YWJhc2VJbmZvPjo6Y29w
eShjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIGluZm8uaXNvbGF0
ZWRDb3B5KCk7Cit9CisKK0Nyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRh
dGFiYXNlSWRlbnRpZmllcj46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSURCRGF0YWJhc2VJZGVudGlmaWVyPjo6Y29weShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7
Cit9CiAjZW5kaWYKIAogLy8gVGVzdCBDcm9zc1RocmVhZENvcGllciB1c2luZyBDT01QSUxFX0FT
U0VSVC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4
IGQ3NTA1OWMuLjE1NmU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaApAQCAtMTkwLDYgKzE5MCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHR5cGVkZWYgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBUeXBlOwogICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKTsKICAgICB9OworCisgICAg
Y2xhc3MgSURCRGF0YWJhc2VJbmZvOworICAgIHRlbXBsYXRlPD4gc3RydWN0IFdFQkNPUkVfRVhQ
T1JUIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQkRhdGFiYXNlSW5mbz4g
eworICAgICAgICB0eXBlZGVmIElEQkRhdGFiYXNlSW5mbyBUeXBlOworICAgICAgICBzdGF0aWMg
VHlwZSBjb3B5KGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOworICAgIH07CisKKyAgICBjbGFzcyBJ
REJEYXRhYmFzZUlkZW50aWZpZXI7CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCRGF0YWJhc2VJZGVudGlm
aWVyPiB7CisgICAgICAgIHR5cGVkZWYgSURCRGF0YWJhc2VJZGVudGlmaWVyIFR5cGU7CisgICAg
ICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CisgICAg
fTsKKwogI2VuZGlmCiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>