<?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>208387</bug_id>
          
          <creation_ts>2020-02-28 12:53:46 -0800</creation_ts>
          <short_desc>Adopt HTTP Alternative Services Storage</short_desc>
          <delta_ts>2020-03-03 10:22:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jmehta</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mjs</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624078</commentid>
    <comment_count>0</comment_count>
    <who name="">jmehta</who>
    <bug_when>2020-02-28 12:53:46 -0800</bug_when>
    <thetext>rdar://problem/56994565</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624081</commentid>
    <comment_count>1</comment_count>
      <attachid>392007</attachid>
    <who name="">jmehta</who>
    <bug_when>2020-02-28 12:57:05 -0800</bug_when>
    <thetext>Created attachment 392007
Proposed changes for HTTP Alternative Services</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624122</commentid>
    <comment_count>2</comment_count>
      <attachid>392016</attachid>
    <who name="">jmehta</who>
    <bug_when>2020-02-28 13:58:18 -0800</bug_when>
    <thetext>Created attachment 392016
Proposed changes for HTTP Alternative Services</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624325</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2020-02-29 14:17:15 -0800</bug_when>
    <thetext>Besides I breaking the build, we need to verify that this doesn’t create a potential supercookie like HSTS did, that it’s cleared by clearing website data, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624326</commentid>
    <comment_count>4</comment_count>
      <attachid>392016</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-29 14:19:19 -0800</bug_when>
    <thetext>Comment on attachment 392016
Proposed changes for HTTP Alternative Services

This needs a new HAVE_ALTERNATIVE_SERVICES macro in Platform.h to not break the build.
We will also need SPI on _WKWebsiteDataStoreConfiguration to specify the storage file location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624818</commentid>
    <comment_count>5</comment_count>
      <attachid>392211</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-02 16:23:27 -0800</bug_when>
    <thetext>Created attachment 392211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624843</commentid>
    <comment_count>6</comment_count>
      <attachid>392220</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-02 17:06:07 -0800</bug_when>
    <thetext>Created attachment 392220
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624963</commentid>
    <comment_count>7</comment_count>
      <attachid>392251</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-02 23:31:23 -0800</bug_when>
    <thetext>Created attachment 392251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625087</commentid>
    <comment_count>8</comment_count>
      <attachid>392285</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-03 09:34:55 -0800</bug_when>
    <thetext>Created attachment 392285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625114</commentid>
    <comment_count>9</comment_count>
      <attachid>392285</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-03 10:21:22 -0800</bug_when>
    <thetext>Comment on attachment 392285
Patch

Clearing flags on attachment: 392285

Committed r257785: &lt;https://trac.webkit.org/changeset/257785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625115</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-03 10:21:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625116</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-03 10:22:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/60001847&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392007</attachid>
            <date>2020-02-28 12:57:05 -0800</date>
            <delta_ts>2020-02-28 13:58:18 -0800</delta_ts>
            <desc>Proposed changes for HTTP Alternative Services</desc>
            <filename>56994565.diff</filename>
            <type>text/plain</type>
            <size>16367</size>
            <attacher>jmehta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDY3YWQ4ZTI2MjEwLi4xZmExN2YxZDQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMjggIEppdGVuIE1laHRhICA8am1l
aHRhQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBIVFRQIEFsdGVybmF0aXZlIFNlcnZpY2Vz
IFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODM4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0yNyAgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQWRkIFdlYktpdDo6
UEFMIHRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEku
aAppbmRleCBhOTIwNzYwYjNkNi4uNzcwYjM3YTk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCkBAIC0yNDcsNiArMjQ3LDIzIEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkNvbXBhbmlvblByb3h5UHJlZmVyZW5jZSkg
ewogI2VuZGlmCiBAZW5kCiAKK0BpbnRlcmZhY2UgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVu
dHJ5IDogTlNPYmplY3QgPE5TQ29weWluZz4KK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9t
aWMsIHJldGFpbikgTlNTdHJpbmcgKmhvc3Q7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgbm9uYXRv
bWljLCBhc3NpZ24pIE5TSW50ZWdlciBwb3J0OworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBB
bHRlcm5hdGl2ZVNlcnZpY2VzRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KKysoaW5zdGFu
Y2V0eXBlKWVtcHR5RmlsdGVyOworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZSA6IE5TT2JqZWN0CisrKGluc3RhbmNldHlwZSlzaGFyZWRQZXJzaXN0
ZW50U3RvcmU7CistKE5TQXJyYXk8X05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5Kj4qKUhU
VFBTZXJ2aWNlRW50cmllc1dpdGhGaWx0ZXI6KF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzRmls
dGVyKilmaWx0ZXI7CistKHZvaWQpcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNX
aXRoUmVnaXN0cmFibGVEb21haW46KE5TU3RyaW5nKilkb21haW47CistKHZvaWQpcmVtb3ZlSFRU
UEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOihOU0RhdGUqKWRhdGU7
CitAZW5kCisKKwogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZE9BdXRoOwogCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTQ5
NTBjNzA1ZTYuLmI0MTI3ZGU3MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAy
LTI4ICBKaXRlbiBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRU
UCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQWx0
ZXJuYXRpdmVTZXJ2aWNlcyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vzcyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRh
dGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgr
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkQWx0ZXJuYXRpdmVTZXJ2
aWNlc0hvc3RuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFSZWNvcmQuaDoKKwogMjAyMC0wMi0yNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgbG9nZ2luZyBmb3Igc3lzY3RsIGFjY2VzcyB0
byBwcm9wZXJ0aWVzIHVzZWQgYnkgTlNVUkxTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkMTE2ZjljMzgyLi5iYjY4YWU0
MDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTE0NjksNiArMTQ2OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAg
ICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgICAgIGdldEhv
c3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKG9yaWdpbnMpOworICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6QWx0
ZXJuYXRpdmVTZXJ2aWNlcywgMCB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTE1MzgsNiArMTU0NSwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkgeworICAgICAg
ICBjbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgfQogfQogCiBz
dGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2Fj
aGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNTc2LDYgKzE1ODcsMTMg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hl
SG9zdE5hbWVzKTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpKSB7CisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGhvc3ROYW1lczsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5EYXRh
cykKKyAgICAgICAgICAgIGhvc3ROYW1lcy5hcHBlbmQob3JpZ2luLmhvc3QpOworICAgICAgICBk
ZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGhvc3ROYW1lcyk7CisgICAgfQog
I2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnMpKSB7CkBAIC0xNzUyLDYgKzE3NzAsMTMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGU7CisgICAgICAgIGZvcihhdXRvJiBkb21haW4g
OiBkb21haW5zKQorICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUuYXBwZW5k
KGRvbWFpbi5maXJzdC5zdHJpbmcoKSk7CisgICAgICAgIGRlbGV0ZUFsdGVybmF0aXZlU2Vydmlj
ZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUpOworICAgIH0KICNlbmRp
ZgogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpD
cmVkZW50aWFscykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAzNDJkNmE2YmU5My4uZGE3NzRiYzZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE5NCw2ICsxOTQsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhT
VFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisKKyAgICB2b2lk
IGdldEhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKEhhc2hTZXQ8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYpOworICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zv
ckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgY2xlYXJBbHRlcm5h
dGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwogI2VuZGlmCiAKICAgICB2b2lk
IGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQppbmRleCA2NDE2YmNmZTk3Yi4uNWFlODkxNmQzOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0KQEAgLTE3NCw2ICsxNzQsMzMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJI
U1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWwKICAg
ICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUoc2Vzc2lvbi5wbGF0Zm9ybVNlc3Np
b24oKSwgKF9fYnJpZGdlIENGRGF0ZVJlZilkYXRlKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z2V0SG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQoreworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IFtfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2Ugc2hhcmVkUGVyc2lzdGVudFN0b3JlXTsKKyAgICBOU0FycmF5PF9OU0hUVFBBbHRlcm5hdGl2
ZVNlcnZpY2VFbnRyeSo+KiBlbnRyaWVzID0gW3N0b3JhZ2UgSFRUUFNlcnZpY2VFbnRyaWVzV2l0
aEZpbHRlcjpfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc0ZpbHRlci5lbXB0eUZpbHRlcl07CisK
KyAgICBmb3IgKF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSogZW50cnkgaW4gZW50cmll
cykgeworICAgICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luID0geyBTdHJp
bmcoImh0dHBzIiksIChDRlN0cmluZ1JlZillbnRyeS5ob3N0LCBlbnRyeS5wb3J0IH07CisgICAg
ICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMpCit7CisgICAgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdl
KiBzdG9yYWdlID0gW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBzaGFyZWRQZXJz
aXN0ZW50U3RvcmVdOworICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpIHsKKyAg
ICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVn
aXN0cmFibGVEb21haW46KE5TU3RyaW5nKilob3N0TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2
aWNlcyhXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IFtfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2Ugc2hhcmVkUGVyc2lzdGVudFN0b3JlXTsKKyAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2
YWwgPSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOworICAgIE5T
RGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUlu
dGVydmFsXTsKKyAgICBbc3RvcmFnZSByZW1vdmVIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cmll
c0NyZWF0ZWRBZnRlckRhdGU6ZGF0ZV07Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
RGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAKaW5kZXggMDk1N2I4NmM1ZjkuLjA5Y2Q4OTA3M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0xMjcsNiArMTI3LDgg
QEAgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKFdlYnNp
dGVEYXRhVHlwZSBkYXRhVHlwZSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOwogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOgog
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNl
IFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczoKKyAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFUeXBlLmgKaW5kZXggMjAwNjgwNWNhYmUuLjk3MjNjNzA0Yjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUu
aApAQCAtNTEsNiArNTEsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAgICAgRE9N
Q2FjaGUgPSAxIDw8IDE1LAogICAgIERldmljZUlkSGFzaFNhbHQgPSAxIDw8IDE2LAogICAgIEFk
Q2xpY2tBdHRyaWJ1dGlvbnMgPSAxIDw8IDE3LAorICAgIEFsdGVybmF0aXZlU2VydmljZXMgPSAx
IDw8IDE4LAogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggZTU3OTY3M2VjMjcuLjU5ZDRk
YWFhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNDksNiArNDksNyBAQCBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgPSBAIl9XS1dl
YnNpdGVEYXRhVAogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9X
S1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlj
a0F0dHJpYnV0aW9ucyI7CitOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMi
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTEwMyw2
ICsxMDQsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpkYXRh
VHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJDcmVkZW50aWFscyJdOwogICAgIGlm
IChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRy
aWJ1dGlvbnNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQWQgQ2xpY2sgQXR0cmlidXRp
b25zIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJBbHRl
cm5hdGl2ZSBTZXJ2aWNlcyJdOwogCiAgICAgcmV0dXJuIFthcnJheSBjb21wb25lbnRzSm9pbmVk
QnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IDU2
ZGE4OTM3M2E0Li40MDE5MzUzYmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApA
QCAtNzYsNiArNzYsOCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVAogICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBp
c0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9uc10pCiAg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7CisgICAg
aWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFs
dGVybmF0aXZlU2VydmljZXNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzOwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKQEAgLTEzMyw2
ICsxMzUsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRh
VHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdAogICAgICAgICBbd2tXZWJzaXRlRGF0
YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc107CiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmli
dXRpb25zKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0
ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9uc107CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkKKyAgICAgICAg
W3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRp
dmVTZXJ2aWNlc107CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZFByaXZhdGUuaAppbmRleCA2Njg4NjY1MGM4Yi4uZDhiM2NiZTgwMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIFdLX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMg
V0tfQVBJX0FWCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiBXS19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRp
b25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworV0tfRVhURVJO
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE2KSwgaW9zKDE0LjApKTsKIAogCiAjaWYgIVRBUkdF
VF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDhlZDFkMWIzOWM4Li41MDA4N2YzYjc3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6
OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVj
b3IKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBzdGF0aWMgTlNT
ZXQgKmFsbFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
IHsKLSAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFtfV0tXZWJzaXRlRGF0YVR5cGVIU1RT
Q2FjaGUsIF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cywgX1dLV2Vic2l0ZURhdGFUeXBlU2Vh
cmNoRmllbGRSZWNlbnRTZWFyY2hlcywgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIF9XS1dlYnNpdGVEYXRhVHlw
ZUFkQ2xpY2tBdHRyaWJ1dGlvbnMKKyAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFtfV0tX
ZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUsIF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cywgX1dL
V2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcywgX1dLV2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMs
IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsIF9XS1dlYnNpdGVEYXRhVHlw
ZUFsdGVybmF0aXZlU2VydmljZXMKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogICAgICAgICAsIF9X
S1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCmluZGV4
IDMxM2NhMWIxNGRhLi4wMGVhZmI2YjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcApAQCAtMTA0LDYg
KzEwNCwxMiBAQCB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0bmFtZShj
b25zdCBTdHJpbmcmIGhvc3ROYW1lKQogICAgIEhTVFNDYWNoZUhvc3ROYW1lcy5hZGQoaG9zdE5h
bWUpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRBbHRlcm5hdGl2ZVNlcnZpY2Vz
SG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSkKK3sKKyAgICB0eXBlcy5hZGQoV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKTsKKyAgICBhbHRlcm5hdGl2ZVNlcnZpY2Vz
SG9zdE5hbWVzLmFkZChob3N0TmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJ
bkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogewogICAgIGlmICgh
aG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGRvbWFpbikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAppbmRl
eCBiNDljMjczM2ZkYi4uZThmZGRkOTFmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaApAQCAtNTQsNiArNTQs
NyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogICAgIHZvaWQgYWRkUGx1Z2luRGF0YUhv
c3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2VuZGlmCiAgICAgdm9pZCBhZGRIU1RT
Q2FjaGVIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKKyAgICB2b2lkIGFkZEFsdGVy
bmF0aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKIAogICAgIFN0
cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlczsK
QEAgLTcwLDYgKzcxLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICBIYXNoU2V0
PFN0cmluZz4gcGx1Z2luRGF0YUhvc3ROYW1lczsKICNlbmRpZgogICAgIEhhc2hTZXQ8U3RyaW5n
PiBIU1RTQ2FjaGVIb3N0TmFtZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGFsdGVybmF0aXZlU2Vy
dmljZXNIb3N0TmFtZXM7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392016</attachid>
            <date>2020-02-28 13:58:18 -0800</date>
            <delta_ts>2020-03-02 16:23:24 -0800</delta_ts>
            <desc>Proposed changes for HTTP Alternative Services</desc>
            <filename>56994565.diff</filename>
            <type>text/plain</type>
            <size>16378</size>
            <attacher>jmehta</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDY3YWQ4ZTI2MjEwLi4xZmExN2YxZDQ3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDItMjggIEppdGVuIE1laHRhICA8am1l
aHRhQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBIVFRQIEFsdGVybmF0aXZlIFNlcnZpY2Vz
IFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODM4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0yNyAgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQWRkIFdlYktpdDo6
UEFMIHRhcmdldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEku
aAppbmRleCBhOTIwNzYwYjNkNi4uNzcwYjM3YTk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCkBAIC0yNDcsNiArMjQ3LDIzIEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkNvbXBhbmlvblByb3h5UHJlZmVyZW5jZSkg
ewogI2VuZGlmCiBAZW5kCiAKK0BpbnRlcmZhY2UgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVu
dHJ5IDogTlNPYmplY3QgPE5TQ29weWluZz4KK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9t
aWMsIHJldGFpbikgTlNTdHJpbmcgKmhvc3Q7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgbm9uYXRv
bWljLCBhc3NpZ24pIE5TSW50ZWdlciBwb3J0OworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBB
bHRlcm5hdGl2ZVNlcnZpY2VzRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KKysoaW5zdGFu
Y2V0eXBlKWVtcHR5RmlsdGVyOworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZSA6IE5TT2JqZWN0CisrKGluc3RhbmNldHlwZSlzaGFyZWRQZXJzaXN0
ZW50U3RvcmU7CistKE5TQXJyYXk8X05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5Kj4qKUhU
VFBTZXJ2aWNlRW50cmllc1dpdGhGaWx0ZXI6KF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzRmls
dGVyKilmaWx0ZXI7CistKHZvaWQpcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNX
aXRoUmVnaXN0cmFibGVEb21haW46KE5TU3RyaW5nKilkb21haW47CistKHZvaWQpcmVtb3ZlSFRU
UEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOihOU0RhdGUqKWRhdGU7
CitAZW5kCisKKwogZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgTlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZE9BdXRoOwogCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTQ5
NTBjNzA1ZTYuLmI0MTI3ZGU3MWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAy
LTI4ICBKaXRlbiBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRU
UCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2Vz
Rm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQWx0
ZXJuYXRpdmVTZXJ2aWNlcyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vzcyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRh
dGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlw
ZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgr
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkQWx0ZXJuYXRpdmVTZXJ2
aWNlc0hvc3RuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFSZWNvcmQuaDoKKwogMjAyMC0wMi0yNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgbG9nZ2luZyBmb3Igc3lzY3RsIGFjY2VzcyB0
byBwcm9wZXJ0aWVzIHVzZWQgYnkgTlNVUkxTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkMTE2ZjljMzgyLi5iYjY4YWU0
MDBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTE0NjksNiArMTQ2OSwxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdAogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAg
ICAgICAgSGFzaFNldDxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CisgICAgICAgIGdldEhv
c3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKG9yaWdpbnMpOworICAgICAgICBmb3IgKGF1
dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1f
d2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6QWx0
ZXJuYXRpdmVTZXJ2aWNlcywgMCB9KTsKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTE1MzgsNiArMTU0NSwxMCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJzaQogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24tPmNsZWFy
QWRDbGlja0F0dHJpYnV0aW9uKCk7CiAgICAgfQorCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkgeworICAgICAg
ICBjbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAgfQogfQogCiBz
dGF0aWMgdm9pZCBjbGVhckRpc2tDYWNoZUVudHJpZXMoTmV0d29ya0NhY2hlOjpDYWNoZSogY2Fj
aGUsIGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNTc2LDYgKzE1ODcsMTMg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW8KICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBkZWxl
dGVIU1RTQ2FjaGVGb3JIb3N0TmFtZXMoKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgSFNUU0NhY2hl
SG9zdE5hbWVzKTsKICAgICB9CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhX
ZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpKSB7CisgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGhvc3ROYW1lczsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5EYXRh
cykKKyAgICAgICAgICAgIGhvc3ROYW1lcy5hcHBlbmQob3JpZ2luLmhvc3QpOworICAgICAgICBk
ZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGhvc3ROYW1lcyk7CisgICAgfQog
I2VuZGlmCiAKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5
cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnMpKSB7CkBAIC0xNzUyLDYgKzE3NzAsMTMgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2kKICAgICAgICAgICAgIGRlbGV0ZUhTVFNDYWNoZUZvckhvc3ROYW1l
cygqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBob3N0bmFtZXNXaXRoSFNUU1RvRGVsZXRlKTsKICAg
ICAgICAgfQogICAgIH0KKworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGU7CisgICAgICAgIGZvcihhdXRvJiBkb21haW4g
OiBkb21haW5zKQorICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUuYXBwZW5k
KGRvbWFpbi5maXJzdC5zdHJpbmcoKSk7CisgICAgICAgIGRlbGV0ZUFsdGVybmF0aXZlU2Vydmlj
ZXNGb3JIb3N0TmFtZXMocmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUpOworICAgIH0KICNlbmRp
ZgogCiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpD
cmVkZW50aWFscykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCAzNDJkNmE2YmU5My4uZGE3NzRiYzZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTE5NCw2ICsxOTQsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgZ2V0SG9zdE5hbWVzV2l0aEhTVFNDYWNoZShXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mKTsKICAgICB2b2lkIGRlbGV0ZUhT
VFNDYWNoZUZvckhvc3ROYW1lcyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgY2xlYXJIU1RTQ2FjaGUoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSk7CisKKyAgICB2b2lk
IGdldEhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKEhhc2hTZXQ8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiYpOworICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zv
ckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIHZvaWQgY2xlYXJBbHRlcm5h
dGl2ZVNlcnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpOwogI2VuZGlmCiAKICAgICB2b2lk
IGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbQppbmRleCA2NDE2YmNmZTk3Yi4uNWFlODkxNmQzOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNz
Q29jb2EubW0KQEAgLTE3NCw2ICsxNzQsMzMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJI
U1RTQ2FjaGUoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBXYWwKICAg
ICBfQ0ZOZXR3b3JrUmVzZXRIU1RTSG9zdHNTaW5jZURhdGUoc2Vzc2lvbi5wbGF0Zm9ybVNlc3Np
b24oKSwgKF9fYnJpZGdlIENGRGF0ZVJlZilkYXRlKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
czo6Z2V0SG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoSGFzaFNldDxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKQoreworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IFtfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2Ugc2hhcmVkUGVyc2lzdGVudFN0b3JlXTsKKyAgICBOU0FycmF5PF9OU0hUVFBBbHRlcm5hdGl2
ZVNlcnZpY2VFbnRyeSo+KiBlbnRyaWVzID0gW3N0b3JhZ2UgSFRUUFNlcnZpY2VFbnRyaWVzV2l0
aEZpbHRlcjpfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc0ZpbHRlci5lbXB0eUZpbHRlcl07CisK
KyAgICBmb3IgKF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSogZW50cnkgaW4gZW50cmll
cykgeworICAgICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luID0geyBTdHJp
bmcoImh0dHBzIiksIChDRlN0cmluZ1JlZillbnRyeS5ob3N0LCBlbnRyeS5wb3J0IH07CisgICAg
ICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgfQorfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBob3N0TmFtZXMpCit7CisgICAgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdl
KiBzdG9yYWdlID0gW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBzaGFyZWRQZXJz
aXN0ZW50U3RvcmVdOworICAgIGZvciAoYXV0byYgaG9zdE5hbWUgOiBob3N0TmFtZXMpIHsKKyAg
ICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVn
aXN0cmFibGVEb21haW46KE5TU3RyaW5nKilob3N0TmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
XTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2
aWNlcyhXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IFtfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3Jh
Z2Ugc2hhcmVkUGVyc2lzdGVudFN0b3JlXTsKKyAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50ZXJ2
YWwgPSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOworICAgIE5T
RGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxTaW5jZTE5NzA6dGltZUlu
dGVydmFsXTsKKyAgICBbc3RvcmFnZSByZW1vdmVIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cmll
c0NyZWF0ZWRBZnRlckRhdGU6ZGF0ZV07Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFy
RGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YS5jcHAKaW5kZXggMDk1N2I4NmM1ZjkuLjA5Y2Q4OTA3M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCkBAIC0xMjcsNiArMTI3LDgg
QEAgV2Vic2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0YTo6b3duZXJQcm9jZXNzKFdlYnNp
dGVEYXRhVHlwZSBkYXRhVHlwZSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6OlVJOwogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOgog
ICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyAgICBjYXNl
IFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczoKKyAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFUeXBlLmgKaW5kZXggMjAwNjgwNWNhYmUuLjk3MjNjNzA0Yjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUu
aApAQCAtNTEsNiArNTEsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7CiAgICAgRE9N
Q2FjaGUgPSAxIDw8IDE1LAogICAgIERldmljZUlkSGFzaFNhbHQgPSAxIDw8IDE2LAogICAgIEFk
Q2xpY2tBdHRyaWJ1dGlvbnMgPSAxIDw8IDE3LAorICAgIEFsdGVybmF0aXZlU2VydmljZXMgPSAx
IDw8IDE4LAogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggZTU3OTY3M2VjMjcuLjU5ZDRk
YWFhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtNDksNiArNDksNyBAQCBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMgPSBAIl9XS1dl
YnNpdGVEYXRhVAogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9X
S1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlj
a0F0dHJpYnV0aW9ucyI7CitOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMi
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTEwMyw2
ICsxMDQsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFUeXBlc1RvU3RyaW5nKE5TU2V0ICpkYXRh
VHlwZXMpCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJDcmVkZW50aWFscyJdOwogICAgIGlm
IChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRy
aWJ1dGlvbnNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQWQgQ2xpY2sgQXR0cmlidXRp
b25zIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFU
eXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJBbHRl
cm5hdGl2ZSBTZXJ2aWNlcyJdOwogCiAgICAgcmV0dXJuIFthcnJheSBjb21wb25lbnRzSm9pbmVk
QnlTdHJpbmc6QCIsICJdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCmluZGV4IDU2
ZGE4OTM3M2E0Li40MDE5MzUzYmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaApA
QCAtNzYsNiArNzYsOCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlwZT4g
dG9XZWJzaXRlRGF0YVR5cGUoTlNTdHJpbmcgKndlYnNpdGVEYXRhVAogICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKICAgICBpZiAoW3dlYnNpdGVEYXRhVHlwZSBp
c0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9uc10pCiAg
ICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7CisgICAg
aWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFs
dGVybmF0aXZlU2VydmljZXNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzOwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKQEAgLTEzMyw2
ICsxMzUsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRh
VHlwZXMoT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdAogICAgICAgICBbd2tXZWJzaXRlRGF0
YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFsc107CiAgICAgaWYg
KHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmli
dXRpb25zKSkKICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0
ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9uc107CisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkKKyAgICAgICAg
W3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRp
dmVTZXJ2aWNlc107CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZFByaXZhdGUuaAppbmRleCA2Njg4NjY1MGM4Yi4uZWFiMzgzN2VjNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCkBAIC0zNSw2ICszNSw3IEBAIFdLX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNoZXMg
V0tfQVBJX0FWCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3Jl
ZGVudGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiBXS19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRp
b25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworV0tfRVhURVJO
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAK
ICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggOGVkMWQxYjM5YzguLjUw
MDg3ZjNiNzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgVmVj
dG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJy
YXkgKmRhdGFSZWNvcgogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAg
IHN0YXRpYyBOU1NldCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKICAgICBkaXNwYXRjaF9vbmNlKCZv
bmNlVG9rZW4sIF4gewotICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAW19XS1dlYnNpdGVE
YXRhVHlwZUhTVFNDYWNoZSwgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzLCBfV0tXZWJzaXRl
RGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzLCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywgX1dLV2Vi
c2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucworICAgICAgICBhdXRvICpwcml2YXRlVHlw
ZXMgPSBAW19XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwgX1dLV2Vic2l0ZURhdGFUeXBlTWVk
aWFLZXlzLCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzLCBfV0tX
ZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBfV0tXZWJzaXRlRGF0YVR5cGVD
cmVkZW50aWFscywgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucywgX1dLV2Vi
c2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcwogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAg
ICAgICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29y
ZC5jcHAKaW5kZXggMzEzY2ExYjE0ZGEuLjAwZWFmYjZiMGJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3Bw
CkBAIC0xMDQsNiArMTA0LDEyIEBAIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNo
ZUhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpCiAgICAgSFNUU0NhY2hlSG9zdE5hbWVz
LmFkZChob3N0TmFtZSk7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEFsdGVybmF0
aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQoreworICAgIHR5cGVz
LmFkZChXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpOworICAgIGFsdGVybmF0
aXZlU2VydmljZXNIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKK30KKwogc3RhdGljIGlubGluZSBi
b29sIGhvc3RJc0luRG9tYWluKFN0cmluZ1ZpZXcgaG9zdCwgU3RyaW5nVmlldyBkb21haW4pCiB7
CiAgICAgaWYgKCFob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZG9tYWluKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVj
b3JkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJl
Y29yZC5oCmluZGV4IGI0OWMyNzMzZmRiLi5lOGZkZGQ5MWY4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCkBA
IC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgdm9pZCBhZGRQ
bHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAjZW5kaWYKICAgICB2
b2lkIGFkZEhTVFNDYWNoZUhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOworICAgIHZv
aWQgYWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUp
OwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IHR5cGVzOwpAQCAtNzAsNiArNzEsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCiAgICAgSGFz
aFNldDxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lczsKKyAgICBIYXNoU2V0PFN0cmluZz4gYWx0
ZXJuYXRpdmVTZXJ2aWNlc0hvc3ROYW1lczsKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392211</attachid>
            <date>2020-03-02 16:23:27 -0800</date>
            <delta_ts>2020-03-02 17:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208387-20200302162326.patch</filename>
            <type>text/plain</type>
            <size>32290</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTc3MzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTAyICBKaXRlbiBNZWh0YSAgPGptZWh0
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBT
dG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAgPHBtYXRv
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGluY3JlYXNl
IGdjYyB3YXJuaW5nCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw2
ICs0NDQsMTAgQEAKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTUVUUklDU19BUElTX1Y0IDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwCiAjZGVmaW5lIEhBVkVfQ1NDSEVD
S0ZJWERJU0FCTEUgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NzcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkb3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMjAtMDItMjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFkZCBXZWJLaXQ6OlBBTCB0YXJnZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw5IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKICNpZiBIQVZFKEFMTE9XU19TRU5TSVRJVkVfTE9H
R0lORykKIEBwcm9wZXJ0eSBCT09MIF9hbGxvd3NTZW5zaXRpdmVMb2dnaW5nOwogI2VuZGlmCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKK0Bwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFNlc3Np
b25UYXNrICgpCkBAIC0yNDcsNiArMjUwLDI0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IE5TVVJMU2Vzc2lvbkMKICNlbmRpZgogQGVuZAogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKK0BpbnRlcmZhY2UgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5
IDogTlNPYmplY3QgPE5TQ29weWluZz4KK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9taWMs
IHJldGFpbikgTlNTdHJpbmcgKmhvc3Q7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgbm9uYXRvbWlj
LCBhc3NpZ24pIE5TSW50ZWdlciBwb3J0OworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRl
cm5hdGl2ZVNlcnZpY2VzRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KKysgKGluc3RhbmNl
dHlwZSllbXB0eUZpbHRlcjsKK0BlbmQKKworQGludGVyZmFjZSBfTlNIVFRQQWx0ZXJuYXRpdmVT
ZXJ2aWNlc1N0b3JhZ2UgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRQZXJzaXN0ZW50
U3RvcmVXaXRoVVJMOihudWxsYWJsZSBOU1VSTCopcGF0aDsKKy0gKE5TQXJyYXk8X05TSFRUUEFs
dGVybmF0aXZlU2VydmljZUVudHJ5ICo+ICopSFRUUFNlcnZpY2VFbnRyaWVzV2l0aEZpbHRlcjoo
X05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIqKWZpbHRlcjsKKy0gKHZvaWQpcmVtb3Zl
SFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46KE5TU3Ry
aW5nKilkb21haW47CistICh2b2lkKXJlbW92ZUhUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyaWVz
Q3JlYXRlZEFmdGVyRGF0ZTooTlNEYXRlKilkYXRlOworQGVuZAorI2VuZGlmCisKIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RPQXV0aDsKIAogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU3NzIxKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAor
MjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
b3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0
IHdoaWNoIHZlcmlmaWVzIHRoYXQgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBjb3JyZWN0IGRpcmVj
dG9yeS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoQWx0ZXJu
YXRpdmVTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyk6CisgICAgICAgICogU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6
Om93bmVyUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZC5tbToKKyAgICAgICAgKGRhdGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0
Ojp0b1dlYnNpdGVEYXRhVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5
cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBl
c0luY2x1ZGluZ1ByaXZhdGVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6
YWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaDoKKwogMjAyMC0wMy0wMiAgSmFjb2IgVXBob2Zm
ICA8amFjb2JfdXBob2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjU3Njg3LgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY5LDYg
KzE0NjksMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkgeworICAgICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMo
KSkKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAw
IH0pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTE1MzgsNiArMTU0NywxMyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQCiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBuZXR3
b3JrU2Vzc2lvbi0+Y2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICB9CisKKyNpZiBIQVZF
KENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vydmlj
ZXMobW9kaWZpZWRTaW5jZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFy
RGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE1NzgsNiArMTU5NCwxOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgfQogI2VuZGlmCiAKKyNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gaG9zdHM7CisgICAgICAgICAgICBob3N0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbkRhdGFzLnNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbkRhdGFzKQorICAgICAgICAgICAgICAgIGhvc3Rz
LnVuY2hlY2tlZEFwcGVuZChvcmlnaW4uaG9zdCk7CisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0dHJpYnV0aW9ucykpIHsKICAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0xNzU0LDYg
KzE3ODIsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAg
IH0KICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXMpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlOworICAgICAgICAgICAgcmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgICAgICAgICAgcmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGUudW5jaGVja2VkQXBwZW5kKGRvbWFpbi5maXJzdC5zdHJp
bmcoKSk7CisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0g
c2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBJbmNsdWRl
SHR0cE9ubHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsK
K3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NzUsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3JlZGVudGlhbHMo
KSB7IH07CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFNlY29uZHMgbG9hZFRocm90dGxlTGF0
ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBj
b25zdCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVT
ZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUpIHsgfQogCiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAg
ICBOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjU3NzIxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHZv
aWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IGh0
dHBQcm94eTsKICAgICBlbmNvZGVyIDw8IGh0dHBzUHJveHk7CiAjZW5kaWYKKyNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVT
ZXJ2aWNlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgZW5jb2RlciA8
PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJz
aXN0ZW50U3RvcmFnZVR5cGU7CkBAIC0xNDAsNiArMTQ0LDE4IEBAIE9wdGlvbmFsPE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNl
bmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBPcHRp
b25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBkZWNvZGVyID4+
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBpZiAoIWFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICNp
ZiBVU0UoU09VUCkKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aDsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTI4
OSw2ICszMDUsMTAgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgog
ICAgICAgICAsIFdURk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1By
b3h5KQogI2VuZGlmCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICAgICAgLCBXVEZNb3ZlKCphbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkpCisgICAgICAgICwg
V1RGTW92ZSgqYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorI2Vu
ZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NzcyMSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIAogICAgIFVSTCBodHRwUHJveHk7CiAgICAgVVJM
IGh0dHBzUHJveHk7CiAjZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQorICAgIFN0cmluZyBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3Rvcnk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50
U3RvcmFnZVBhdGg7CiAgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBjb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGUgeyBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOjpU
ZXh0IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNyw2ICsxMDcsMTAgQEAgcHJpdmF0ZToKICAgICBTZXNzaW9uV3JhcHBl
ciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CiAgICAgU2Vzc2lvbldyYXBwZXImIGFwcEJv
dW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKKyAgICBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVT
ZXJ2aWNlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKKwogI2lmIEhB
VkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0
VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwog
ICAgIHZvaWQgYWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwOTYsNiArMTA5NiwxMyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNv
Y29hCiAgICAgaWYgKCFtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0Vt
cHR5KCkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciA9IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBpZiAoIXBhcmFtZXRl
cnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNl
cnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBjb25maWd1cmF0aW9uLl9h
bHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSA9IFtbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2Vz
U3RvcmFnZSBhbGxvY10gaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpwYXJhbWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeSBpc0RpcmVjdG9y
eTpZRVNdXSBhdXRvcmVsZWFzZV07CisgICAgfQorI2VuZGlmCisKICAgICBjb25maWd1cmF0aW9u
LmNvbm5lY3Rpb25Qcm94eURpY3Rpb25hcnkgPSBwcm94eURpY3Rpb25hcnkocGFyYW1ldGVycy5o
dHRwUHJveHksIHBhcmFtZXRlcnMuaHR0cHNQcm94eSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtMTE2NSw5ICsxMTcyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nl
c3Npb25Db2NvYQogI2VuZGlmCiB9CiAKLU5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vz
c2lvbkNvY29hKCkKLXsKLX0KK05ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNv
Y29hKCkgPSBkZWZhdWx0OwogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxpemVF
cGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKCkKIHsKQEAgLTE0NjksNCArMTQ3NCw0NSBAQCB2b2lk
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZVdlYlNvY2tlCiAKICNlbmRpZiAvLyBIQVZFKE5T
VVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKK1ZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2Vz
KCkgY29uc3QKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRoZSBzZXNzaW9uSUQsIGFuZCB3ZSBzaG91bGQgaGF2ZSBv
bmUgcGVyIG5ldHdvcmtzZXNzaW9uCisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luczsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0
b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBOU0FycmF5PF9OU0hU
VFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSAqPiAqZW50cmllcyA9IFtzdG9yYWdlIEhUVFBTZXJ2
aWNlRW50cmllc1dpdGhGaWx0ZXI6X05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIuZW1w
dHlGaWx0ZXJdOworCisgICAgZm9yIChfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkqIGVu
dHJ5IGluIGVudHJpZXMpIHsKKyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9y
aWdpbiA9IHsgImh0dHBzIl9zLCBlbnRyeS5ob3N0LCBlbnRyeS5wb3J0IH07CisgICAgICAgIG9y
aWdpbnMuYXBwZW5kKG9yaWdpbik7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworI2Vsc2UK
KyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdHMpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykKKyAgICAg
ICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0
cmFibGVEb21haW46aG9zdF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShob3N0TmFtZXMpOwor
I2VuZGlmCit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJBbHRlcm5hdGl2ZVNl
cnZpY2VzKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQUxU
RVJOQVRJVkVfU0VSVklDRSkKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2Uq
IHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBOU1RpbWVJbnRl
cnZhbCB0aW1lSW50ZXJ2YWwgPSBtb2RpZmllZFNpbmNlLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kcygpOworICAgIE5TRGF0ZSAqZGF0ZSA9IFtOU0RhdGUgZGF0ZVdpdGhUaW1lSW50ZXJ2YWxT
aW5jZTE5NzA6dGltZUludGVydmFsXTsKKyAgICBbc3RvcmFnZSByZW1vdmVIVFRQQWx0ZXJuYXRp
dmVTZXJ2aWNlRW50cmllc0NyZWF0ZWRBZnRlckRhdGU6ZGF0ZV07CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShtb2RpZmllZFNpbmNlKTsKKyNlbmRpZgogfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YS5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNywxMCBA
QCBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlIFdlYnNpdGVEYXRhOjpvd25lCiAgICAgICAgIHJldHVy
biBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpVSTsKICAgICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6
QWRDbGlja0F0dHJpYnV0aW9uczoKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5
cGU6Ok5ldHdvcms7CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICBjYXNlIFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlczoKKyAgICAgICAgcmV0
dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6Ok5ldHdvcms7CisjZW5kaWYKICAgICB9CiAKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHJldmlzaW9uIDI1Nzcy
MSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFU
eXBlIHsKICAgICBET01DYWNoZSA9IDEgPDwgMTUsCiAgICAgRGV2aWNlSWRIYXNoU2FsdCA9IDEg
PDwgMTYsCiAgICAgQWRDbGlja0F0dHJpYnV0aW9ucyA9IDEgPDwgMTcsCisjaWYgSEFWRShDRk5F
VFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBBbHRlcm5hdGl2ZVNlcnZpY2VzID0gMSA8
PCAxOCwKKyNlbmRpZgogfTsKIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAy
NTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVJlY29yZC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVE
YXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVJlc291
cmNlTG9hZFN0YXRpc3RpY3MiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVD
cmVkZW50aWFscyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMiOwogTlNTdHJpbmcg
KiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJz
aXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zIjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWx0
ZXJuYXRpdmVTZXJ2aWNlcyI7CiAKICNpZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0
IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJ
bkRhdGEiOwpAQCAtMTAzLDYgKzEwNCw4IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9T
dHJpbmcoTlNTZXQKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAg
ICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlj
a0F0dHJpYnV0aW9uc10pCiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJBZCBDbGljayBBdHRy
aWJ1dGlvbnMiXTsKKyAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRl
RGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpA
IkFsdGVybmF0aXZlIFNlcnZpY2VzIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNK
b2luZWRCeVN0cmluZzpAIiwgIl07CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5h
bC5oCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYg
Kzc2LDEwIEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiAKICAgICAg
ICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHM7CiAgICAgaWYgKFt3ZWJzaXRl
RGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1
dGlvbnNdKQogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRp
b25zOworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgaWYgKFt3
ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0
aXZlU2VydmljZXNdKQorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2
ZVNlcnZpY2VzOworI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIApAQCAtMTMz
LDYgKzEzNywxMCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpCiAg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNy
ZWRlbnRpYWxzXTsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnMpKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVz
IGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zXTsKKyNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpCisgICAg
ICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVy
bmF0aXZlU2VydmljZXNdOworI2VuZGlmCiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVz
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFSZWNvcmRQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgJKHJldmlzaW9uIDI1NzcyMSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIFdLX0VYVEVSTiBOU1N0
cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXQKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9X
S1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwg
aW9zKDExLjApKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlw
ZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CitXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0JKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxOSw5ICsyMTksMTYg
QEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4gKilfYWxsV2Vic2l0ZURhdGFUeQogICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIHN0YXRpYyBOU1NldCAqYWxsV2Vic2l0ZURh
dGFUeXBlczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF4gewotICAgICAgICBhdXRv
ICpwcml2YXRlVHlwZXMgPSBAW19XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwgX1dLV2Vic2l0
ZURhdGFUeXBlTWVkaWFLZXlzLCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNl
YXJjaGVzLCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBfV0tXZWJz
aXRlRGF0YVR5cGVDcmVkZW50aWFscywgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0
aW9ucworICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAWworICAgICAgICAgICAgX1dLV2Vi
c2l0ZURhdGFUeXBlSFNUU0NhY2hlLAorICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlTWVk
aWFLZXlzLAorICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRT
ZWFyY2hlcywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRp
c3RpY3MsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywKKyAgICAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsCisgICAgICAgICAg
ICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzCiAjaWYgIVRBUkdFVF9PU19J
UEhPTkUKLSAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhCisgICAgICAgICAg
ICAsIF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKICNlbmRpZgogICAgICAgICBdOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU3
NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAgV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLgogQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9y
YWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIC8vIFRlc3Rpbmcgb25seS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09M
IGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3Rpbmcg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHJldmlzaW9uIDI1NzcyMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQCAtICh2b2lk
KXNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNl
dE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKWFs
dGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3VyYXRpb24tPmFsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rv
cnkoKSBpc0RpcmVjdG9yeTpZRVNdOworfQorCistICh2b2lkKXNldEFsdGVybmF0aXZlU2Vydmlj
ZXNTdG9yYWdlRGlyZWN0b3J5OihOU1VSTCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRp
b24tPmlzUGVyc2lzdGVudCgpKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQ2Fubm90IHNldCBhbHRlcm5hdGl2ZVNlcnZpY2Vz
RGlyZWN0b3J5IG9uIGEgbm9uLXBlcnNpc3RlbnQgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uIl07CisgICAgY2hlY2tVUkxBcmd1bWVudCh1cmwpOworICAgIF9jb25maWd1cmF0aW9u
LT5zZXRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwogLSAoQk9P
TClkZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZAogewogICAgIHJldHVybiBfY29u
ZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVJlY29yZC5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA0LDYgKzEwNCwxNiBAQCB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVI
b3N0CiAgICAgSFNUU0NhY2hlSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CiB9CiAKK3ZvaWQgV2Vi
c2l0ZURhdGFSZWNvcmQ6OmFkZEFsdGVybmF0aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3ROYW1lKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0Up
CisgICAgdHlwZXMuYWRkKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcyk7Cisg
ICAgYWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oaG9zdE5hbWUpOworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBob3N0SXNJbkRvbWFpbihTdHJpbmdWaWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogewog
ICAgIGlmICghaG9zdC5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGRvbWFpbikpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhUmVjb3JkLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYg
KzU0LDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICB2b2lkIGFkZFBsdWdpbkRh
dGFIb3N0TmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKICNlbmRpZgogICAgIHZvaWQgYWRk
SFNUU0NhY2hlSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CisgICAgdm9pZCBhZGRB
bHRlcm5hdGl2ZVNlcnZpY2VzSG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAKICAg
ICBTdHJpbmcgZGlzcGxheU5hbWU7CiAgICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlw
ZXM7CkBAIC03MCw2ICs3MSw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgSGFz
aFNldDxTdHJpbmc+IHBsdWdpbkRhdGFIb3N0TmFtZXM7CiAjZW5kaWYKICAgICBIYXNoU2V0PFN0
cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzOworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbHRlcm5hdGl2
ZVNlcnZpY2VzSG9zdE5hbWVzOwogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNyw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVzb2x2ZURpcmVjdG9yaWUKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3Rv
cnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoKSkpOworICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZp
Y2VzRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi0+c2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFsdGVybmF0
aXZlU2VydmljZXNEaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kZXZp
Y2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLT5zZXREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnko
cmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9j
b25maWd1cmF0aW9uLT5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwogICAg
IGlmICghbV9jb25maWd1cmF0aW9uLT5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwMyw2ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi0+bmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7IH0KKyAgICBjb25zdCBT
dHJpbmcmIHJlc29sdmVkQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+YWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURp
cmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZE1lZGlhS2V5c0RpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkRGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+d2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKTsgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4g
V2Vic2kKICNlbmRpZgogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+
bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvcHktPm1f
YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSA9IHRoaXMtPm1fYWx0ZXJuYXRpdmVTZXJ2aWNl
c0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9y
eSA9IHRoaXMtPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHkt
Pm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9u
RGlyZWN0b3J5ID0gdGhpcy0+bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU3NzIx
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKKyAgICBjb25zdCBTdHJp
bmcmIGFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2FsdGVy
bmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldEFsdGVybmF0aXZlU2Vydmlj
ZXNEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQorCiAgICAgY29uc3QgU3RyaW5nJiBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2phdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCkBAIC0xNzEsNiAr
MTc0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVk
IHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU3Ry
aW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9hbHRlcm5hdGl2
ZVNlcnZpY2VzRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX2RldmljZUlkSGFzaFNhbHRzU3RvcmFn
ZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OwogICAgIFN0cmluZyBtX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMjU3NzIxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTEgKzE0NCwxOCBAQCBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgaWYgKCFuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJ
VkVfU0VSVklDRSkKKyAgICBTdHJpbmcgYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9y
eSA9IHJlc29sdmVkQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKKyAgICBpZiAoIWFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeSwg
YWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisjZW5k
aWYKKwogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IGlzU2FmYXJpOwogICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9
IFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJu
YWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CiAgICAgCiAgICAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycyA9IHsKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICAgICAgbV9zZXNzaW9uSUQs
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24oKS5ib3VuZEludGVyZmFjZUlkZW50aWZpZXIoKSwKICAg
ICAgICAgY29uZmlndXJhdGlvbigpLmFsbG93c0NlbGx1bGFyQWNjZXNzKCkgPyBBbGxvd3NDZWxs
dWxhckFjY2Vzczo6WWVzIDogQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vLApAQCAtMTU5LDYgKzE2
NiwxMCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgICAg
IFNlY29uZHMgeyBbZGVmYXVsdHMgaW50ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90
dGxlTGF0ZW5jeU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5XSAvIDEwMDAuIH0sCiAgICAgICAgIFdU
Rk1vdmUoaHR0cFByb3h5KSwKICAgICAgICAgV1RGTW92ZShodHRwc1Byb3h5KSwKKyNpZiBIQVZF
KENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgICAgICBXVEZNb3ZlKGFsdGVybmF0
aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnkpLAorICAgICAgICBXVEZNb3ZlKGFsdGVybmF0aXZl
U2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAorI2VuZGlmCiAgICAgICAg
IFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSksCiAgICAgICAgIFdURk1v
dmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSksCiAgICAgICAgIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392220</attachid>
            <date>2020-03-02 17:06:07 -0800</date>
            <delta_ts>2020-03-02 23:31:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>32286</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTc3MzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTAyICBKaXRlbiBNZWh0YSAgPGptZWh0
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBT
dG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAgPHBtYXRv
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGluY3JlYXNl
IGdjYyB3YXJuaW5nCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw2
ICs0NDQsMTAgQEAKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTUVUUklDU19BUElTX1Y0IDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwCiAjZGVmaW5lIEhBVkVfQ1NDSEVD
S0ZJWERJU0FCTEUgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NzcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkb3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMjAtMDItMjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFkZCBXZWJLaXQ6OlBBTCB0YXJnZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw5IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKICNpZiBIQVZFKEFMTE9XU19TRU5TSVRJVkVfTE9H
R0lORykKIEBwcm9wZXJ0eSBCT09MIF9hbGxvd3NTZW5zaXRpdmVMb2dnaW5nOwogI2VuZGlmCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKK0Bwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFNlc3Np
b25UYXNrICgpCkBAIC0yNDcsNiArMjUwLDI0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IE5TVVJMU2Vzc2lvbkMKICNlbmRpZgogQGVuZAogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKK0BpbnRlcmZhY2UgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5
IDogTlNPYmplY3QgPE5TQ29weWluZz4KK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9taWMs
IHJldGFpbikgTlNTdHJpbmcgKmhvc3Q7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgbm9uYXRvbWlj
LCBhc3NpZ24pIE5TSW50ZWdlciBwb3J0OworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRl
cm5hdGl2ZVNlcnZpY2VzRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KKysgKGluc3RhbmNl
dHlwZSllbXB0eUZpbHRlcjsKK0BlbmQKKworQGludGVyZmFjZSBfTlNIVFRQQWx0ZXJuYXRpdmVT
ZXJ2aWNlc1N0b3JhZ2UgOiBOU09iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRQZXJzaXN0ZW50
U3RvcmVXaXRoVVJMOihudWxsYWJsZSBOU1VSTCopcGF0aDsKKy0gKE5TQXJyYXk8X05TSFRUUEFs
dGVybmF0aXZlU2VydmljZUVudHJ5ICo+ICopSFRUUFNlcnZpY2VFbnRyaWVzV2l0aEZpbHRlcjoo
X05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIqKWZpbHRlcjsKKy0gKHZvaWQpcmVtb3Zl
SFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46KE5TU3Ry
aW5nKilkb21haW47CistICh2b2lkKXJlbW92ZUhUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyaWVz
Q3JlYXRlZEFmdGVyRGF0ZTooTlNEYXRlKilkYXRlOworQGVuZAorI2VuZGlmCisKIGV4dGVybiBO
U1N0cmluZyAqIGNvbnN0IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RPQXV0aDsKIAogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjU3NzIxKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAor
MjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29tPgorCisgICAgICAgIEFk
b3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0
IHdoaWNoIHZlcmlmaWVzIHRoYXQgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBjb3JyZWN0IGRpcmVj
dG9yeS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoQWx0ZXJu
YXRpdmVTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVB
bHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyk6CisgICAgICAgICogU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6
Om93bmVyUHJvY2Vzcyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZC5tbToKKyAgICAgICAgKGRhdGFUeXBlc1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0
Ojp0b1dlYnNpdGVEYXRhVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5
cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW06CisgICAgICAgICgrW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBl
c0luY2x1ZGluZ1ByaXZhdGVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFSZWNvcmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6
YWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaDoKKwogMjAyMC0wMy0wMiAgSmFjb2IgVXBob2Zm
ICA8amFjb2JfdXBob2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMjU3Njg3LgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY5LDYg
KzE0NjksMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KKworI2lmIEhBVkUoQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkgeworICAgICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+aG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMo
KSkKKyAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVz
LmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAw
IH0pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
dWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTE1MzgsNiArMTU0NywxMyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShQCiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vz
c2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBuZXR3
b3JrU2Vzc2lvbi0+Y2xlYXJBZENsaWNrQXR0cmlidXRpb24oKTsKICAgICB9CisKKyNpZiBIQVZF
KENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2Vydmlj
ZXMobW9kaWZpZWRTaW5jZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFy
RGlza0NhY2hlRW50cmllcyhOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9y
PFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE1NzgsNiArMTU5NCwxOCBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgfQogI2VuZGlmCiAKKyNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgeworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gaG9zdHM7CisgICAgICAgICAgICBob3N0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG9yaWdpbkRhdGFzLnNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbkRhdGFzKQorICAgICAgICAgICAgICAgIGhvc3Rz
LnVuY2hlY2tlZEFwcGVuZChvcmlnaW4uaG9zdCk7CisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lv
bi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CisgICAgICAg
IH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0dHJpYnV0aW9ucykpIHsKICAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAg
ICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0xNzU0LDYg
KzE3ODIsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAg
IH0KICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0
aXZlU2VydmljZXMpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMt
Pm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlOworICAgICAgICAgICAgcmVnaXN0cmFibGVEb21h
aW5zVG9EZWxldGUucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgICAgICAgICAgcmVn
aXN0cmFibGVEb21haW5zVG9EZWxldGUudW5jaGVja2VkQXBwZW5kKGRvbWFpbi5maXJzdC5zdHJp
bmcoKSk7CisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhyZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZSk7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNp
dGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMpKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0g
c2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3JhZ2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBJbmNsdWRl
SHR0cE9ubHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsK
K3N0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NzUsNiArNzYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ3JlZGVudGlhbHMo
KSB7IH07CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFNlY29uZHMgbG9hZFRocm90dGxlTGF0
ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gaG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBj
b25zdCB7IHJldHVybiB7IH07IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVT
ZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUpIHsgfQogCiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAg
ICBOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9j
ZXNzOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjU3NzIxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHZv
aWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IGh0
dHBQcm94eTsKICAgICBlbmNvZGVyIDw8IGh0dHBzUHJveHk7CiAjZW5kaWYKKyNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVT
ZXJ2aWNlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgZW5jb2RlciA8
PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJz
aXN0ZW50U3RvcmFnZVR5cGU7CkBAIC0xNDAsNiArMTQ0LDE4IEBAIE9wdGlvbmFsPE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNl
bmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBPcHRp
b25hbDxTdHJpbmc+IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBkZWNvZGVyID4+
IGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeTsKKyAgICBpZiAoIWFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICNp
ZiBVU0UoU09VUCkKICAgICBPcHRpb25hbDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
UGF0aDsKICAgICBkZWNvZGVyID4+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTI4
OSw2ICszMDUsMTAgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgog
ICAgICAgICAsIFdURk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1By
b3h5KQogI2VuZGlmCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICAgICAgLCBXVEZNb3ZlKCphbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkpCisgICAgICAgICwg
V1RGTW92ZSgqYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorI2Vu
ZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0
b3JhZ2VQYXRoKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlw
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NzcyMSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIAogICAgIFVSTCBodHRwUHJveHk7CiAgICAgVVJM
IGh0dHBzUHJveHk7CiAjZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQorICAgIFN0cmluZyBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3Rvcnk7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZTsKKyNlbmRpZgogI2lmIFVTRShTT1VQKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50
U3RvcmFnZVBhdGg7CiAgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBjb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGUgeyBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOjpU
ZXh0IH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNyw2ICsxMDcsMTAgQEAgcHJpdmF0ZToKICAgICBTZXNzaW9uV3JhcHBl
ciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CiAgICAgU2Vzc2lvbldyYXBwZXImIGFwcEJv
dW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKKyAgICBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVT
ZXJ2aWNlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xlYXJBbHRlcm5hdGl2ZVNlcnZpY2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKKwogI2lmIEhB
VkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0
VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwog
ICAgIHZvaWQgYWRkV2ViU29ja2V0VGFzayhXZWJTb2NrZXRUYXNrJikgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwOTYsNiArMTA5NiwxMyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNv
Y29hCiAgICAgaWYgKCFtX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0Vt
cHR5KCkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciA9IG1fc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBpZiAoIXBhcmFtZXRl
cnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNl
cnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgICAgICBjb25maWd1cmF0aW9uLl9h
bHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSA9IFtbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2Vz
U3RvcmFnZSBhbGxvY10gaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpwYXJhbWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeSBpc0RpcmVjdG9y
eTpZRVNdXSBhdXRvcmVsZWFzZV07CisgICAgfQorI2VuZGlmCisKICAgICBjb25maWd1cmF0aW9u
LmNvbm5lY3Rpb25Qcm94eURpY3Rpb25hcnkgPSBwcm94eURpY3Rpb25hcnkocGFyYW1ldGVycy5o
dHRwUHJveHksIHBhcmFtZXRlcnMuaHR0cHNQcm94eSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtMTE2NSw5ICsxMTcyLDcgQEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nl
c3Npb25Db2NvYQogI2VuZGlmCiB9CiAKLU5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vz
c2lvbkNvY29hKCkKLXsKLX0KK05ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNv
Y29hKCkgPSBkZWZhdWx0OwogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxpemVF
cGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKCkKIHsKQEAgLTE0NjksNCArMTQ3NCw0NSBAQCB2b2lk
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJlbW92ZVdlYlNvY2tlCiAKICNlbmRpZiAvLyBIQVZFKE5T
VVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAKK1ZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2Vz
KCkgY29uc3QKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAg
IC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRoZSBzZXNzaW9uSUQsIGFuZCB3ZSBzaG91bGQgaGF2ZSBv
bmUgcGVyIG5ldHdvcmtzZXNzaW9uCisgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luczsKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0
b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25m
aWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBOU0FycmF5PF9OU0hU
VFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSAqPiAqZW50cmllcyA9IFtzdG9yYWdlIEhUVFBTZXJ2
aWNlRW50cmllc1dpdGhGaWx0ZXI6X05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIuZW1w
dHlGaWx0ZXJdOworCisgICAgZm9yIChfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkqIGVu
dHJ5IGluIGVudHJpZXMpIHsKKyAgICAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9y
aWdpbiA9IHsgImh0dHBzIl9zLCBlbnRyeS5ob3N0LCBlbnRyeS5wb3J0IH07CisgICAgICAgIG9y
aWdpbnMuYXBwZW5kKG9yaWdpbik7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworI2Vsc2UK
KyAgICByZXR1cm4geyB9OworI2VuZGlmCit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdHMpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykKKyAgICAg
ICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0
cmFibGVEb21haW46aG9zdF07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShob3N0cyk7CisjZW5k
aWYKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckFsdGVybmF0aXZlU2Vydmlj
ZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSkKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5B
VElWRV9TRVJWSUNFKQorICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3Rv
cmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZp
Z3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlOworICAgIE5TVGltZUludGVydmFs
IHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVkU2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRz
KCk7CisgICAgTlNEYXRlICpkYXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNl
MTk3MDp0aW1lSW50ZXJ2YWxdOworICAgIFtzdG9yYWdlIHJlbW92ZUhUVFBBbHRlcm5hdGl2ZVNl
cnZpY2VFbnRyaWVzQ3JlYXRlZEFmdGVyRGF0ZTpkYXRlXTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKG1vZGlmaWVkU2luY2UpOworI2VuZGlmCiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
LmNwcAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDEwIEBAIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vic2l0ZURhdGE6Om93bmUKICAgICAgICAgcmV0dXJuIFdl
YnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJOwogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBZENs
aWNrQXR0cmlidXRpb25zOgogICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6
TmV0d29yazsKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGNh
c2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOgorICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNlbmRpZgogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDkgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUg
ewogICAgIERPTUNhY2hlID0gMSA8PCAxNSwKICAgICBEZXZpY2VJZEhhc2hTYWx0ID0gMSA8PCAx
NiwKICAgICBBZENsaWNrQXR0cmlidXRpb25zID0gMSA8PCAxNywKKyNpZiBIQVZFKENGTkVUV09S
S19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIEFsdGVybmF0aXZlU2VydmljZXMgPSAxIDw8IDE4
LAorI2VuZGlmCiB9OwogCiB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0JKHJldmlzaW9uIDI1Nzcy
MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIE5TU3RyaW5nICogY29uc3Qg
X1dLV2Vic2l0ZURhdGFUeXBlU2VhcmMKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFU
eXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyI7CiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRl
bnRpYWxzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyI7CiBOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSBAIl9XS1dlYnNpdGVE
YXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMiOworTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRl
RGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5h
dGl2ZVNlcnZpY2VzIjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIE5TU3RyaW5nICogY29uc3QgX1dL
V2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YSA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0
YSI7CkBAIC0xMDMsNiArMTA0LDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNUb1N0cmlu
ZyhOU1NldAogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQ3JlZGVudGlhbHMiXTsKICAgICBp
ZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0
cmlidXRpb25zXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkFkIENsaWNrIEF0dHJpYnV0
aW9ucyJdOworICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRh
VHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQWx0
ZXJuYXRpdmUgU2VydmljZXMiXTsKIAogICAgIHJldHVybiBbYXJyYXkgY29tcG9uZW50c0pvaW5l
ZEJ5U3RyaW5nOkAiLCAiXTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgJ
KHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYs
MTAgQEAgc3RhdGljIGlubGluZSBPcHRpb25hbDxXZWJzaXRlRGF0YVR5cGU+IAogICAgICAgICBy
ZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFsczsKICAgICBpZiAoW3dlYnNpdGVEYXRh
VHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9u
c10pCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlvbnM7
CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBpZiAoW3dlYnNp
dGVEYXRhVHlwZSBpc0VxdWFsVG9TdHJpbmc6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVT
ZXJ2aWNlc10pCisgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vy
dmljZXM7CisjZW5kaWYKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCkBAIC0xMzMsNiAr
MTM3LDEwIEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TU2V0PiB0b1dLV2Vic2kKICAgICAg
ICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVu
dGlhbHNdOwogICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6QWRDbGlja0F0dHJpYnV0aW9ucykpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRk
T2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnNdOworI2lmIEhBVkUo
Q0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKSkKKyAgICAgICAg
W3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRp
dmVTZXJ2aWNlc107CisjZW5kaWYKIAogICAgIHJldHVybiB3a1dlYnNpdGVEYXRhVHlwZXM7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaAkocmV2aXNpb24gMjU3NzIxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgV0tfRVhURVJOIE5TU3RyaW5n
ICogY29uc3QgX1dLV2Vic2l0ZURhdAogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vi
c2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEyKSwgaW9zKDEwLjApKTsKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNp
dGVEYXRhVHlwZUNyZWRlbnRpYWxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3Mo
MTEuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRD
bGlja0F0dHJpYnV0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjAp
KTsKK1dLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0
aXZlU2VydmljZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQko
cmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDkgKzIxOSwxNiBAQCAr
IChOU1NldDxOU1N0cmluZyAqPiAqKV9hbGxXZWJzaXRlRGF0YVR5CiAgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgc3RhdGljIE5TU2V0ICphbGxXZWJzaXRlRGF0YVR5
cGVzOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXiB7Ci0gICAgICAgIGF1dG8gKnBy
aXZhdGVUeXBlcyA9IEBbX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlLCBfV0tXZWJzaXRlRGF0
YVR5cGVNZWRpYUtleXMsIF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZpZWxkUmVjZW50U2VhcmNo
ZXMsIF9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MsIF9XS1dlYnNpdGVE
YXRhVHlwZUNyZWRlbnRpYWxzLCBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25z
CisgICAgICAgIGF1dG8gKnByaXZhdGVUeXBlcyA9IEBbCisgICAgICAgICAgICBfV0tXZWJzaXRl
RGF0YVR5cGVIU1RTQ2FjaGUsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVNZWRpYUtl
eXMsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJj
aGVzLAorICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzLAorICAgICAgICAg
ICAgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucywKKyAgICAgICAgICAgIF9X
S1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMKICNpZiAhVEFSR0VUX09TX0lQSE9O
RQotICAgICAgICAsIF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEKKyAgICAgICAgICAgICwg
X1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQogI2VuZGlmCiAgICAgICAgIF07CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTc3MjEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsOCBAQCBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGFsbG93c1NlcnZlclByZWNvbm5lY3QgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorQHByb3BlcnR5IChub25h
dG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1VSTCAqYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2VE
aXJlY3RvcnkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogLy8gVGVzdGluZyBvbmx5LgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjU3NzIxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNiArMjkwLDE5IEBAIC0gKHZvaWQpc2V0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTooTlMKICAgICBfY29uZmlndXJhdGlvbi0+c2V0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSh1cmwucGF0aCk7CiB9CiAKKy0gKE5TVVJMICopYWx0ZXJu
YXRpdmVTZXJ2aWNlc1N0b3JhZ2VEaXJlY3RvcnkKK3sKKyAgICByZXR1cm4gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpfY29uZmlndXJhdGlvbi0+YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgp
IGlzRGlyZWN0b3J5OllFU107Cit9CisKKy0gKHZvaWQpc2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc1N0
b3JhZ2VEaXJlY3Rvcnk6KE5TVVJMICopdXJsCit7CisgICAgaWYgKCFfY29uZmlndXJhdGlvbi0+
aXNQZXJzaXN0ZW50KCkpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJDYW5ub3Qgc2V0IGFsdGVybmF0aXZlU2VydmljZXNEaXJl
Y3Rvcnkgb24gYSBub24tcGVyc2lzdGVudCBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi4iXTsKKyAgICBjaGVja1VSTEFyZ3VtZW50KHVybCk7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNl
dEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkodXJsLnBhdGgpOworfQorCiAtIChCT09MKWRl
dmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkCiB7CiAgICAgcmV0dXJuIF9jb25maWd1
cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhUmVjb3JkLmNwcAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsNiArMTA0LDE2IEBAIHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEhTVFNDYWNoZUhvc3QK
ICAgICBIU1RTQ2FjaGVIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsKIH0KIAordm9pZCBXZWJzaXRl
RGF0YVJlY29yZDo6YWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0IFN0cmluZyYg
aG9zdE5hbWUpCit7CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAg
ICB0eXBlcy5hZGQoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzKTsKKyAgICBh
bHRlcm5hdGl2ZVNlcnZpY2VzSG9zdE5hbWVzLmFkZChob3N0TmFtZSk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShob3N0TmFtZSk7CisjZW5kaWYKK30KKwogc3RhdGljIGlubGluZSBib29sIGhv
c3RJc0luRG9tYWluKFN0cmluZ1ZpZXcgaG9zdCwgU3RyaW5nVmlldyBkb21haW4pCiB7CiAgICAg
aWYgKCFob3N0LmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoZG9tYWluKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQgewogICAgIHZvaWQgYWRkUGx1Z2luRGF0YUhv
c3ROYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOwogI2VuZGlmCiAgICAgdm9pZCBhZGRIU1RT
Q2FjaGVIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKKyAgICB2b2lkIGFkZEFsdGVy
bmF0aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKTsKIAogICAgIFN0
cmluZyBkaXNwbGF5TmFtZTsKICAgICBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB0eXBlczsK
QEAgLTcwLDYgKzcxLDcgQEAgc3RydWN0IFdlYnNpdGVEYXRhUmVjb3JkIHsKICAgICBIYXNoU2V0
PFN0cmluZz4gcGx1Z2luRGF0YUhvc3ROYW1lczsKICNlbmRpZgogICAgIEhhc2hTZXQ8U3RyaW5n
PiBIU1RTQ2FjaGVIb3N0TmFtZXM7CisgICAgSGFzaFNldDxTdHJpbmc+IGFsdGVybmF0aXZlU2Vy
dmljZXNIb3N0TmFtZXM7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mKSBjb25zdDsKICAgICBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNv
bHZlRGlyZWN0b3JpZQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
KSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkuaXNFbXB0eSgpKQogICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0SW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZv
clNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpKSk7CisgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmFsdGVybmF0aXZlU2VydmljZXNE
aXJlY3RvcnkoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5z
ZXRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVE
aXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+YWx0ZXJuYXRpdmVT
ZXJ2aWNlc0RpcmVjdG9yeSgpKSk7CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRldmljZUlk
SGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAgICAgbV9yZXNvbHZl
ZENvbmZpZ3VyYXRpb24tPnNldERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeShyZXNv
bHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZp
Z3VyYXRpb24tPmRldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgpKSk7CiAgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAz
LDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0
b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0
b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJz
aQogI2VuZGlmCiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgY29weS0+bV9hbHRl
cm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5ID0gdGhpcy0+bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGly
ZWN0b3J5OwogICAgIGNvcHktPm1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0g
dGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5OwogICAgIGNvcHktPm1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTc3MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogICAgIAorICAgIGNvbnN0IFN0cmluZyYg
YWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0ZXJuYXRp
dmVTZXJ2aWNlc0RpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0
b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisKICAgICBjb25zdCBTdHJpbmcmIGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q29u
ZmlndXJhdGlvbkRpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5KSB7IG1famF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9yeSk7IH0KICAgICAKQEAgLTE3MSw2ICsxNzQs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIFN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcg
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX2FsdGVybmF0aXZlU2Vy
dmljZXNEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAg
ICAgU3RyaW5nIG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMSArMTQ0LDE4IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9y
eS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJlY3RvcnksIG5ldHdvcmtDYWNoZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9T
RVJWSUNFKQorICAgIFN0cmluZyBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5ID0g
cmVzb2x2ZWRBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOworICAgIGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LCBhbHRl
cm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyNlbmRpZgor
CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gaXNTYWZhcmk7CiAgICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0gW2Rl
ZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERl
YnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEtl
eSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXTsKICAgICAKICAgICBXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzID0geworICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgICAgICBtX3Nlc3Npb25JRCwKICAg
ICAgICAgY29uZmlndXJhdGlvbigpLmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpLAogICAgICAg
ICBjb25maWd1cmF0aW9uKCkuYWxsb3dzQ2VsbHVsYXJBY2Nlc3MoKSA/IEFsbG93c0NlbGx1bGFy
QWNjZXNzOjpZZXMgOiBBbGxvd3NDZWxsdWxhckFjY2Vzczo6Tm8sCkBAIC0xNTksNiArMTY2LDEw
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAgICAgU2Vj
b25kcyB7IFtkZWZhdWx0cyBpbnRlZ2VyRm9yS2V5OldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVM
YXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXldIC8gMTAwMC4gfSwKICAgICAgICAgV1RGTW92
ZShodHRwUHJveHkpLAogICAgICAgICBXVEZNb3ZlKGh0dHBzUHJveHkpLAorI2lmIEhBVkUoQ0ZO
RVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgICAgIFdURk1vdmUoYWx0ZXJuYXRpdmVT
ZXJ2aWNlU3RvcmFnZURpcmVjdG9yeSksCisgICAgICAgIFdURk1vdmUoYWx0ZXJuYXRpdmVTZXJ2
aWNlU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCisjZW5kaWYKICAgICAgICAgV1RG
TW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKSwKICAgICAgICAgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392251</attachid>
            <date>2020-03-02 23:31:23 -0800</date>
            <delta_ts>2020-03-03 09:34:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208387-20200302233122.patch</filename>
            <type>text/plain</type>
            <size>35892</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTc3MzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTAyICBKaXRlbiBNZWh0YSAgPGptZWh0
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBT
dG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAgPHBtYXRv
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGluY3JlYXNl
IGdjYyB3YXJuaW5nCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw2
ICs0NDQsMTAgQEAKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTUVUUklDU19BUElTX1Y0IDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwCiAjZGVmaW5lIEhBVkVfQ1NDSEVD
S0ZJWERJU0FCTEUgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NzcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkb3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMjAtMDItMjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFkZCBXZWJLaXQ6OlBBTCB0YXJnZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw5IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKICNpZiBIQVZFKEFMTE9XU19TRU5TSVRJVkVfTE9H
R0lORykKIEBwcm9wZXJ0eSBCT09MIF9hbGxvd3NTZW5zaXRpdmVMb2dnaW5nOwogI2VuZGlmCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKK0Bwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFNlc3Np
b25UYXNrICgpCkBAIC0yNDcsNiArMjUwLDI2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IE5TVVJMU2Vzc2lvbkMKICNlbmRpZgogQGVuZAogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKK0BpbnRlcmZhY2UgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5
IDogTlNPYmplY3QgPE5TQ29weWluZz4KK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9taWMs
IHJldGFpbikgTlNTdHJpbmcgKmhvc3Q7CitAcHJvcGVydHkgKHJlYWR3cml0ZSwgbm9uYXRvbWlj
LCBhc3NpZ24pIE5TSW50ZWdlciBwb3J0OworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRl
cm5hdGl2ZVNlcnZpY2VzRmlsdGVyIDogTlNPYmplY3QgPE5TQ29weWluZz4KKysgKGluc3RhbmNl
dHlwZSllbXB0eUZpbHRlcjsKK0BlbmQKKworQGludGVyZmFjZSBfTlNIVFRQQWx0ZXJuYXRpdmVT
ZXJ2aWNlc1N0b3JhZ2UgOiBOU09iamVjdAorQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWlj
KSBOU1VSTCAqcGF0aDsKKysgKGluc3RhbmNldHlwZSlzaGFyZWRQZXJzaXN0ZW50U3RvcmU7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFBlcnNpc3RlbnRTdG9yZVdpdGhVUkw6KG51bGxhYmxlIE5TVVJM
ICopcGF0aDsKKy0gKE5TQXJyYXk8X05TSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJ5ICo+ICop
SFRUUFNlcnZpY2VFbnRyaWVzV2l0aEZpbHRlcjooX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNG
aWx0ZXIgKilmaWx0ZXI7CistICh2b2lkKXJlbW92ZUhUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRy
aWVzV2l0aFJlZ2lzdHJhYmxlRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbjsKKy0gKHZvaWQpcmVt
b3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOihOU0RhdGUg
KilkYXRlOworQGVuZAorI2VuZGlmCisKIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IE5TVVJMQXV0
aGVudGljYXRpb25NZXRob2RPQXV0aDsKIAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAyMC0wMy0wMiAgSml0ZW4gTWVodGEg
IDxqbWVodGFAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2Vy
dmljZXMgU3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA4Mzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0IHdoaWNoIHZlcmlmaWVzIHRoYXQgZGF0
YSBpcyB3cml0dGVuIHRvIHRoZSBjb3JyZWN0IGRpcmVjdG9yeS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpnZXRIb3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9z
dE5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyQWx0ZXJuYXRp
dmVTZXJ2aWNlcyk6CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGE6Om93bmVyUHJvY2Vzcyk6CisgICAgICAg
ICogU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbToKKyAgICAgICAgKGRhdGFUeXBl
c1RvU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYnNpdGVEYXRhVHlwZSk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICgrW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsV2Vic2l0ZURhdGFUeXBlc0luY2x1ZGluZ1ByaXZhdGVdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZDo6YWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hv
c3RuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNv
cmQuaDoKKwogMjAyMC0wMy0wMiAgSmFjb2IgVXBob2ZmICA8amFjb2JfdXBob2ZmQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3Njg3LgpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDY5LDYgKzE0NjksMTUgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShQQQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0p
OwogICAgIH0KKworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2
ZVNlcnZpY2VzKSkgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogc2Vzc2lvbi0+
aG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSkKKyAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+bV93ZWJzaXRlRGF0YS5lbnRyaWVzLmFwcGVuZCh7IG9yaWdpbiwgV2Vic2l0
ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzLCAwIH0pOworICAgICAgICB9CisgICAgfQor
I2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURh
dGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAg
LTE1MzgsNiArMTU0NywxMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YShQCiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCkpCiAgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+Y2xlYXJBZENsaWNr
QXR0cmlidXRpb24oKTsKICAgICB9CisKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9T
RVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlw
ZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNz
aW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAgICAgIG5ldHdv
cmtTZXNzaW9uLT5jbGVhckFsdGVybmF0aXZlU2VydmljZXMobW9kaWZpZWRTaW5jZSk7CisgICAg
fQorI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGNsZWFyRGlza0NhY2hlRW50cmllcyhOZXR3b3Jr
Q2FjaGU6OkNhY2hlKiBjYWNoZSwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9y
aWdpbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTE1NzgsNiArMTU5NCwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0
YUZvCiAgICAgfQogI2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6
QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICAgICAgVmVjdG9y
PFN0cmluZz4gaG9zdHM7CisgICAgICAgICAgICBob3N0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG9yaWdpbkRhdGFzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9y
aWdpbkRhdGFzKQorICAgICAgICAgICAgICAgIGhvc3RzLnVuY2hlY2tlZEFwcGVuZChvcmlnaW4u
aG9zdCk7CisgICAgICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2
aWNlc0Zvckhvc3ROYW1lcyhob3N0cyk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAg
IGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWRDbGlja0F0
dHJpYnV0aW9ucykpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmln
aW5EYXRhIDogb3JpZ2luRGF0YXMpCkBAIC0xNzU0LDYgKzE3ODIsMTggQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGbwogICAgIH0KICNlbmRpZgogCisjaWYgSEFWRShD
Rk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5j
b250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXMpKSB7CisgICAgICAg
IGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVs
ZXRlOworICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShkb21haW5zLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGRvbWFp
biA6IGRvbWFpbnMpCisgICAgICAgICAgICAgICAgcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGUu
dW5jaGVja2VkQXBwZW5kKGRvbWFpbi5maXJzdC5zdHJpbmcoKSk7CisgICAgICAgICAgICBuZXR3
b3JrU2Vzc2lvbi0+ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhyZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6Q3JlZGVudGlhbHMp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICAgICAgYXV0byBvcmlnaW5zID0gc2Vzc2lvbi0+Y3JlZGVudGlhbFN0b3Jh
Z2UoKS5vcmlnaW5zV2l0aENyZWRlbnRpYWxzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9ubHlDb29raWVzIDogYm9vbDsK
IGVudW0gY2xhc3MgU2hvdWxkU2FtcGxlIDogYm9vbDsKK3N0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzUsNiArNzYsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQ3JlZGVudGlhbHMoKSB7IH07CiAgICAgdmlydHVhbCBib29s
IHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIFNlY29uZHMgbG9hZFRocm90dGxlTGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIHsg
fTsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaG9z
dE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMoKSBjb25zdCB7IHJldHVybiB7IH07IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsdGVybmF0aXZl
U2VydmljZXMoV2FsbFRpbWUpIHsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KICAgICBOZXR3b3JrUHJvY2VzcyYgbmV0d29y
a1Byb2Nlc3MoKSB7IHJldHVybiBtX25ldHdvcmtQcm9jZXNzOyB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM6OmUKICAgICBlbmNvZGVyIDw8IGh0dHBQcm94eTsKICAgICBlbmNvZGVyIDw8
IGh0dHBzUHJveHk7CiAjZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQorICAgIGVuY29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OworICAgIGVu
Y29kZXIgPDwgYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworI2Vu
ZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFn
ZVBhdGg7CiAgICAgZW5jb2RlciA8PCBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGU7CkBAIC0x
NDAsNiArMTQ0LDE4IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXIK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdP
UktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBPcHRpb25hbDxTdHJpbmc+IGFsdGVybmF0aXZl
U2VydmljZURpcmVjdG9yeTsKKyAgICBkZWNvZGVyID4+IGFsdGVybmF0aXZlU2VydmljZURpcmVj
dG9yeTsKKyAgICBpZiAoIWFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGRlY29k
ZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlm
ICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICNpZiBVU0UoU09VUCkKICAgICBPcHRpb25h
bDxTdHJpbmc+IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBkZWNvZGVyID4+IGNv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTI4OSw2ICszMDUsMTAgQEAgT3B0aW9uYWw8
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICAsIFdURk1vdmUoKmh0dHBQ
cm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1Byb3h5KQogI2VuZGlmCisjaWYgSEFWRShD
Rk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICAgICAgLCBXVEZNb3ZlKCphbHRlcm5h
dGl2ZVNlcnZpY2VEaXJlY3RvcnkpCisgICAgICAgICwgV1RGTW92ZSgqYWx0ZXJuYXRpdmVTZXJ2
aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKQorI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAg
ICAgICwgV1RGTW92ZSgqY29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoKQogICAgICAgICAsIFdU
Rk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsMTAgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzIAogICAgIFVSTCBodHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7CiAjZW5kaWYKKyNp
ZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIFN0cmluZyBhbHRlcm5h
dGl2ZVNlcnZpY2VEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFsdGVy
bmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyNlbmRpZgogI2lmIFVTRShT
T1VQKQogICAgIFN0cmluZyBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGg7CiAgICAgU291cENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBjb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgeyBT
b3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlOjpUZXh0IH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcs
MTAgQEAgcHJpdmF0ZToKICAgICBTZXNzaW9uV3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbik7CiAgICAgU2Vzc2lvbldyYXBwZXImIGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiBob3N0TmFtZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJBbHRlcm5hdGl2ZVNlcnZp
Y2VzKFdhbGxUaW1lKSBvdmVycmlkZTsKKwogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tF
VCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0VGFzaz4gY3JlYXRlV2ViU29ja2V0VGFz
ayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpIGZpbmFsOwogICAgIHZvaWQgYWRkV2ViU29ja2V0VGFz
ayhXZWJTb2NrZXRUYXNrJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lv
biAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOTYsNiArMTA5NiwxNCBAQCBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hCiAgICAgaWYgKCFtX3NvdXJjZUFw
cGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgIGNvbmZpZ3Vy
YXRpb24uX3NvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciA9IG1fc291cmNlQXBw
bGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKKyAgICBpZiAoIXBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGly
ZWN0b3J5LmlzRW1wdHkoKSkgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkocGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOworICAgICAgICBjb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFn
ZSA9IFtbW19OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSBhbGxvY10gaW5pdFBlcnNp
c3RlbnRTdG9yZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmFsdGVy
bmF0aXZlU2VydmljZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdXSBhdXRvcmVsZWFzZV07Cisg
ICAgfSBlbHNlCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpOworI2VuZGlmCisKICAgICBjb25maWd1cmF0aW9uLmNvbm5lY3Rpb25Qcm94eURpY3Rpb25h
cnkgPSBwcm94eURpY3Rpb25hcnkocGFyYW1ldGVycy5odHRwUHJveHksIHBhcmFtZXRlcnMuaHR0
cHNQcm94eSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE2NSw5ICsxMTczLDcg
QEAgTmV0d29ya1Nlc3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogI2VuZGlmCiB9CiAK
LU5ldHdvcmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNvY29hKCkKLXsKLX0KK05ldHdv
cmtTZXNzaW9uQ29jb2E6On5OZXR3b3JrU2Vzc2lvbkNvY29hKCkgPSBkZWZhdWx0OwogCiB2b2lk
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9u
KCkKIHsKQEAgLTE0NjksNCArMTQ3NSw0NSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnJl
bW92ZVdlYlNvY2tlCiAKICNlbmRpZiAvLyBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAK
K1ZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IE5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhvc3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkgY29uc3QKK3sKKyNpZiBIQVZFKENG
TkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRo
ZSBzZXNzaW9uSUQsIGFuZCB3ZSBzaG91bGQgaGF2ZSBvbmUgcGVyIG5ldHdvcmtzZXNzaW9uCisg
ICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICBfTlNI
VFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZTsKKyAgICBOU0FycmF5PF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRy
eSAqPiAqZW50cmllcyA9IFtzdG9yYWdlIEhUVFBTZXJ2aWNlRW50cmllc1dpdGhGaWx0ZXI6X05T
SFRUUEFsdGVybmF0aXZlU2VydmljZXNGaWx0ZXIuZW1wdHlGaWx0ZXJdOworCisgICAgZm9yIChf
TlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkqIGVudHJ5IGluIGVudHJpZXMpIHsKKyAgICAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbiA9IHsgImh0dHBzIl9zLCBlbnRy
eS5ob3N0LCBlbnRyeS5wb3J0IH07CisgICAgICAgIG9yaWdpbnMuYXBwZW5kKG9yaWdpbik7Cisg
ICAgfQorICAgIHJldHVybiBvcmlnaW5zOworI2Vsc2UKKyAgICByZXR1cm4geyB9OworI2VuZGlm
Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNl
c0Zvckhvc3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpCit7CisjaWYgSEFWRShD
Rk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2
aWNlc1N0b3JhZ2UqIHN0b3JhZ2UgPSBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vz
c2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLl9hbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZTsKKyAg
ICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykKKyAgICAgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFs
dGVybmF0aXZlU2VydmljZUVudHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46aG9zdF07CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShob3N0cyk7CisjZW5kaWYKK30KKwordm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSkKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIF9OU0hU
VFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2Vy
dmljZXNTdG9yYWdlOworICAgIE5TVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IG1vZGlmaWVk
U2luY2Uuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7CisgICAgTlNEYXRlICpkYXRlID0g
W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2YWxdOworICAg
IFtzdG9yYWdlIHJlbW92ZUhUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyaWVzQ3JlYXRlZEFmdGVy
RGF0ZTpkYXRlXTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOworI2Vu
ZGlmCiB9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhLmNwcAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjcsNiArMTI3LDEwIEBAIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGUgV2Vi
c2l0ZURhdGE6Om93bmUKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhUHJvY2Vzc1R5cGU6OlVJ
OwogICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOgogICAgICAg
ICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6TmV0d29yazsKKyNpZiBIQVZFKENGTkVU
V09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGNhc2UgV2Vic2l0ZURhdGFUeXBlOjpBbHRl
cm5hdGl2ZVNlcnZpY2VzOgorICAgICAgICByZXR1cm4gV2Vic2l0ZURhdGFQcm9jZXNzVHlwZTo6
TmV0d29yazsKKyNlbmRpZgogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVR5cGUuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUx
LDkgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgewogICAgIERPTUNhY2hlID0gMSA8PCAx
NSwKICAgICBEZXZpY2VJZEhhc2hTYWx0ID0gMSA8PCAxNiwKICAgICBBZENsaWNrQXR0cmlidXRp
b25zID0gMSA8PCAxNywKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQor
ICAgIEFsdGVybmF0aXZlU2VydmljZXMgPSAxIDw8IDE4LAorI2VuZGlmCiB9OwogCiB9OwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24g
MjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDEwIEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdl
YlByb2Nlc3NQb29sOjplbnMKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5uZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIH0KIAor
I2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgcGFyYW1ldGVycy5k
ZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuYWx0ZXJu
YXRpdmVTZXJ2aWNlRGlyZWN0b3J5ID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0
aXZlU2VydmljZXNEaXJlY3RvcnkoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5
LCBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworI2Vu
ZGlmCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGVuYWJsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1l
dGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0xvZ1Rlc3RpbmdFdmVudCA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5n
RXZlbnQ7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQko
cmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgTlNT
dHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVTZWFyYwogTlNTdHJpbmcgKiBjb25zdCBf
V0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gQCJfV0tXZWJzaXRlRGF0
YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIjsKIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHMgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzIjsK
IE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyA9
IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucyI7CitOU1N0cmluZyAqIGNv
bnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMgPSBAIl9XS1dlYnNpdGVE
YXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXMiOwogCiAjaWYgUExBVEZPUk0oTUFDKQogTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhID0gQCJfV0tXZWJzaXRlRGF0
YVR5cGVQbHVnSW5EYXRhIjsKQEAgLTEwMyw2ICsxMDQsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKmRh
dGFUeXBlc1RvU3RyaW5nKE5TU2V0CiAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJDcmVkZW50
aWFscyJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0Ol9XS1dlYnNpdGVEYXRh
VHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnNdKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiQWQg
Q2xpY2sgQXR0cmlidXRpb25zIl07CisgICAgaWYgKFtkYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6
X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10pCisgICAgICAgIFthcnJheSBh
ZGRPYmplY3Q6QCJBbHRlcm5hdGl2ZSBTZXJ2aWNlcyJdOwogCiAgICAgcmV0dXJuIFthcnJheSBj
b21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdOwogfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw2ICs3NiwxMCBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPFdlYnNpdGVEYXRhVHlw
ZT4gCiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVR5cGU6OkNyZWRlbnRpYWxzOwogICAgIGlm
IChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5cGVBZENs
aWNrQXR0cmlidXRpb25zXSkKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6QWRDbGlj
a0F0dHJpYnV0aW9uczsKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQor
ICAgIGlmIChbd2Vic2l0ZURhdGFUeXBlIGlzRXF1YWxUb1N0cmluZzpfV0tXZWJzaXRlRGF0YVR5
cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSkKKyAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlwZTo6
QWx0ZXJuYXRpdmVTZXJ2aWNlczsKKyNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9
CiAKQEAgLTEzMyw2ICsxMzcsMTAgQEAgc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNTZXQ+IHRv
V0tXZWJzaQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRl
RGF0YVR5cGVDcmVkZW50aWFsc107CiAgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMo
V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zKSkKICAgICAgICAgW3drV2Vic2l0
ZURhdGFUeXBlcyBhZGRPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9u
c107CisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vydmlj
ZXMpKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHdrV2Vic2l0
ZURhdGFUeXBlczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCShyZXZpc2lv
biAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVJlY29yZFByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBXS19F
WFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0CiBXS19FWFRFUk4gTlNTdHJpbmcg
KiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogV0tfRVhURVJOIE5TU3RyaW5nICog
Y29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMyksIGlvcygxMS4wKSk7CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJz
aXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTUpLCBpb3MoMTMuMCkpOworV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURh
dGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTks
OSArMjE5LDE2IEBAICsgKE5TU2V0PE5TU3RyaW5nICo+ICopX2FsbFdlYnNpdGVEYXRhVHkKICAg
ICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBzdGF0aWMgTlNTZXQgKmFs
bFdlYnNpdGVEYXRhVHlwZXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeIHsKLSAg
ICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFtfV0tXZWJzaXRlRGF0YVR5cGVIU1RTQ2FjaGUs
IF9XS1dlYnNpdGVEYXRhVHlwZU1lZGlhS2V5cywgX1dLV2Vic2l0ZURhdGFUeXBlU2VhcmNoRmll
bGRSZWNlbnRTZWFyY2hlcywgX1dLV2Vic2l0ZURhdGFUeXBlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xp
Y2tBdHRyaWJ1dGlvbnMKKyAgICAgICAgYXV0byAqcHJpdmF0ZVR5cGVzID0gQFsKKyAgICAgICAg
ICAgIF9XS1dlYnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwKKyAgICAgICAgICAgIF9XS1dlYnNpdGVE
YXRhVHlwZU1lZGlhS2V5cywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlwZVNlYXJjaEZp
ZWxkUmVjZW50U2VhcmNoZXMsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLAorICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlh
bHMsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmlidXRpb25zLAor
ICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcwogI2lmICFU
QVJHRVRfT1NfSVBIT05FCi0gICAgICAgICwgX1dLV2Vic2l0ZURhdGFUeXBlUGx1Z0luRGF0YQor
ICAgICAgICAgICAgLCBfV0tXZWJzaXRlRGF0YVR5cGVQbHVnSW5EYXRhCiAjZW5kaWYKICAgICAg
ICAgXTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJl
dmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4KIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCitA
cHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TVVJMICphbHRlcm5hdGl2ZVNl
cnZpY2VzU3RvcmFnZURpcmVjdG9yeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiAvLyBUZXN0aW5nIG9ubHkuCiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQk9PTCBhbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNG
b3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAy
NTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsMTkg
QEAgLSAodm9pZClzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OihOUwogICAgIF9jb25maWd1
cmF0aW9uLT5zZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KHVybC5wYXRoKTsKIH0KIAorLSAo
TlNVUkwgKilhbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeQoreworICAgIHJldHVy
biBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOl9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZp
Y2VzRGlyZWN0b3J5KCkgaXNEaXJlY3Rvcnk6WUVTXTsKK30KKworLSAodm9pZClzZXRBbHRlcm5h
dGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeTooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoIV9j
b25maWd1cmF0aW9uLT5pc1BlcnNpc3RlbnQoKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkNhbm5vdCBzZXQgYWx0ZXJuYXRp
dmVTZXJ2aWNlc0RpcmVjdG9yeSBvbiBhIG5vbi1wZXJzaXN0ZW50IF9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLiJdOworICAgIGNoZWNrVVJMQXJndW1lbnQodXJsKTsKKyAgICBfY29u
ZmlndXJhdGlvbi0+c2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSh1cmwucGF0aCk7Cit9
CisKIC0gKEJPT0wpZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQKIHsKICAgICBy
ZXR1cm4gX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVJlY29yZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw2ICsxMDQsMTYgQEAgdm9pZCBXZWJzaXRlRGF0YVJlY29yZDo6YWRk
SFNUU0NhY2hlSG9zdAogICAgIEhTVFNDYWNoZUhvc3ROYW1lcy5hZGQoaG9zdE5hbWUpOwogfQog
Cit2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRBbHRlcm5hdGl2ZVNlcnZpY2VzSG9zdG5hbWUo
Y29uc3QgU3RyaW5nJiBob3N0TmFtZSkKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElW
RV9TRVJWSUNFKQorICAgIHR5cGVzLmFkZChXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2Vy
dmljZXMpOworICAgIGFsdGVybmF0aXZlU2VydmljZXNIb3N0TmFtZXMuYWRkKGhvc3ROYW1lKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhvc3ROYW1lKTsKKyNlbmRpZgorfQorCiBzdGF0aWMg
aW5saW5lIGJvb2wgaG9zdElzSW5Eb21haW4oU3RyaW5nVmlldyBob3N0LCBTdHJpbmdWaWV3IGRv
bWFpbikKIHsKICAgICBpZiAoIWhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShkb21haW4p
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFS
ZWNvcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVJlY29yZC5oCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgdm9pZCBh
ZGRQbHVnaW5EYXRhSG9zdE5hbWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAjZW5kaWYKICAg
ICB2b2lkIGFkZEhTVFNDYWNoZUhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5hbWUpOworICAg
IHZvaWQgYWRkQWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdE5h
bWUpOwogCiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lOwogICAgIE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+IHR5cGVzOwpAQCAtNzAsNiArNzEsNyBAQCBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQg
ewogICAgIEhhc2hTZXQ8U3RyaW5nPiBwbHVnaW5EYXRhSG9zdE5hbWVzOwogI2VuZGlmCiAgICAg
SGFzaFNldDxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
YWx0ZXJuYXRpdmVTZXJ2aWNlc0hvc3ROYW1lczsKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIFN0cmluZyB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjU3
NzIxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsOCBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlc29sdmVEaXJlY3RvcmllCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0
aW9uLT5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkpKTsKKyAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+YWx0ZXJu
YXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvbHZlZENv
bmZpZ3VyYXRpb24tPnNldEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkocmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9u
LT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi0+ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkuaXNFbXB0eSgpKQogICAg
ICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdl
RGlyZWN0b3J5KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5
KCkpKTsKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+bmV0d29ya0NhY2hlRGlyZWN0b3J5KCku
aXNFbXB0eSgpKQpAQCAtMjIyNCw2ICsyMjI2LDEyIEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWQKICAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKIH0KIAorV1RGOjpT
dHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rv
cnkoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFdURjo6U3RyaW5n
KCk7Cit9CisKIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAz
LDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkQXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9u
LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29s
dmVkTG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRD
b25maWd1cmF0aW9uLT5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgcmVzb2x2ZWRBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0
b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFDYWNoZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0
b3J5KCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTWVkaWFLZXlzRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWREYXRhYmFzZURpcmVjdG9y
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT53ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSgpOyB9CkBAIC0yNjEsNiArMjYyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFdU
Rjo6U3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAgICAg
c3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBz
dGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKTsK
ICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
KTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCk7CiAjaWYgVVNFKEdMSUIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNp
dGVEYQogICAgICAgICBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpOwogICAgICAgICBzZXRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURp
cmVjdG9yeSgpKTsKICAgICAgICAgc2V0TmV0d29ya0NhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSk7CisgICAgICAgIHNldEFsdGVy
bmF0aXZlU2VydmljZXNEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0
aXZlU2VydmljZXNEaXJlY3RvcnkoKSk7CiAgICAgICAgIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSk7CiAgICAgICAg
IHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpKTsKICAgICAgICAgc2V0U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRpcmVjdG9yeSgpKTsKQEAgLTcxLDYgKzcyLDcgQEAgUmVmPFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaQogI2VuZGlmCiAgICAgY29weS0+bV9sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5
LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk7CisgICAgY29weS0+bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5ID0gdGhp
cy0+bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGV2aWNlSWRI
YXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3Jh
Z2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIGNvcHktPm1f
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLT5tX2phdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7
IH0KICAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0
b3J5KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsg
fQogICAgIAorICAgIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeTsgfQorICAgIHZv
aWQgc2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsg
bV9hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CisK
ICAgICBjb25zdCBTdHJpbmcmIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsgfQogICAgIHZv
aWQgc2V0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoU3RyaW5nJiYgZGlyZWN0b3J5
KSB7IG1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSBXVEZNb3ZlKGRpcmVjdG9y
eSk7IH0KICAgICAKQEAgLTE3MSw2ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFs
ZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Owor
ICAgIFN0cmluZyBtX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1f
ZGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1famF2YVNjcmlwdENvbmZpZ3Vy
YXRpb25EaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0NCwx
MSArMTQ0LDIwIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAg
ICBpZiAoIW5ldHdvcmtDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVE
aXJlY3RvcnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKKyNpZiBI
QVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIFN0cmluZyBhbHRlcm5hdGl2
ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5ID0gcmVzb2x2ZWRBbHRlcm5hdGl2ZVNlcnZpY2VzU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBhbHRlcm5hdGl2
ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGlmIChhbHRlcm5h
dGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSAmJiAhbV9zZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKKyAgICAgICAgYWx0ZXJuYXRpdmVTZXJ2aWNlU3RvcmFnZURpcmVjdG9yeSA9
IFtfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2Ugc2hhcmVkUGVyc2lzdGVudFN0b3Jl
XS5wYXRoLnBhdGg7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5
LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVh
ZFdyaXRlRGlyZWN0b3J5KGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnksIGFsdGVy
bmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworI2VuZGlmCisK
ICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBpc1NhZmFyaTsKICAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkludGVybmFsRGVi
dWclQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkS2V5
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOwogICAgIAogICAgIFdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMgPSB7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgICAgIG1fc2Vzc2lvbklELAogICAg
ICAgICBjb25maWd1cmF0aW9uKCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCksCiAgICAgICAg
IGNvbmZpZ3VyYXRpb24oKS5hbGxvd3NDZWxsdWxhckFjY2VzcygpID8gQWxsb3dzQ2VsbHVsYXJB
Y2Nlc3M6OlllcyA6IEFsbG93c0NlbGx1bGFyQWNjZXNzOjpObywKQEAgLTE1OSw2ICsxNjgsMTAg
QEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgICAgICBTZWNv
bmRzIHsgW2RlZmF1bHRzIGludGVnZXJGb3JLZXk6V2ViS2l0TmV0d29ya0xvYWRUaHJvdHRsZUxh
dGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleV0gLyAxMDAwLiB9LAogICAgICAgICBXVEZNb3Zl
KGh0dHBQcm94eSksCiAgICAgICAgIFdURk1vdmUoaHR0cHNQcm94eSksCisjaWYgSEFWRShDRk5F
VFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICAgICAgV1RGTW92ZShhbHRlcm5hdGl2ZVNl
cnZpY2VTdG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgV1RGTW92ZShhbHRlcm5hdGl2ZVNlcnZp
Y2VTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKKyNlbmRpZgogICAgICAgICBXVEZN
b3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpLAogICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpLApAQCAtMjc3LDYgKzI5MCwxMSBAQCBXVEY6OlN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0CiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKIH0KIAorV1RGOjpTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKQor
eworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQWx0
ZXJuYXRpdmVTZXJ2aWNlcyIpOworfQorCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392285</attachid>
            <date>2020-03-03 09:34:55 -0800</date>
            <delta_ts>2020-03-03 10:21:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208387-20200303093454.patch</filename>
            <type>text/plain</type>
            <size>40838</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTc3MzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAzLTAyICBKaXRlbiBNZWh0YSAgPGptZWh0
YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRUUCBBbHRlcm5hdGl2ZSBTZXJ2aWNlcyBT
dG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtSGF2ZS5oOgorCiAyMDIwLTAzLTAyICBQYXVsbyBNYXRvcyAgPHBtYXRv
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBKU0MgMzJiaXQgYWxpZ25tZW50IGluY3JlYXNl
IGdjYyB3YXJuaW5nCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw2
ICs0NDQsMTAgQEAKICNkZWZpbmUgSEFWRV9DRk5FVFdPUktfTUVUUklDU19BUElTX1Y0IDEKICNl
bmRpZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0FM
VEVSTkFUSVZFX1NFUlZJQ0UgMQorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwCiAjZGVmaW5lIEhBVkVfQ1NDSEVD
S0ZJWERJU0FCTEUgMQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NzcyMSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAyMC0wMy0wMiAgSml0ZW4gTWVodGEgIDxqbWVodGFAYXBwbGUuY29t
PgorCisgICAgICAgIEFkb3B0IEhUVFAgQWx0ZXJuYXRpdmUgU2VydmljZXMgU3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Mzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIHBhbC9zcGkv
Y2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMjAtMDItMjcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIEFkZCBXZWJLaXQ6OlBBTCB0YXJnZXQK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShy
ZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw5IEBAIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIE5TVVJMU2Vzc2lvbkMKICNpZiBIQVZFKEFMTE9XU19TRU5TSVRJVkVfTE9H
R0lORykKIEBwcm9wZXJ0eSBCT09MIF9hbGxvd3NTZW5zaXRpdmVMb2dnaW5nOwogI2VuZGlmCisj
aWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKK0Bwcm9wZXJ0eSAobnVsbGFi
bGUsIHJldGFpbikgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlICpfYWx0ZXJuYXRp
dmVTZXJ2aWNlc1N0b3JhZ2U7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFNlc3Np
b25UYXNrICgpCkBAIC0yNDcsNiArMjUwLDI4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IE5TVVJMU2Vzc2lvbkMKICNlbmRpZgogQGVuZAogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJO
QVRJVkVfU0VSVklDRSkKKworQGludGVyZmFjZSBfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50
cnkgOiBOU09iamVjdCA8TlNDb3B5aW5nPgorQHByb3BlcnR5IChyZWFkd3JpdGUsIG5vbmF0b21p
YywgcmV0YWluKSBOU1N0cmluZyAqaG9zdDsKK0Bwcm9wZXJ0eSAocmVhZHdyaXRlLCBub25hdG9t
aWMsIGFzc2lnbikgTlNJbnRlZ2VyIHBvcnQ7CitAZW5kCisKK0BpbnRlcmZhY2UgX05TSFRUUEFs
dGVybmF0aXZlU2VydmljZXNGaWx0ZXIgOiBOU09iamVjdCA8TlNDb3B5aW5nPgorKyAoaW5zdGFu
Y2V0eXBlKWVtcHR5RmlsdGVyOworQGVuZAorCitAaW50ZXJmYWNlIF9OU0hUVFBBbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9t
aWMpIE5TVVJMICpwYXRoOworKyAoaW5zdGFuY2V0eXBlKXNoYXJlZFBlcnNpc3RlbnRTdG9yZTsK
Ky0gKGluc3RhbmNldHlwZSlpbml0UGVyc2lzdGVudFN0b3JlV2l0aFVSTDoobnVsbGFibGUgTlNV
UkwgKilwYXRoOworLSAoTlNBcnJheTxfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cnkgKj4g
KilIVFRQU2VydmljZUVudHJpZXNXaXRoRmlsdGVyOihfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNl
c0ZpbHRlciAqKWZpbHRlcjsKKy0gKHZvaWQpcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2VydmljZUVu
dHJpZXNXaXRoUmVnaXN0cmFibGVEb21haW46KE5TU3RyaW5nICopZG9tYWluOworLSAodm9pZCly
ZW1vdmVIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cmllc0NyZWF0ZWRBZnRlckRhdGU6KE5TRGF0
ZSAqKWRhdGU7CitAZW5kCisKKyNlbmRpZiAvLyBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9T
RVJWSUNFKQorCiBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0
aG9kT0F1dGg7CiAKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzcgQEAKKzIwMjAtMDMtMDIgIEppdGVuIE1laHRhICA8am1laHRhQGFwcGxl
LmNvbT4KKworICAgICAgICBBZG9wdCBIVFRQIEFsdGVybmF0aXZlIFNlcnZpY2VzIFN0b3JhZ2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgQ292ZXJl
ZCBieSBhIG5ldyBBUEkgdGVzdCB3aGljaCB2ZXJpZmllcyB0aGF0IGRhdGEgaXMgd3JpdHRlbiB0
byB0aGUgY29ycmVjdCBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNp
dGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxldGVX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0
SG9zdE5hbWVzV2l0aEFsdGVybmF0aXZlU2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6ZGVsZXRlQWx0ZXJuYXRpdmVTZXJ2aWNlc0Zvckhvc3ROYW1lcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckFsdGVybmF0aXZlU2VydmljZXMpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhOjpvd25lclByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmQubW06CisgICAgICAgIChkYXRhVHlwZXNUb1N0cmluZyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aDoKKyAgICAgICAgKFdlYktpdDo6dG9XZWJzaXRlRGF0YVR5cGUpOgorICAgICAgICAoV2ViS2l0
Ojp0b1dLV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoK1tXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbFdlYnNpdGVEYXRhVHlwZXNJbmNsdWRpbmdQcml2YXRlXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEFsdGVybmF0aXZlU2VydmljZXNIb3N0bmFtZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmg6CisKIDIwMjAt
MDMtMDIgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NzY4Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2OSw2ICsxNDY5LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZldGNo
V2Vic2l0ZURhdGEoUEEKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CisKKyNp
ZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0
YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlc3Npb24tPmhvc3ROYW1lc1dpdGhB
bHRlcm5hdGl2ZVNlcnZpY2VzKCkpCisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5tX3dlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6
OkFsdGVybmF0aXZlU2VydmljZXMsIDAgfSk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBX
YWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMTUzOCw2ICsx
NTQ3LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKFAKICAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5jbGVhckFkQ2xpY2tBdHRyaWJ1dGlv
bigpOwogICAgIH0KKworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5h
dGl2ZVNlcnZpY2VzKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlz
LT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgbmV0d29ya1Nlc3Npb24t
PmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhtb2RpZmllZFNpbmNlKTsKKyAgICB9CisjZW5kaWYK
IH0KIAogc3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKE5ldHdvcmtDYWNoZTo6Q2Fj
aGUqIGNhY2hlLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTU3OCw2ICsx
NTk0LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm8KICAgICB9
CiAjZW5kaWYKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAg
aWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2
ZVNlcnZpY2VzKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBo
b3N0czsKKyAgICAgICAgICAgIGhvc3RzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkob3JpZ2luRGF0
YXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2luRGF0YXMp
CisgICAgICAgICAgICAgICAgaG9zdHMudW5jaGVja2VkQXBwZW5kKG9yaWdpbi5ob3N0KTsKKyAg
ICAgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9z
dE5hbWVzKGhvc3RzKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHdlYnNp
dGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25z
KSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBv
cmlnaW5EYXRhcykKQEAgLTE3NTQsNiArMTc4MiwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvCiAgICAgfQogI2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19B
TFRFUk5BVElWRV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdl
YnNpdGVEYXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpIHsKKyAgICAgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAg
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVnaXN0cmFibGVEb21haW5zVG9EZWxldGU7CisgICAg
ICAgICAgICByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGRvbWFpbnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlu
cykKKyAgICAgICAgICAgICAgICByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZS51bmNoZWNrZWRB
cHBlbmQoZG9tYWluLmZpcnN0LnN0cmluZygpKTsKKyAgICAgICAgICAgIG5ldHdvcmtTZXNzaW9u
LT5kZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKHJlZ2lzdHJhYmxlRG9tYWlu
c1RvRGVsZXRlKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpDcmVkZW50aWFscykpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAg
ICAgICAgICBhdXRvIG9yaWdpbnMgPSBzZXNzaW9uLT5jcmVkZW50aWFsU3RvcmFnZSgpLm9yaWdp
bnNXaXRoQ3JlZGVudGlhbHMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQCBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFz
cyBTaG91bGRTYW1wbGUgOiBib29sOworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC03NSw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJDcmVkZW50aWFscygpIHsgfTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
U2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CisgICAg
dmlydHVhbCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBob3N0TmFtZXNXaXRo
QWx0ZXJuYXRpdmVTZXJ2aWNlcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNlcyhX
YWxsVGltZSkgeyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQogICAgIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcygp
IHsgcmV0dXJuIG1fbmV0d29ya1Byb2Nlc3M7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsMTAgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZQogICAgIGVuY29kZXIgPDwgaHR0cFByb3h5OwogICAgIGVuY29kZXIgPDwgaHR0cHNQcm94
eTsKICNlbmRpZgorI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAg
ZW5jb2RlciA8PCBhbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBh
bHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisjZW5kaWYKICNpZiBV
U0UoU09VUCkKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAg
ICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKQEAgLTE0MCw2ICsxNDQs
MTggQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5B
VElWRV9TRVJWSUNFKQorICAgIE9wdGlvbmFsPFN0cmluZz4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGly
ZWN0b3J5OworICAgIGRlY29kZXIgPj4gYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5OworICAg
IGlmICghYWx0ZXJuYXRpdmVTZXJ2aWNlRGlyZWN0b3J5KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBhbHRlcm5h
dGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZGVjb2RlciA+PiBhbHRl
cm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgaWYgKCFhbHRlcm5h
dGl2ZVNlcnZpY2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisjZW5kaWYKKwogI2lmIFVTRShTT1VQKQogICAgIE9wdGlvbmFsPFN0cmluZz4g
Y29va2llUGVyc2lzdGVudFN0b3JhZ2VQYXRoOwogICAgIGRlY29kZXIgPj4gY29va2llUGVyc2lz
dGVudFN0b3JhZ2VQYXRoOwpAQCAtMjg5LDYgKzMwNSwxMCBAQCBPcHRpb25hbDxOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVyCiAgICAgICAgICwgV1RGTW92ZSgqaHR0cFByb3h5KQogICAg
ICAgICAsIFdURk1vdmUoKmh0dHBzUHJveHkpCiAjZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19B
TFRFUk5BVElWRV9TRVJWSUNFKQorICAgICAgICAsIFdURk1vdmUoKmFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeSkKKyAgICAgICAgLCBXVEZNb3ZlKCphbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGUpCisjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICAgICAgLCBXVEZN
b3ZlKCpjb29raWVQZXJzaXN0ZW50U3RvcmFnZVBhdGgpCiAgICAgICAgICwgV1RGTW92ZSgqY29v
a2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2
ICs3MSwxMCBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgCiAgICAg
VVJMIGh0dHBQcm94eTsKICAgICBVUkwgaHR0cHNQcm94eTsKICNlbmRpZgorI2lmIEhBVkUoQ0ZO
RVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgU3RyaW5nIGFsdGVybmF0aXZlU2Vydmlj
ZURpcmVjdG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYWx0ZXJuYXRpdmVTZXJ2
aWNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAg
U3RyaW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKICAgICBTb3VwQ29va2llUGVyc2lz
dGVudFN0b3JhZ2VUeXBlIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7IFNvdXBDb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlRleHQgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZp
c2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNywxMCBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25XcmFwcGVyJiBpc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKTsKICAg
ICBTZXNzaW9uV3JhcHBlciYgYXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKIAorICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGhv
c3ROYW1lc1dpdGhBbHRlcm5hdGl2ZVNlcnZpY2VzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhckFsdGVybmF0aXZlU2VydmljZXMoV2FsbFRp
bWUpIG92ZXJyaWRlOworCiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNrPiBjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtT
b2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkgZmluYWw7CiAgICAgdm9pZCBhZGRXZWJTb2NrZXRUYXNrKFdlYlNvY2tl
dFRhc2smKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlzaW9uIDI1NzcyMSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5Niw2ICsxMDk2LDE0IEBAIE5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICAgICBpZiAoIW1fc291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgY29uZmlndXJhdGlvbi5fc291
cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyID0gbV9zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXI7CiAKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJW
SUNFKQorICAgIGlmICghcGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkuaXNF
bXB0eSgpKSB7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShw
YXJhbWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cisg
ICAgICAgIGNvbmZpZ3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlID0gW1tbX05T
SFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlIGFsbG9jXSBpbml0UGVyc2lzdGVudFN0b3Jl
V2l0aFVSTDpbW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpwYXJhbWV0ZXJzLmFsdGVybmF0aXZlU2Vy
dmljZURpcmVjdG9yeSBpc0RpcmVjdG9yeTpZRVNdIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkFsdGVybmF0aXZlU2VydmljZS5zcWxpdGUiXV0gYXV0b3JlbGVhc2VdOworICAgIH0gZWxz
ZQorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKyNl
bmRpZgorCiAgICAgY29uZmlndXJhdGlvbi5jb25uZWN0aW9uUHJveHlEaWN0aW9uYXJ5ID0gcHJv
eHlEaWN0aW9uYXJ5KHBhcmFtZXRlcnMuaHR0cFByb3h5LCBwYXJhbWV0ZXJzLmh0dHBzUHJveHkp
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExNjUsOSArMTE3Myw3IEBAIE5ldHdv
cmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EKICNlbmRpZgogfQogCi1OZXR3b3Jr
U2Vzc2lvbkNvY29hOjp+TmV0d29ya1Nlc3Npb25Db2NvYSgpCi17Ci19CitOZXR3b3JrU2Vzc2lv
bkNvY29hOjp+TmV0d29ya1Nlc3Npb25Db2NvYSgpID0gZGVmYXVsdDsKIAogdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiB7CkBA
IC0xNDY5LDQgKzE0NzUsNDQgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpyZW1vdmVXZWJT
b2NrZQogCiAjZW5kaWYgLy8gSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQogCitWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpob3N0TmFt
ZXNXaXRoQWx0ZXJuYXRpdmVTZXJ2aWNlcygpIGNvbnN0Cit7CisjaWYgSEFWRShDRk5FVFdPUktf
QUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBvcmlnaW5zOworICAgIF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3Rv
cmFnZSA9IG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZp
Z3VyYXRpb24uX2FsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlOworICAgIE5TQXJyYXk8X05TSFRU
UEFsdGVybmF0aXZlU2VydmljZUVudHJ5ICo+ICplbnRyaWVzID0gW3N0b3JhZ2UgSFRUUFNlcnZp
Y2VFbnRyaWVzV2l0aEZpbHRlcjpfTlNIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlc0ZpbHRlci5lbXB0
eUZpbHRlcl07CisKKyAgICBmb3IgKF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VFbnRyeSogZW50
cnkgaW4gZW50cmllcykgeworICAgICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3Jp
Z2luID0geyAiaHR0cHMiX3MsIGVudHJ5Lmhvc3QsIGVudHJ5LnBvcnQgfTsKKyAgICAgICAgb3Jp
Z2lucy5hcHBlbmQob3JpZ2luKTsKKyAgICB9CisgICAgcmV0dXJuIG9yaWdpbnM7CisjZWxzZQor
ICAgIHJldHVybiB7IH07CisjZW5kaWYKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpk
ZWxldGVBbHRlcm5hdGl2ZVNlcnZpY2VzRm9ySG9zdE5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0cykKK3sKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElWRV9TRVJWSUNFKQorICAg
IF9OU0hUVFBBbHRlcm5hdGl2ZVNlcnZpY2VzU3RvcmFnZSogc3RvcmFnZSA9IG1fc2Vzc2lvbldp
dGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRpb24uX2FsdGVybmF0
aXZlU2VydmljZXNTdG9yYWdlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3RzKQorICAgICAg
ICBbc3RvcmFnZSByZW1vdmVIVFRQQWx0ZXJuYXRpdmVTZXJ2aWNlRW50cmllc1dpdGhSZWdpc3Ry
YWJsZURvbWFpbjpob3N0XTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhvc3RzKTsKKyNlbmRp
ZgorfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQWx0ZXJuYXRpdmVTZXJ2aWNl
cyhXYWxsVGltZSBtb2RpZmllZFNpbmNlKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFU
SVZFX1NFUlZJQ0UpCisgICAgX05TSFRUUEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlKiBzdG9y
YWdlID0gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmln
dXJhdGlvbi5fYWx0ZXJuYXRpdmVTZXJ2aWNlc1N0b3JhZ2U7CisgICAgTlNUaW1lSW50ZXJ2YWwg
dGltZUludGVydmFsID0gbW9kaWZpZWRTaW5jZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMo
KTsKKyAgICBOU0RhdGUgKmRhdGUgPSBbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2Ux
OTcwOnRpbWVJbnRlcnZhbF07CisgICAgW3N0b3JhZ2UgcmVtb3ZlSFRUUEFsdGVybmF0aXZlU2Vy
dmljZUVudHJpZXNDcmVhdGVkQWZ0ZXJEYXRlOmRhdGVdOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0obW9kaWZpZWRTaW5jZSk7CisjZW5kaWYKIH0KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGEu
Y3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsMTAgQEAgV2Vi
c2l0ZURhdGFQcm9jZXNzVHlwZSBXZWJzaXRlRGF0YTo6b3duZQogICAgICAgICByZXR1cm4gV2Vi
c2l0ZURhdGFQcm9jZXNzVHlwZTo6VUk7CiAgICAgY2FzZSBXZWJzaXRlRGF0YVR5cGU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbnM6CiAgICAgICAgIHJldHVybiBXZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpO
ZXR3b3JrOworI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgY2Fz
ZSBXZWJzaXRlRGF0YVR5cGU6OkFsdGVybmF0aXZlU2VydmljZXM6CisgICAgICAgIHJldHVybiBX
ZWJzaXRlRGF0YVByb2Nlc3NUeXBlOjpOZXR3b3JrOworI2VuZGlmCiAgICAgfQogCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZS5oCShyZXZpc2lvbiAyNTc3MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSB7
CiAgICAgRE9NQ2FjaGUgPSAxIDw8IDE1LAogICAgIERldmljZUlkSGFzaFNhbHQgPSAxIDw8IDE2
LAogICAgIEFkQ2xpY2tBdHRyaWJ1dGlvbnMgPSAxIDw8IDE3LAorI2lmIEhBVkUoQ0ZORVRXT1JL
X0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgQWx0ZXJuYXRpdmVTZXJ2aWNlcyA9IDEgPDwgMTgs
CisjZW5kaWYKIH07CiAKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0MSw2ICs2NDEsMTAgQEAg
TmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVucwogICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAgICAgfQogCisjaWYgSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VS
VklDRSkKKyAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5hbHRlcm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnkgPSBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpOworICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5hbHRl
cm5hdGl2ZVNlcnZpY2VEaXJlY3RvcnksIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmFsdGVybmF0aXZlU2VydmljZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSk7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3Rv
cmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudDsKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRh
U3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2hvdWxkSW5jbHVkZUxvY2FsaG9zdDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhUmVjb3JkLm1tCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVNl
YXJjCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MiOwogTlNT
dHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscyA9IEAiX1dLV2Vic2l0
ZURhdGFUeXBlQ3JlZGVudGlhbHMiOwogTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5
cGVBZENsaWNrQXR0cmlidXRpb25zID0gQCJfV0tXZWJzaXRlRGF0YVR5cGVBZENsaWNrQXR0cmli
dXRpb25zIjsKK05TU3RyaW5nICogY29uc3QgX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVT
ZXJ2aWNlcyA9IEAiX1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlcyI7CiAKICNp
ZiBQTEFURk9STShNQUMpCiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJ
bkRhdGEgPSBAIl9XS1dlYnNpdGVEYXRhVHlwZVBsdWdJbkRhdGEiOwpAQCAtMTAzLDYgKzEwNCw4
IEBAIHN0YXRpYyBOU1N0cmluZyAqZGF0YVR5cGVzVG9TdHJpbmcoTlNTZXQKICAgICAgICAgW2Fy
cmF5IGFkZE9iamVjdDpAIkNyZWRlbnRpYWxzIl07CiAgICAgaWYgKFtkYXRhVHlwZXMgY29udGFp
bnNPYmplY3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9uc10pCiAgICAgICAg
IFthcnJheSBhZGRPYmplY3Q6QCJBZCBDbGljayBBdHRyaWJ1dGlvbnMiXTsKKyAgICBpZiAoW2Rh
dGFUeXBlcyBjb250YWluc09iamVjdDpfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZp
Y2VzXSkKKyAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIkFsdGVybmF0aXZlIFNlcnZpY2VzIl07
CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwgIl07CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCShyZXZpc2lvbiAyNTc3MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEwIEBAIHN0YXRpYyBpbmxpbmUg
T3B0aW9uYWw8V2Vic2l0ZURhdGFUeXBlPiAKICAgICAgICAgcmV0dXJuIFdlYnNpdGVEYXRhVHlw
ZTo6Q3JlZGVudGlhbHM7CiAgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRvU3RyaW5n
Ol9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnNdKQogICAgICAgICByZXR1cm4g
V2Vic2l0ZURhdGFUeXBlOjpBZENsaWNrQXR0cmlidXRpb25zOworI2lmIEhBVkUoQ0ZORVRXT1JL
X0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgaWYgKFt3ZWJzaXRlRGF0YVR5cGUgaXNFcXVhbFRv
U3RyaW5nOl9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdKQorICAgICAgICBy
ZXR1cm4gV2Vic2l0ZURhdGFUeXBlOjpBbHRlcm5hdGl2ZVNlcnZpY2VzOworI2VuZGlmCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIApAQCAtMTMzLDYgKzEzNywxMCBAQCBzdGF0aWMgaW5s
aW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlw
ZXMgYWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxzXTsKICAgICBpZiAod2Vi
c2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkFkQ2xpY2tBdHRyaWJ1dGlv
bnMpKQogICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVBZENsaWNrQXR0cmlidXRpb25zXTsKKyNpZiBIQVZFKENGTkVUV09SS19BTFRFUk5BVElW
RV9TRVJWSUNFKQorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcykpCisgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMg
YWRkT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0aXZlU2VydmljZXNdOworI2VuZGlm
CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFS
ZWNvcmRQcml2YXRlLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVE
YXQKIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZVJlc291cmNl
TG9hZFN0YXRpc3RpY3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7
CiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFs
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIFdLX0VYVEVSTiBO
U1N0cmluZyAqIGNvbnN0IF9XS1dlYnNpdGVEYXRhVHlwZUFkQ2xpY2tBdHRyaWJ1dGlvbnMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitXS19FWFRFUk4gTlNTdHJp
bmcgKiBjb25zdCBfV0tXZWJzaXRlRGF0YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIAogI2lmICFU
QVJHRVRfT1NfSVBIT05FCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHJldmlzaW9uIDI1NzcyMSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIxOSw5ICsyMTksMTYgQEAgKyAoTlNTZXQ8TlNTdHJpbmcgKj4g
KilfYWxsV2Vic2l0ZURhdGFUeQogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OwogICAgIHN0YXRpYyBOU1NldCAqYWxsV2Vic2l0ZURhdGFUeXBlczsKICAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF4gewotICAgICAgICBhdXRvICpwcml2YXRlVHlwZXMgPSBAW19XS1dl
YnNpdGVEYXRhVHlwZUhTVFNDYWNoZSwgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzLCBfV0tX
ZWJzaXRlRGF0YVR5cGVTZWFyY2hGaWVsZFJlY2VudFNlYXJjaGVzLCBfV0tXZWJzaXRlRGF0YVR5
cGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCBfV0tXZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywg
X1dLV2Vic2l0ZURhdGFUeXBlQWRDbGlja0F0dHJpYnV0aW9ucworICAgICAgICBhdXRvICpwcml2
YXRlVHlwZXMgPSBAWworICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlSFNUU0NhY2hlLAor
ICAgICAgICAgICAgX1dLV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzLAorICAgICAgICAgICAgX1dL
V2Vic2l0ZURhdGFUeXBlU2VhcmNoRmllbGRSZWNlbnRTZWFyY2hlcywKKyAgICAgICAgICAgIF9X
S1dlYnNpdGVEYXRhVHlwZVJlc291cmNlTG9hZFN0YXRpc3RpY3MsCisgICAgICAgICAgICBfV0tX
ZWJzaXRlRGF0YVR5cGVDcmVkZW50aWFscywKKyAgICAgICAgICAgIF9XS1dlYnNpdGVEYXRhVHlw
ZUFkQ2xpY2tBdHRyaWJ1dGlvbnMsCisgICAgICAgICAgICBfV0tXZWJzaXRlRGF0YVR5cGVBbHRl
cm5hdGl2ZVNlcnZpY2VzCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKLSAgICAgICAgLCBfV0tXZWJz
aXRlRGF0YVR5cGVQbHVnSW5EYXRhCisgICAgICAgICAgICAsIF9XS1dlYnNpdGVEYXRhVHlwZVBs
dWdJbkRhdGEKICNlbmRpZgogICAgICAgICBdOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU3NzIxKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEw
LjEzKSwgaW9zKDExLgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBh
bGxvd3NTZXJ2ZXJQcmVjb25uZWN0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29w
eSkgTlNVUkwgKmFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8vIFRlc3Rpbmcg
b25seS4KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNSksIGlvcygxMy4wKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24ubW0JKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjkwLDYgKzI5MCwxOSBAQCAtICh2b2lkKXNldE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3Rvcnk6KE5TCiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkodXJsLnBhdGgpOwogfQogCistIChOU1VSTCAqKWFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdl
RGlyZWN0b3J5Cit7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6X2NvbmZpZ3Vy
YXRpb24tPmFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKSBpc0RpcmVjdG9yeTpZRVNdOwor
fQorCistICh2b2lkKXNldEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5OihOU1VS
TCAqKXVybAoreworICAgIGlmICghX2NvbmZpZ3VyYXRpb24tPmlzUGVyc2lzdGVudCgpKQorICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiQ2Fubm90IHNldCBhbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5IG9uIGEgbm9uLXBlcnNp
c3RlbnQgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uIl07CisgICAgY2hlY2tVUkxB
cmd1bWVudCh1cmwpOworICAgIF9jb25maWd1cmF0aW9uLT5zZXRBbHRlcm5hdGl2ZVNlcnZpY2Vz
RGlyZWN0b3J5KHVybC5wYXRoKTsKK30KKwogLSAoQk9PTClkZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRW5hYmxlZAogewogICAgIHJldHVybiBfY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAJKHJldmlz
aW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhUmVjb3JkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCwxNiBAQCB2b2lk
IFdlYnNpdGVEYXRhUmVjb3JkOjphZGRIU1RTQ2FjaGVIb3N0CiAgICAgSFNUU0NhY2hlSG9zdE5h
bWVzLmFkZChob3N0TmFtZSk7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZEFsdGVy
bmF0aXZlU2VydmljZXNIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3ROYW1lKQoreworI2lmIEhB
VkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0UpCisgICAgdHlwZXMuYWRkKFdlYnNpdGVE
YXRhVHlwZTo6QWx0ZXJuYXRpdmVTZXJ2aWNlcyk7CisgICAgYWx0ZXJuYXRpdmVTZXJ2aWNlc0hv
c3ROYW1lcy5hZGQoaG9zdE5hbWUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaG9zdE5hbWUp
OworI2VuZGlmCit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBob3N0SXNJbkRvbWFpbihTdHJpbmdW
aWV3IGhvc3QsIFN0cmluZ1ZpZXcgZG9tYWluKQogewogICAgIGlmICghaG9zdC5lbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGRvbWFpbikpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmgJKHJldmlzaW9uIDI1
NzcyMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
UmVjb3JkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IFdlYnNpdGVE
YXRhUmVjb3JkIHsKICAgICB2b2lkIGFkZFBsdWdpbkRhdGFIb3N0TmFtZShjb25zdCBTdHJpbmcm
IGhvc3ROYW1lKTsKICNlbmRpZgogICAgIHZvaWQgYWRkSFNUU0NhY2hlSG9zdG5hbWUoY29uc3Qg
U3RyaW5nJiBob3N0TmFtZSk7CisgICAgdm9pZCBhZGRBbHRlcm5hdGl2ZVNlcnZpY2VzSG9zdG5h
bWUoY29uc3QgU3RyaW5nJiBob3N0TmFtZSk7CiAKICAgICBTdHJpbmcgZGlzcGxheU5hbWU7CiAg
ICAgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gdHlwZXM7CkBAIC03MCw2ICs3MSw3IEBAIHN0
cnVjdCBXZWJzaXRlRGF0YVJlY29yZCB7CiAgICAgSGFzaFNldDxTdHJpbmc+IHBsdWdpbkRhdGFI
b3N0TmFtZXM7CiAjZW5kaWYKICAgICBIYXNoU2V0PFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVz
OworICAgIEhhc2hTZXQ8U3RyaW5nPiBhbHRlcm5hdGl2ZVNlcnZpY2VzSG9zdE5hbWVzOwogCiAg
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7
CiAgICAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCShyZXZpc2lvbiAyNTc3MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYg
KzIxNyw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWUKICAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KHJl
c29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1fY29u
ZmlndXJhdGlvbi0+d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25m
aWd1cmF0aW9uLT5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpLmlzRW1wdHkoKSkKICAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKG1f
Y29uZmlndXJhdGlvbi0+aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkpOworICAgIGlmICgh
bV9jb25maWd1cmF0aW9uLT5hbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkuaXNFbXB0eSgp
KQorICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+c2V0QWx0ZXJuYXRpdmVTZXJ2aWNl
c0RpcmVjdG9yeShyZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4
dGVuc2lvbihtX2NvbmZpZ3VyYXRpb24tPmFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKSkp
OwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJl
Y3RvcnkoKS5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLT5zZXRE
ZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkocmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24obV9jb25maWd1cmF0aW9uLT5kZXZpY2VJZEhh
c2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKSkpOwogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKS5pc0VtcHR5KCkpCkBAIC0yMjI0LDYgKzIyMjYsMTIgQEAg
V1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZAogICAgIHJldHVybiBXVEY6
OlN0cmluZygpOwogfQogCitXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QWx0
ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4K
KyAgICByZXR1cm4gV1RGOjpTdHJpbmcoKTsKK30KKwogV1RGOjpTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50LgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMjU3NzIxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgcmVzb2x2ZWRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2ZWRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7
IH0KICAgICBjb25zdCBTdHJpbmcmIHJlc29sdmVkTmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPm5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpOyB9CisgICAgY29uc3QgU3RyaW5nJiByZXNvbHZlZEFsdGVybmF0aXZlU2VydmljZXNTdG9y
YWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24tPmFs
dGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2
ZWRNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgcmVzb2x2
ZWRNZWRpYUtleXNEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi0+bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBy
ZXNvbHZlZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24tPndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7IH0KQEAgLTI2MSw2ICsyNjIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0QWx0ZXJuYXRp
dmVTZXJ2aWNlc0RpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICNpZiBVU0UoR0xJQikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhCiAgICAgICAgIHNldEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSk7CiAgICAgICAgIHNldENhY2hlU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkpOwogICAgICAgICBzZXROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpKTsKKyAgICAgICAgc2V0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0QWx0ZXJuYXRpdmVTZXJ2aWNlc0RpcmVjdG9yeSgpKTsKICAgICAgICAg
c2V0TWVkaWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNo
ZURpcmVjdG9yeSgpKTsKICAgICAgICAgc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAg
ICAgICBzZXRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5KCkpOwpAQCAtNzEs
NiArNzIsNyBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpCiAjZW5k
aWYKICAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPm1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb3B5LT5tX2FsdGVybmF0aXZl
U2VydmljZXNEaXJlY3RvcnkgPSB0aGlzLT5tX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3Rvcnk7
CiAgICAgY29weS0+bV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5t
X2RldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSB0aGlzLT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSA9
IHRoaXMtPm1famF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gV1RGTW92ZShkaXJlY3RvcnkpOyB9CiAgICAgCisgICAgY29uc3QgU3RyaW5nJiBhbHRlcm5h
dGl2ZVNlcnZpY2VzRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRlcm5hdGl2ZVNlcnZp
Y2VzRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRBbHRlcm5hdGl2ZVNlcnZpY2VzRGlyZWN0b3J5
KFN0cmluZyYmIGRpcmVjdG9yeSkgeyBtX2FsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkgPSBX
VEZNb3ZlKGRpcmVjdG9yeSk7IH0KKwogICAgIGNvbnN0IFN0cmluZyYgamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeShTdHJpbmcmJiBkaXJlY3RvcnkpIHsgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeSA9IFdURk1vdmUoZGlyZWN0b3J5KTsgfQogICAgIApAQCAtMTcxLDYgKzE3NCw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgU3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFN0cmluZyBtX21lZGlh
S2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgU3RyaW5nIG1fYWx0ZXJuYXRpdmVTZXJ2aWNlc0Rp
cmVjdG9yeTsKICAgICBTdHJpbmcgbV9kZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3Rvcnk7
CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBTdHJp
bmcgbV9qYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI1NzcyMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQ0LDExICsxNDQsMTggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgIGlmICghbmV0d29ya0NhY2hlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0FMVEVSTkFUSVZFX1NFUlZJQ0Up
CisgICAgU3RyaW5nIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnkgPSByZXNvbHZl
ZEFsdGVybmF0aXZlU2VydmljZXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGU7CisgICAgaWYgKCFhbHRlcm5hdGl2ZVNlcnZpY2VTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRl
RGlyZWN0b3J5KGFsdGVybmF0aXZlU2VydmljZVN0b3JhZ2VEaXJlY3RvcnksIGFsdGVybmF0aXZl
U2VydmljZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOworI2VuZGlmCisKICAgICBi
b29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBpc1Nh
ZmFyaTsKICAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgPSBbZGVmYXVsdHMg
Ym9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkludGVybmFsRGVidWclQCIs
IFdlYlByZWZlcmVuY2VzS2V5Ojppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkS2V5KCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOwogICAgIAogICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMg
PSB7CisgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgICAgIG1fc2Vzc2lvbklELAogICAgICAgICBj
b25maWd1cmF0aW9uKCkuYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCksCiAgICAgICAgIGNvbmZp
Z3VyYXRpb24oKS5hbGxvd3NDZWxsdWxhckFjY2VzcygpID8gQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6
OlllcyA6IEFsbG93c0NlbGx1bGFyQWNjZXNzOjpObywKQEAgLTE1OSw2ICsxNjYsMTAgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdAogICAgICAgICBTZWNvbmRzIHsg
W2RlZmF1bHRzIGludGVnZXJGb3JLZXk6V2ViS2l0TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lN
aWxsaXNlY29uZHNEZWZhdWx0c0tleV0gLyAxMDAwLiB9LAogICAgICAgICBXVEZNb3ZlKGh0dHBQ
cm94eSksCiAgICAgICAgIFdURk1vdmUoaHR0cHNQcm94eSksCisjaWYgSEFWRShDRk5FVFdPUktf
QUxURVJOQVRJVkVfU0VSVklDRSkKKyAgICAgICAgV1RGTW92ZShhbHRlcm5hdGl2ZVNlcnZpY2VT
dG9yYWdlRGlyZWN0b3J5KSwKKyAgICAgICAgV1RGTW92ZShhbHRlcm5hdGl2ZVNlcnZpY2VTdG9y
YWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKKyNlbmRpZgogICAgICAgICBXVEZNb3ZlKHJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlIYW5kbGUpLAogICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCgpLApAQCAtMjc3LDYgKzI4OCwxMSBAQCBXVEY6OlN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TmV0CiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKIH0KIAorV1RGOjpTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFsdGVybmF0aXZlU2VydmljZXNEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiQWx0ZXJuYXRp
dmVTZXJ2aWNlcyIpOworfQorCiBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIHRlbXBEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1Nzc4MSkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTAzICBK
aXRlbiBNZWh0YSAgPGptZWh0YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgSFRUUCBBbHRl
cm5hdGl2ZSBTZXJ2aWNlcyBTdG9yYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDgzODcKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlz
dGVuc2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW06CisgICAgICAgIChjaGVja1VudGlsRW50cnlGb3Vu
ZCk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wMy0wMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDaGVjayBmb3IgbmF2aWdhdGlvbiB0byBh
cHAtYm91bmQgZG9tYWluIGR1cmluZyBzY3JpcHQgZXZhbHVhdGlvbgpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHJldmlzaW9uIDI1NzcyMSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lmg+CkBAIC01ODMsNiArNTg0LDc0IEBAIFRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3JpZXMKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwogfQogCisjaWYgSEFWRShDRk5FVFdP
UktfQUxURVJOQVRJVkVfU0VSVklDRSkKKworc3RhdGljIHZvaWQgY2hlY2tVbnRpbEVudHJ5Rm91
bmQoV0tXZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUsIHZvaWQoXmNvbXBsZXRpb25IYW5kbGVy
KShOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKikpCit7CisgICAgW2RhdGFTdG9yZSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0
YVR5cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tX
ZWJzaXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICBpZiAocmVjb3Jkcy5jb3Vu
dCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlY29yZHMpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjaGVja1VudGlsRW50cnlGb3VuZChkYXRhU3RvcmUsIGNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICB9XTsKK30KKworLy8gVGhpcyB0ZXN0IG5lZWRzIHRvIHJlbWFpbiBkaXNh
YmxlZCB1bnRpbCByZGFyOi8vcHJvYmxlbS81OTY0NDY4MyBpcyByZXNvbHZlZC4KK1RFU1QoV2Vi
S2l0LCBESVNBQkxFRF9BbHRlcm5hdGl2ZVNlcnZpY2UpCit7CisgICAgdXNpbmcgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEk7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwg
eyB7eyAiYWx0LXN2YyIsICJoMy0yND1cIjo0NDNcIjsgbWE9MzYwMDsgcGVyc2lzdD0xIiB9fSwg
IjxodG1sPnRlc3QgY29udGVudDwvaHRtbD4iIH0gfQorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CisKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiQWx0ZXJuYXRpdmVTZXJ2aWNlVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgTlNTdHJp
bmcgKnBhdGggPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJBbHRlcm5h
dGl2ZVNlcnZpY2Uuc3FsaXRlIl0ucGF0aDsKKyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAg
ICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXTsKKyAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOiZlcnJv
cl07CisKKyAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqZGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSBhdXRvcmVsZWFzZV07CisgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2
ZVNlcnZpY2VzU3RvcmFnZURpcmVjdG9yeSA9IHRlbXBEaXI7CisgICAgV0tXZWJzaXRlRGF0YVN0
b3JlICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENv
bmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOworCisgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIGZldGNoRGF0YVJlY29y
ZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0Ol9XS1dlYnNpdGVEYXRhVHlwZUFsdGVybmF0
aXZlU2VydmljZXNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAwdSk7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisK
KyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICp3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlOworICAgIFdLV2Vi
VmlldyAqd2ViVmlldyA9IFtbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uXSBh
dXRvcmVsZWFzZV07CisgICAgVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW1tU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVu
dGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfTsKKyAgICAKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBj
aGVja1VudGlsRW50cnlGb3VuZChkYXRhU3RvcmUsIF4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVj
b3JkICo+ICpyZWNvcmRzKSB7CisgICAgICAgIEVYUEVDVF9FUShyZWNvcmRzLmNvdW50LCAxdSk7
CisgICAgICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W05TU2V0IHNldFdpdGhPYmpl
Y3Q6X1dLV2Vic2l0ZURhdGFUeXBlQWx0ZXJuYXRpdmVTZXJ2aWNlc10gZm9yRGF0YVJlY29yZHM6
cmVjb3JkcyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAgICAgW2RhdGFTdG9yZSBmZXRj
aERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpfV0tXZWJzaXRlRGF0YVR5
cGVBbHRlcm5hdGl2ZVNlcnZpY2VzXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJz
aXRlRGF0YVJlY29yZCAqPiAqcmVjb3JkcykgeworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShy
ZWNvcmRzLmNvdW50LCAwdSk7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAg
ICAgICB9XTsKKyAgICAgICAgfV07CisgICAgfSk7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAg
ICAKKyAgICBFWFBFQ1RfVFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpwYXRoXSk7
CisgICAgLy8gV2UgY2FuJ3QgdW5saW5rIHRoZSBzcWxpdGUgZmlsZSBiZWNhdXNlIGl0IGlzIGd1
YXJkZWQgYnkgdGhlIG5ldHdvcmsgcHJvY2VzcyByaWdodCBub3cuCisgICAgLy8gV2UgZGVsZXRl
IGl0IGJlZm9yZSBydW5uaW5nIHRoaXMgdGVzdCB0aGUgbmV4dCB0aW1lLgorfQorCisjZW5kaWYg
Ly8gSEFWRShDRk5FVFdPUktfQUxURVJOQVRJVkVfU0VSVklDRSkKKwogI2VuZGlmIC8vIEhBVkUo
TkVUV09SS19GUkFNRVdPUkspCiAKIC8vIEZJWE1FOiBpbnZlc3RpZ2F0ZSB3aHkgdGhpcyB0ZXN0
IHRpbWVzIG91dCBvbiBIaWdoIFNpZXJyYQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>